Преглед на файлове

* first code check-in (support for EXI stream)

daniel_peintner преди 15 години
ревизия
2f65f79faf

+ 936 - 0
.cproject

@@ -0,0 +1,936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+<storageModule moduleId="org.eclipse.cdt.core.settings">
+<cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.debug.181718907">
+<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.debug.181718907" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<configuration artifactName="OpenV2G" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.debug.181718907" name="Debug" parent="cdt.managedbuild.config.gnu.mingw.exe.debug">
+<folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.debug.181718907." name="/" resourcePath="">
+<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.exe.debug.876485680" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.exe.debug">
+<targetPlatform id="cdt.managedbuild.target.gnu.platform.mingw.exe.debug.457244346" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.mingw.exe.debug"/>
+<builder buildPath="${workspace_loc:/OpenV2G/Debug}" id="cdt.managedbuild.tool.gnu.builder.mingw.base.312232103" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/>
+<tool id="cdt.managedbuild.tool.gnu.assembler.mingw.exe.debug.1400631881" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.exe.debug">
+<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1072508302" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.1769540501" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/>
+<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug.1144566927" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug">
+<option id="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level.1036013605" name="Optimization Level" superClass="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+<option id="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level.1326060222" name="Debug Level" superClass="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.113647340" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug">
+<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.mingw.exe.debug.option.optimization.level.1898653479" name="Optimization Level" superClass="gnu.c.compiler.mingw.exe.debug.option.optimization.level" valueType="enumerated"/>
+<option id="gnu.c.compiler.mingw.exe.debug.option.debugging.level.294845555" name="Debug Level" superClass="gnu.c.compiler.mingw.exe.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+<option id="gnu.c.compiler.option.include.paths.773068816" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+<listOptionValue builtIn="false" value="&quot;${workspace_loc:/OpenV2G/src/codec}&quot;"/>
+<listOptionValue builtIn="false" value="&quot;${workspace_loc:/OpenV2G/src/service}&quot;"/>
+<listOptionValue builtIn="false" value="&quot;${workspace_loc:/OpenV2G/src/test}&quot;"/>
+</option>
+<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.67299528" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.debug.867726048" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.debug">
+<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.343385996" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+</inputType>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.debug.895012244" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.debug"/>
+</toolChain>
+</folderInfo>
+<sourceEntries>
+<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="src/codec"/>
+<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="src/test"/>
+<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="src/service"/>
+</sourceEntries>
+</configuration>
+</storageModule>
+<storageModule moduleId="scannerConfiguration">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.681614450;cdt.managedbuild.config.gnu.mingw.exe.release.681614450.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.150928873;cdt.managedbuild.tool.gnu.c.compiler.input.2117635578">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.181718907;cdt.managedbuild.config.gnu.mingw.exe.debug.181718907.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.113647340;cdt.managedbuild.tool.gnu.c.compiler.input.67299528">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.1536681007;cdt.managedbuild.config.gnu.mingw.exe.debug.1536681007.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.1257453970;cdt.managedbuild.tool.gnu.c.compiler.input.1901507773">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.1091708379;cdt.managedbuild.config.gnu.mingw.exe.release.1091708379.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.1844784508;cdt.managedbuild.tool.gnu.c.compiler.input.1276057383">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+</cconfiguration>
+<cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.release.681614450">
+<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.release.681614450" moduleId="org.eclipse.cdt.core.settings" name="Release">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<configuration artifactName="OpenV2G" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.release.681614450" name="Release" parent="cdt.managedbuild.config.gnu.mingw.exe.release">
+<folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.release.681614450." name="/" resourcePath="">
+<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.exe.release.2035335846" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.exe.release">
+<targetPlatform id="cdt.managedbuild.target.gnu.platform.mingw.exe.release.123106486" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.mingw.exe.release"/>
+<builder buildPath="${workspace_loc:/OpenV2G/Release}" id="cdt.managedbuild.tool.gnu.builder.mingw.base.660697414" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/>
+<tool id="cdt.managedbuild.tool.gnu.assembler.mingw.exe.release.495179675" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.exe.release">
+<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1609271173" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.1798958359" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/>
+<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release.1816121644" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release">
+<option id="gnu.cpp.compiler.mingw.exe.release.option.optimization.level.1885785748" name="Optimization Level" superClass="gnu.cpp.compiler.mingw.exe.release.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+<option id="gnu.cpp.compiler.mingw.exe.release.option.debugging.level.1323278871" name="Debug Level" superClass="gnu.cpp.compiler.mingw.exe.release.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.150928873" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release">
+<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.mingw.exe.release.option.optimization.level.939780170" name="Optimization Level" superClass="gnu.c.compiler.mingw.exe.release.option.optimization.level" valueType="enumerated"/>
+<option id="gnu.c.compiler.mingw.exe.release.option.debugging.level.8158262" name="Debug Level" superClass="gnu.c.compiler.mingw.exe.release.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
+<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.2117635578" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.release.891155820" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.release">
+<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.1593270687" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+</inputType>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.release.1711492373" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.release"/>
+</toolChain>
+</folderInfo>
+</configuration>
+</storageModule>
+<storageModule moduleId="scannerConfiguration">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.681614450;cdt.managedbuild.config.gnu.mingw.exe.release.681614450.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.150928873;cdt.managedbuild.tool.gnu.c.compiler.input.2117635578">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.181718907;cdt.managedbuild.config.gnu.mingw.exe.debug.181718907.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.113647340;cdt.managedbuild.tool.gnu.c.compiler.input.67299528">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.1536681007;cdt.managedbuild.config.gnu.mingw.exe.debug.1536681007.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.1257453970;cdt.managedbuild.tool.gnu.c.compiler.input.1901507773">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.1091708379;cdt.managedbuild.config.gnu.mingw.exe.release.1091708379.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.1844784508;cdt.managedbuild.tool.gnu.c.compiler.input.1276057383">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+</cconfiguration>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<project id="OpenV2G.cdt.managedbuild.target.gnu.mingw.exe.1420366407" name="Executable" projectType="cdt.managedbuild.target.gnu.mingw.exe"/>
+</storageModule>
+</cproject>

+ 69 - 0
.project

@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>OpenV2G</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+			<triggers>clean,full,incremental,</triggers>
+			<arguments>
+				<dictionary>
+					<key>?name?</key>
+					<value></value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.append_environment</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildArguments</key>
+					<value></value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildCommand</key>
+					<value>make</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.buildLocation</key>
+					<value>${workspace_loc:/OpenV2G/Debug}</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.contents</key>
+					<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+					<value>false</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.enableFullBuild</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.stopOnError</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+					<value>true</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+	</natures>
+</projectDescription>

+ 165 - 0
LICENSE.txt

@@ -0,0 +1,165 @@
+                   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions.
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version.
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser 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
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.

+ 21 - 0
data/test/sessionSetupReq.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ns3:V2G_Message xmlns:ns1="urn:iso:15118:2:2010:MsgBody"
+ xmlns:ns2="urn:iso:15118:2:2010:MsgDataTypes"
+ xmlns:ns3="urn:iso:15118:2:2010:MsgDef"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:iso:15118:2:2010:MsgDef V2G_CI_MsgDef.xsd">
+    <ns3:Header>
+        <ns3:SessionInformation>
+            <ns2:SessionID>3031323334353637</ns2:SessionID>
+            <ns2:ProtocolVersion>1</ns2:ProtocolVersion>
+        </ns3:SessionInformation>
+    </ns3:Header>
+    <ns3:Body>
+        <ns1:SessionSetupReq>
+            <ns1:PEVStatus>
+                <ns2:ConnectorLocked>0</ns2:ConnectorLocked>
+                <ns2:ChargerStandby>1</ns2:ChargerStandby>
+            </ns1:PEVStatus>
+        </ns1:SessionSetupReq>
+    </ns3:Body>
+</ns3:V2G_Message>

+ 1 - 0
data/test/sessionSetupReq.xml_SCHEMA.exi

@@ -0,0 +1 @@
+�˜A�‰‘™¡©±ºcF€

+ 251 - 0
src/codec/BitDecoderChannel.c

@@ -0,0 +1,251 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ * Bit decoding functionalities
+ *
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+
+#include "BitDecoderChannel.h"
+#include "BitInputStream.h"
+#include "EXITypes.h"
+
+#ifndef BIT_DECODER_CHANNEL_C
+#define BIT_DECODER_CHANNEL_C
+
+int decode(bitstream_t* stream, uint8_t* b) {
+	return readBits(stream, 8, b);
+}
+
+int decodeBoolean(bitstream_t* stream, int* b) {
+	uint8_t ub;
+	int errn = readBits(stream, 1, &ub);
+	*b = (ub == 0) ? 0 : 1;
+	return errn;
+}
+
+int decodeNBitUnsignedInteger(bitstream_t* stream, size_t nbits, uint8_t* b) {
+	if (nbits == 0) {
+		*b = 0;
+		return 0;
+	} else {
+		return readBits(stream, nbits, b);
+	}
+}
+
+int decodeUnsignedInteger32(bitstream_t* stream, uint32_t* uint32) {
+	/* 0XXXXXXX ... 1XXXXXXX 1XXXXXXX */
+	unsigned int mShift = 0;
+	int errn = 0;
+	uint8_t b;
+	*uint32 = 0;
+
+	do {
+		/* 1. Read the next octet */
+		errno = decode(stream, &b);
+		/* 2. Multiply the value of the unsigned number represented by the 7
+		 * least significant
+		 * bits of the octet by the current multiplier and add the result to
+		 * the current value */
+		*uint32 += (b & 127) << mShift;
+		/* 3. Multiply the multiplier by 128 */
+		mShift += 7;
+		/* 4. If the most significant bit of the octet was 1, go back to step 1 */
+	} while (errn >= 0 && (b >> 7) == 1);
+
+	return errno;
+}
+
+/**
+ * Decode an arbitrary precision non negative integer using a sequence of
+ * octets. The most significant bit of the last octet is set to zero to
+ * indicate sequence termination. Only seven bits per octet are used to
+ * store the integer's value.
+ */
+int decodeUnsignedInteger64(bitstream_t* stream, uint64_t* uint64) {
+	unsigned int mShift = 0;
+	int errn = 0;
+	uint8_t b;
+	*uint64 = 0L;
+
+	do {
+		errno = decode(stream, &b);
+		*uint64 += ((uint64_t) (b & 127)) << mShift;
+		mShift += 7;
+	} while (errn >= 0 && (b >> 7) == 1);
+
+	return errn;
+}
+
+/**
+ * Decode an arbitrary precision integer using a sign bit followed by a
+ * sequence of octets. The most significant bit of the last octet is set to
+ * zero to indicate sequence termination. Only seven bits per octet are used
+ * to store the integer's value.
+ */
+int decodeInteger32(bitstream_t* stream, int32_t* int32) {
+	int b;
+	int errn = decodeBoolean(stream, &b);
+
+	if (errn < 0) {
+		return errn;
+	}
+
+	if (b) {
+		/* For negative values, the Unsigned Integer holds the
+		 * magnitude of the value minus 1 */
+		errn = decodeUnsignedInteger32(stream, int32);
+		*int32 = -(*int32 + 1);
+		return errn;
+	} else {
+		/* positive */
+		return decodeUnsignedInteger32(stream, int32);
+	}
+}
+
+/**
+ * Decode an arbitrary precision integer using a sign bit followed by a
+ * sequence of octets. The most significant bit of the last octet is set to
+ * zero to indicate sequence termination. Only seven bits per octet are used
+ * to store the integer's value.
+ */
+int decodeInteger64(bitstream_t* stream, int64_t* int64) {
+	int b;
+	int errn = decodeBoolean(stream, &b);
+
+	if (errn < 0) {
+		return errn;
+	}
+
+	if (b) {
+		/* For negative values, the Unsigned Integer holds the
+		 * magnitude of the value minus 1 */
+		errn = decodeUnsignedInteger64(stream, int64);
+		*int64 = -(*int64 + 1);
+		return errn;
+	} else {
+		/* positive */
+		return decodeUnsignedInteger64(stream, int64);
+	}
+}
+
+/**
+ * Decode a Float datatype as two consecutive Integers.
+ * The first Integer represents the mantissa of the floating point
+ * number and the second Integer represents the base-10 exponent
+ * of the floating point number.
+ */
+int decodeFloat(bitstream_t* stream, float_me_t* f) {
+	int errn = decodeInteger64(stream, &f->mantissa);
+	if (errn < 0) {
+		return errn;
+	}
+	return decodeInteger32(stream, &f->exponent);
+}
+
+/**
+ * Decode a sequence of characters for a given length.
+ */
+int decodeStringOnly(bitstream_t* stream, size_t len, string_ucs_t* s) {
+	decodeCharacters(stream, len, s->codepoints);
+	s->len = len;
+	return 0;
+}
+
+/**
+ * Decode a length prefixed sequence of characters.
+ */
+int decodeString(bitstream_t* stream, string_ucs_t* s) {
+	int errn = decodeUnsignedInteger32(stream, &s->len);
+	if (errn < 0) {
+		return errn;
+	}
+	return decodeStringOnly(stream, s->len, s);
+}
+
+int decodeStringValue(bitstream_t* stream, string_ucs_t* s) {
+	int errn = decodeUnsignedInteger32(stream, &s->len);
+	if (errn < 0) {
+		return errn;
+	}
+
+	switch (s->len) {
+	case 0:
+		/* local value partition */
+		printf("[ERROR] String local value partition hit not supported \n");
+		return -2;
+	case 1:
+		/* found in global value partition */
+		printf("[ERROR] String global value partition hit not supported \n");
+		return -3;
+	default:
+		/* not found in global value (and local value) partition
+		 * ==> string literal is encoded as a String with the length
+		 * incremented by two */
+		return decodeStringOnly(stream, ((s->len) - 2), s);
+		/* After encoding the string value, it is added to both the
+		 * associated "local" value string table partition and the global
+		 * value string table partition */
+		/* addValue(context, value); */
+	}
+}
+
+/**
+ * Decode a sequence of characters according to a given length.
+ * Each character is represented by its UCS [ISO/IEC 10646]
+ * code point encoded as an Unsigned Integer
+ */
+int decodeCharacters(bitstream_t* stream, size_t len, uint32_t* chars) {
+	unsigned int i;
+	int errn = 0;
+	for (i = 0; i < len && errn >= 0; i++) {
+		errn = decodeUnsignedInteger32(stream, &chars[i]);
+	}
+
+	return errn;
+}
+
+/**
+ * Decode a binary value as a length-prefixed sequence of octets.
+ */
+int decodeBinary(bitstream_t* stream, bytes_t* bytes) {
+	unsigned int i;
+	int errn = decodeUnsignedInteger32(stream, &bytes->len);
+	if (errn < 0) {
+		return errn;
+	}
+
+	for (i = 0; i < bytes->len && errn >= 0; i++) {
+		errn = decode(stream, &bytes->data[i]);
+	}
+
+	return errn;
+}
+
+#endif
+

+ 117 - 0
src/codec/BitDecoderChannel.h

@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "EXITypes.h"
+
+#ifndef BIT_DECODER_CHANNEL_H
+#define BIT_DECODER_CHANNEL_H
+
+/**
+ * Decode a single boolean value. The value false is represented by the bit
+ * 0, and the value true is represented by the bit 1.
+ */
+int decodeBoolean(bitstream_t* stream, int* b);
+
+/**
+ * Decodes and returns an n-bit unsigned integer.
+ */
+int decodeNBitUnsignedInteger(bitstream_t* stream, size_t nbits, uint8_t* uint8 );
+
+/**
+ * Decode an arbitrary precision non negative integer using a sequence of
+ * octets. The most significant bit of the last octet is set to zero to
+ * indicate sequence termination. Only seven bits per octet are used to
+ * store the integer's value.
+ */
+int decodeUnsignedInteger32(bitstream_t* stream, uint32_t* uint32);
+
+/**
+ * Decode an arbitrary precision non negative integer using a sequence of
+ * octets. The most significant bit of the last octet is set to zero to
+ * indicate sequence termination. Only seven bits per octet are used to
+ * store the integer's value.
+ */
+int decodeUnsignedInteger64(bitstream_t* stream, uint64_t* uint64);
+
+/**
+ * Decode an arbitrary precision integer using a sign bit followed by a
+ * sequence of octets. The most significant bit of the last octet is set to
+ * zero to indicate sequence termination. Only seven bits per octet are used
+ * to store the integer's value.
+ */
+int decodeInteger32(bitstream_t* stream, int32_t* int32);
+
+/**
+ * Decode an arbitrary precision integer using a sign bit followed by a
+ * sequence of octets. The most significant bit of the last octet is set to
+ * zero to indicate sequence termination. Only seven bits per octet are used
+ * to store the integer's value.
+ */
+int decodeInteger64(bitstream_t* stream, int64_t* int64);
+
+/**
+ * Decode a Float datatype as two consecutive Integers.
+ * The first Integer represents the mantissa of the floating point
+ * number and the second Integer represents the base-10 exponent
+ * of the floating point number.
+ */
+int decodeFloat(bitstream_t* stream, float_me_t* f);
+
+/**
+ * Decode a length prefixed sequence of characters.
+ */
+int decodeString(bitstream_t* stream, string_ucs_t* s);
+
+/**
+ * Decode a length prefixed sequence of characters in the sense of string tables.
+ * length == 0, local value partition hit
+ * length == 1, global value partition hit
+ * --> string literal is encoded as a String with the length incremented by two
+ */
+int decodeStringValue(bitstream_t* stream, string_ucs_t* s);
+
+
+/**
+ * Decode a sequence of characters according to a given length.
+ */
+int decodeCharacters(bitstream_t* stream, size_t len, uint32_t* chars);
+
+/**
+ * Decode a binary value as a length-prefixed sequence of octets.
+ */
+int decodeBinary(bitstream_t* stream, bytes_t* bytes);
+
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+

+ 298 - 0
src/codec/BitEncoderChannel.c

@@ -0,0 +1,298 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+
+#include "BitEncoderChannel.h"
+#include "BitOutputStream.h"
+#include "EXITypes.h"
+
+#ifndef BIT_ENCODER_CHANNEL_C
+#define BIT_ENCODER_CHANNEL_C
+
+/**
+ * Returns the least number of 7 bit-blocks that is needed to represent the
+ * int <param>n</param>. Returns 1 if <param>n</param> is 0.
+ *
+ * @param n
+ *            integer value
+ *
+ */
+uint8_t numberOf7BitBlocksToRepresent(int n) {
+	/* assert (n >= 0); */
+
+	/* 7 bits */
+	if (n < 128) {
+		return 1;
+	}
+	/* 14 bits */
+	else if (n < 16384) {
+		return 2;
+	}
+	/* 21 bits */
+	else if (n < 2097152) {
+		return 3;
+	}
+	/* 28 bits */
+	else if (n < 268435456) {
+		return 4;
+	}
+	/* 35 bits */
+	else {
+		/* int, 32 bits */
+		return 5;
+	}
+}
+
+
+int encode(bitstream_t* stream, uint8_t b) {
+	return writeBits(stream, b, 8);
+}
+
+/**
+ * Encode a single boolean value. A false value is encoded as bit 0 and true
+ * value is encode as bit 1.
+ */
+int encodeBoolean(bitstream_t* stream, int b) {
+	uint8_t val = b ? 1 : 0;
+	return writeBits(stream, val, 1);
+}
+
+
+/**
+ * Encode n-bit unsigned integer. The n least significant bits of parameter
+ * b starting with the most significant, i.e. from left to right.
+ */
+int encodeNBitUnsignedInteger(bitstream_t* stream, uint8_t val, size_t nbits)  {
+	return writeBits(stream, val, nbits);
+}
+
+
+
+
+/**
+ * Encode an arbitrary precision non negative integer using a sequence of
+ * octets. The most significant bit of the last octet is set to zero to
+ * indicate sequence termination. Only seven bits per octet are used to
+ * store the integer's value.
+ */
+int encodeUnsignedInteger32(bitstream_t* stream, uint32_t n) {
+	int errn = 0;
+	if (n < 128) {
+		/* write byte as is */
+		errn = encode(stream, (uint8_t)n);
+	} else {
+		uint8_t n7BitBlocks = numberOf7BitBlocksToRepresent(n);
+
+		switch (n7BitBlocks) {
+		case 5:
+			errn = encode(stream, (uint8_t)(128 | n));
+			n = n >> 7;
+			if (errn < 0) {
+				break;
+			}
+		case 4:
+			errn = encode(stream, (uint8_t)(128 | n));
+			n = n >> 7;
+			if (errn < 0) {
+				break;
+			}
+		case 3:
+			errn = encode(stream, (uint8_t)(128 | n));
+			n = n >> 7;
+			if (errn < 0) {
+				break;
+			}
+		case 2:
+			errn = encode(stream, (uint8_t)(128 | n));
+			n = n >> 7;
+			if (errn < 0) {
+				break;
+			}
+		case 1:
+			/* 0 .. 7 (last byte) */
+			errn = encode(stream, (uint8_t)(0 | n));
+		}
+	}
+
+	return errn;
+}
+
+/**
+ * Encode an arbitrary precision non negative integer using a sequence of
+ * octets. The most significant bit of the last octet is set to zero to
+ * indicate sequence termination. Only seven bits per octet are used to
+ * store the integer's value.
+ */
+int encodeUnsignedInteger64(bitstream_t* stream, uint64_t n) {
+	int errn = 0;
+	uint8_t lastEncode = (uint8_t) n;
+	n >>= 7;
+
+	while (n != 0) {
+		errn = encode(stream, lastEncode | 128);
+		if (errn < 0) {
+			return errn;
+		}
+		lastEncode = (uint8_t) n;
+		n >>= 7;
+	}
+
+	return encode(stream, lastEncode);
+}
+
+
+/**
+ * Encode an arbitrary precision integer using a sign bit followed by a
+ * sequence of octets. The most significant bit of the last octet is set to
+ * zero to indicate sequence termination. Only seven bits per octet are used
+ * to store the integer's value.
+ */
+int encodeInteger32(bitstream_t* stream, int32_t n) {
+	int errn;
+	/* signalize sign */
+	if (n < 0) {
+		errn = encodeBoolean(stream, 1);
+		/* For negative values, the Unsigned Integer holds the
+		 * magnitude of the value minus 1 */
+		n = (-n) - 1;
+	} else {
+		errn = encodeBoolean(stream, 0);
+	}
+	if (errn < 0) {
+		return errn;
+	}
+	return encodeUnsignedInteger32(stream, n);
+}
+
+/**
+ * Encode an arbitrary precision integer using a sign bit followed by a
+ * sequence of octets. The most significant bit of the last octet is set to
+ * zero to indicate sequence termination. Only seven bits per octet are used
+ * to store the integer's value.
+ */
+int encodeInteger64(bitstream_t* stream, int64_t n) {
+	int errn;
+	/* signalize sign */
+	if (n < 0) {
+		errn = encodeBoolean(stream, 1);
+		/* For negative values, the Unsigned Integer holds the
+		 * magnitude of the value minus 1 */
+		n = (-n) - 1;
+	} else {
+		errn = encodeBoolean(stream, 0);
+	}
+	if (errn < 0) {
+		return errn;
+	}
+	return encodeUnsignedInteger64(stream, n);
+}
+
+
+/**
+ * The Float datatype representation is two consecutive Integers.
+ * The first Integer represents the mantissa of the floating point
+ * number and the second Integer represents the base-10 exponent
+ * of the floating point number.
+ */
+int encodeFloat(bitstream_t* stream, float_me_t* f) {
+	int errn = encodeInteger64(stream, f->mantissa);
+	if (errn >= 0) {
+		errn = encodeInteger32(stream, f->exponent);
+	}
+	return errn;
+}
+
+
+/**
+ * Encode a length prefixed sequence of characters.
+ */
+int encodeString(bitstream_t* stream, string_ucs_t* string) {
+	int errn = encodeUnsignedInteger32(stream, string->len);
+	if (errn >= 0) {
+		errn = encodeCharacters(stream, string->codepoints, string->len);
+	}
+	return errn;
+}
+
+int encodeStringValue(bitstream_t* stream, string_ucs_t* string) {
+	/* encode string as string table miss */
+	int errn = encodeUnsignedInteger32(stream, string->len+2);
+	if (errn >= 0) {
+		errn = encodeCharacters(stream, string->codepoints, string->len);
+	}
+	return errn;
+}
+
+/**
+ * Encode a sequence of characters according to a given length.
+ * Each character is represented by its UCS [ISO/IEC 10646]
+ * code point encoded as an Unsigned Integer
+ */
+int encodeCharacters(bitstream_t* stream, uint32_t* chars, size_t len) {
+	unsigned int i;
+	int errn = 0;
+	for(i=0; i<len && errn>=0; i++) {
+		errn = encodeUnsignedInteger32(stream, chars[i]);
+	}
+	return errn;
+}
+
+
+/**
+ * Encode a binary value as a length-prefixed sequence of octets.
+ */
+int encodeBinary(bitstream_t* stream, bytes_t* bytes)  {
+	unsigned int i;
+	int errn = encodeUnsignedInteger32(stream, bytes->len);
+
+	for(i=0; i<bytes->len && errn>=0; i++) {
+		errn = encode(stream, bytes->data[i]);
+	}
+	return errn;
+}
+
+/**
+ * Flush underlying bit output stream.
+ */
+int encodeFinish(bitstream_t* stream) {
+	return flush(stream);
+}
+
+
+#endif
+
+
+
+
+
+
+
+
+
+
+
+

+ 133 - 0
src/codec/BitEncoderChannel.h

@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
+#include "EXITypes.h"
+
+#ifndef BIT_ENCODER_CHANNEL_H
+#define BIT_ENCODER_CHANNEL_H
+
+/**
+ * Encode a single boolean value. A false value is encoded as bit 0 and true
+ * value is encode as bit 1.
+ */
+int encodeBoolean(bitstream_t* stream, int b);
+
+
+/**
+ * Encode n-bit unsigned integer. The n least significant bits of parameter
+ * b starting with the most significant, i.e. from left to right.
+ */
+int encodeNBitUnsignedInteger(bitstream_t* stream, uint8_t val, size_t nbits);
+
+
+/**
+ * Encode an arbitrary precision non negative integer using a sequence of
+ * octets. The most significant bit of the last octet is set to zero to
+ * indicate sequence termination. Only seven bits per octet are used to
+ * store the integer's value.
+ */
+int encodeUnsignedInteger32(bitstream_t* stream, uint32_t n);
+
+/**
+ * Encode an arbitrary precision non negative integer using a sequence of
+ * octets. The most significant bit of the last octet is set to zero to
+ * indicate sequence termination. Only seven bits per octet are used to
+ * store the integer's value.
+ */
+int encodeUnsignedInteger64(bitstream_t* stream, uint64_t n);
+
+/**
+ * Encode an arbitrary precision integer using a sign bit followed by a
+ * sequence of octets. The most significant bit of the last octet is set to
+ * zero to indicate sequence termination. Only seven bits per octet are used
+ * to store the integer's value.
+ */
+int encodeInteger32(bitstream_t* stream, int32_t n);
+
+/**
+ * Encode an arbitrary precision integer using a sign bit followed by a
+ * sequence of octets. The most significant bit of the last octet is set to
+ * zero to indicate sequence termination. Only seven bits per octet are used
+ * to store the integer's value.
+ */
+int encodeInteger64(bitstream_t* stream, int64_t n);
+
+/**
+ * Encode a Float datatype as two consecutive Integers.
+ * The first Integer represents the mantissa of the floating point
+ * number and the second Integer represents the base-10 exponent
+ * of the floating point number.
+ */
+int encodeFloat(bitstream_t* stream, float_me_t* f);
+
+
+/**
+ * Encode a length prefixed sequence of characters.
+ */
+int encodeString(bitstream_t* stream, string_ucs_t* string);
+
+/**
+ * Encode a length prefixed sequence of characters in the sense of string tables
+ */
+int encodeStringValue(bitstream_t* stream, string_ucs_t* string);
+
+/**
+ * Encode a sequence of characters according to a given length.
+ * Each character is represented by its UCS [ISO/IEC 10646]
+ * code point encoded as an Unsigned Integer
+ */
+int encodeCharacters(bitstream_t* stream, uint32_t* chars, size_t len);
+
+/**
+ * Encode a binary value as a length-prefixed sequence of octets.
+ */
+int encodeBinary(bitstream_t* stream, bytes_t* bytes);
+
+/**
+ * Flush underlying bit output stream
+ */
+int encodeFinish(bitstream_t* stream);
+
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+
+
+
+
+

+ 100 - 0
src/codec/BitInputStream.c

@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+
+#include "EXITypes.h"
+#include "BitInputStream.h"
+
+#ifndef BIT_INPUT_STREAM_C
+#define BIT_INPUT_STREAM_C
+
+/* internal method to (re)fill buffer */
+int readBuffer(bitstream_t* stream)
+{
+	int errn = 0;
+	if(stream->capacity==0)
+	{
+		if ( (*stream->pos) < stream->size ) {
+			stream->buffer = stream->data[(*stream->pos)++];
+			stream->capacity = BITS_IN_BYTE;
+		} else {
+			errn = -1;
+		}
+	}
+	return errn;
+}
+
+int readBits(bitstream_t* stream, size_t num_bits, uint8_t* b)
+{
+	int errn = readBuffer(stream);
+	if (errn < 0) {
+		return errn;
+	}
+
+	/* read the bits in one step */
+	if(num_bits <= stream->capacity)
+	{
+		stream->capacity -= num_bits;
+		*b = (stream->buffer >> stream->capacity) & (0xff >> (BITS_IN_BYTE - num_bits));
+	}
+	else
+	{
+		/* read bits as much as possible */
+		*b = stream->buffer & (0xff >> (BITS_IN_BYTE - stream->capacity));
+		num_bits -= stream->capacity;
+		stream->capacity = 0;
+
+		/* read whole bytes */
+		while(num_bits >= 8)
+		{
+			errn = readBuffer(stream);
+			if (errn < 0) {
+				return errn;
+			}
+			*b = ((*b) << BITS_IN_BYTE) | stream->buffer;
+			num_bits -= BITS_IN_BYTE;
+			stream->capacity = 0;
+		}
+
+		/* read the spare bits in the buffer */
+		if(num_bits>0)
+		{
+			errn = readBuffer(stream);
+			if (errn < 0) {
+				return errn;
+			}
+			*b = ((*b) << num_bits) | (stream->buffer >> (BITS_IN_BYTE - num_bits));
+			stream->capacity = BITS_IN_BYTE - num_bits;
+		}
+		
+	}
+
+	return errn;
+}
+
+#endif

+ 44 - 0
src/codec/BitInputStream.h

@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "EXITypes.h"
+
+#ifndef BIT_INPUT_STREAM_H
+#define BIT_INPUT_STREAM_H
+
+int readBits(bitstream_t* stream, size_t num_bits, uint8_t* b);
+
+int flush();
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif

+ 95 - 0
src/codec/BitOutputStream.c

@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#include <string.h>
+
+#include "EXITypes.h"
+#include "BitOutputStream.h"
+
+#ifndef BIT_OUTPUT_STREAM_C
+#define BIT_OUTPUT_STREAM_C
+
+/*	NOTE: nbits <= 8 */
+int writeBits(bitstream_t* stream, uint8_t val, size_t nbits) {
+	/*  is there enough space in the buffer */
+	if (nbits <= stream->capacity) {
+		/* all bits fit into the current buffer */
+		stream->buffer = (stream->buffer << (nbits)) | (val & (0xff
+				>> (BITS_IN_BYTE - nbits)));
+		stream->capacity -= nbits;
+		/* if the buffer is full write it into the data */
+		if (stream->capacity == 0) {
+			if ((*stream->pos) >= stream->size) {
+				return -1;
+			}
+			stream->data[(*stream->pos)++] = 0xFF & stream->buffer;
+			stream->capacity = BITS_IN_BYTE;
+			stream->buffer = 0;
+		}
+	} else {
+		/* the buffer is not enough
+		 * fill the buffer */
+		stream->buffer = (stream->buffer << stream->capacity) | ((val >> (nbits
+				- stream->capacity)) & (0xff >> (BITS_IN_BYTE
+				- stream->capacity)));
+
+		nbits -= stream->capacity;
+		if ((*stream->pos) >= stream->size) {
+			return -1;
+		}
+		stream->data[(*stream->pos)++] = 0xFF & stream->buffer;
+		stream->buffer = 0;
+
+		/* write whole bytes */
+		while (nbits >= BITS_IN_BYTE) {
+			nbits -= BITS_IN_BYTE;
+			if ((*stream->pos) >= stream->size) {
+				return -1;
+			}
+			stream->data[(*stream->pos)++] = 0xFF & (val >> (nbits));
+		}
+
+		/* spared bits are kept in the buffer */
+		stream->buffer = val; /* Note: the high bits will be shifted out during further filling */
+		stream->capacity = BITS_IN_BYTE - (nbits);
+	}
+
+	return 0;
+}
+
+/**
+ * Flush output
+ */
+int flush(bitstream_t* stream) {
+	if (stream->capacity == BITS_IN_BYTE) {
+		/* nothing to do, no bits in buffer */
+		return 0;
+	} else {
+		return writeBits(stream, 0, stream->capacity);
+	}
+}
+
+#endif
+

+ 48 - 0
src/codec/BitOutputStream.h

@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
+#include "EXITypes.h"
+
+#ifndef BIT_OUTPUT_STREAM_H
+#define BIT_OUTPUT_STREAM_H
+
+int writeBits(bitstream_t* stream, uint8_t bits, size_t nbits);
+
+/* flush output */
+int flush(bitstream_t* stream);
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+

+ 106 - 0
src/codec/BitStream.c

@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#define _CRT_SECURE_NO_DEPRECATE 1
+
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+#include <stdint.h>
+#include <stdio.h>
+
+#include "EXITypes.h"
+
+#ifndef BIT_STREAM_C
+#define BIT_STREAM_C
+
+int toBitstream(const char * filename, bitstream_t* bitstream) {
+	FILE* f;
+	// bitstream_t* bitstream;
+	int character;
+	size_t len = 0, pos = 0, i;
+
+	f = fopen(filename, "rb");
+
+	// bitstream = malloc(sizeof(bitstream_t));
+
+	if (f == NULL) {
+		printf("\n[Error] no valid file handle !\n");
+		return -1;
+	} else {
+		/* detect file size */
+		while ((character = getc(f)) != EOF) {
+			/* printf("%u \n", character); */
+			len++;
+		}
+		fclose(f);
+		/* printf("%u Zeichen", len); */
+
+		/* setup stream */
+		bitstream->data = malloc(sizeof(uint8_t) * len);
+		bitstream->size = len;
+		bitstream->pos = &pos;
+		bitstream->buffer = 0;
+		bitstream->capacity = 8;
+
+		/* read file byte per byte */
+		f = fopen(filename, "rb");
+		i = 0;
+		while ((character = getc(f)) != EOF) {
+			bitstream->data[i] = (uint8_t) character;
+			i++;
+		}
+		fclose(f);
+	}
+
+	return 0;
+}
+
+int writeBytesToFile(uint8_t* data, size_t len, const char * filename) {
+	size_t rlen;
+	FILE* f = fopen(filename, "wb+");
+
+	if (f == NULL) {
+		return -1;
+	} else {
+		rlen = fwrite(data, sizeof(uint8_t), len, f);
+		fflush(f);
+		fclose(f);
+		if(rlen == len) {
+			return 0;
+		} else {
+			return -1;
+		}
+	}
+}
+
+int writeBitstreamToFile(bitstream_t* bitsream, const char * filename) {
+	return writeBytesToFile(bitsream->data, bitsream->size, filename);
+}
+
+
+
+#endif
+

+ 48 - 0
src/codec/BitStream.h

@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "EXITypes.h"
+
+#ifndef BIT_STREAM_H
+#define BIT_STREAM_H
+
+int writeBytesToFile(uint8_t* data, size_t len, const char * filename);
+
+int writeBitstreamToFile(bitstream_t* bitsream, const char * filename);
+
+int toBitstream(const char * filename, bitstream_t* bitstream);
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif

+ 71 - 0
src/codec/EXICoder.c

@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#ifndef EXI_CODER_C
+#define EXI_CODER_C
+
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "EXITypes.h"
+#include "BitInputStream.h"
+#include "BitDecoderChannel.h"
+
+#include "assert.h"
+#include "EXICoder.h"
+#include "EXIHeader.h"
+
+/*
+ size_t exiGetCurrentState(struct exiState* state) {
+ return state->grammarStates[state->currentStack];
+ // return 0;
+ }
+ */
+
+int exiPushStack(exi_state_t* state, size_t newState, eqname_t* eqn) {
+	if ((state->stackIndex + 1) < EXI_ELEMENT_STACK_SIZE) {
+		state->grammarStack[++state->stackIndex] = newState;
+		// copy qname
+		state->elementStack[state->stackIndex].localPart = eqn->localPart;
+		state->elementStack[state->stackIndex].namespaceURI = eqn->namespaceURI;
+		return 0;
+	} else {
+		return EXI_ERROR_OUT_OF_BOUNDS;
+	}
+}
+
+int exiPopStack(exi_state_t* state) {
+	if (state->stackIndex >= 1) {
+		state->stackIndex--;
+		return 0;
+	} else {
+		return EXI_ERROR_OUT_OF_BOUNDS;
+	}
+}
+
+#endif
+

+ 51 - 0
src/codec/EXICoder.h

@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef EXI_CODER_H
+#define EXI_CODER_H
+
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+
+#include "EXITypes.h"
+
+
+// size_t exiGetCurrentState(struct exiState* state);
+
+int exiPushStack(exi_state_t* state, size_t newState, eqname_t* eqn);
+
+int exiPopStack(exi_state_t* state);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+

+ 9483 - 0
src/codec/EXIDecoder.c

@@ -0,0 +1,9483 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ * <p>NOTE: Code generated by EXIdizer v0.1</p>
+ ********************************************************************/
+
+#ifndef EXI_DECODER_C
+#define EXI_DECODER_C
+
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "EXITypes.h"
+#include "BitInputStream.h"
+#include "BitDecoderChannel.h"
+
+#include "EXICoder.h"
+#include "EXIHeader.h"
+#include "StringTable.h"
+
+
+int exiInitDecoder(bitstream_t* stream, exi_state_t* state) {
+	/* init grammar state */
+	state->stackIndex = 0;
+	state->grammarStack[0] = 0;
+	/* decode header */
+	return readEXIHeader(stream);
+}
+
+int exiDecodeNextEvent(bitstream_t* stream, exi_state_t* state,
+		exi_event_t* nextEvent) {
+
+	switch (state->grammarStack[state->stackIndex]) {
+	case 0:
+		/* Document[START_DOCUMENT] */
+		*nextEvent = START_DOCUMENT;
+		return 0;
+	case 1:
+		/* DocContent[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}BodyElement), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2010:MsgDef}V2G_Message), START_ELEMENT_GENERIC] */
+		decodeNBitUnsignedInteger(stream, 5, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 3) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 4) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 5) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 6) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 7) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 8) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 9) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 10) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 11) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 12) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 13) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 14) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 15) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 16) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 17) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 18) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 19) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 20) {
+			*nextEvent = START_ELEMENT_GENERIC;
+			return 0;
+		}
+	case 2:
+		/* DocEnd[END_DOCUMENT] */
+		*nextEvent = END_DOCUMENT;
+		return 0;
+	case 3:
+		/* FirstStartTag(xsi:type)StartTag[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 5:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 24:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ReqLockStatus)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 26:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 25:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ConnectorLocked)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 28:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargerStandby)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 29:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 27:
+		/* FirstStartTagStartTag[CHARACTERS[BOOLEAN]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 31:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 30:
+		/* FirstStartTagStartTag[CHARACTERS[BOOLEAN]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 32:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 6:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 33:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 35:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 34:
+		/* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 37:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 36:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FatalError)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 38:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EVSEStandby)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 40:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ConnectorLocked)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 41:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PowerSwitchClosed)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 42:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}RCD)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 44:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ShutDownTime)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 46:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 39:
+		/* FirstStartTagStartTag[CHARACTERS[BOOLEAN]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 48:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 43:
+		/* FirstStartTagStartTag[CHARACTERS[BOOLEAN]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 49:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 45:
+		/* FirstStartTagStartTag[CHARACTERS[BOOLEAN]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 50:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 47:
+		/* FirstStartTagStartTag[CHARACTERS[INTEGER_64]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 51:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 7:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVID), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+	case 52:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 54:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff)] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+	case 55:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 56:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 58:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 53:
+		/* FirstStartTagStartTag[CHARACTERS[STRING]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 60:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 57:
+		/* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 61:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 59:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 3, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 3) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 4) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 5) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 6) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 62:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 3, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 3) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 4) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 5) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 64:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 3, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 3) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 4) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 66:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 3) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 68:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 70:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 72:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 63:
+		/* FirstStartTagStartTag[CHARACTERS[STRING]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 73:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 65:
+		/* FirstStartTagStartTag[CHARACTERS[BINARY_HEX]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 74:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 67:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Multiplier)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 75:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Unit)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 77:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Value)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 78:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 76:
+		/* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 80:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 79:
+		/* FirstStartTag(xsi:type)StartTag[CHARACTERS[INTEGER_64]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 81:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 69:
+		/* FirstStartTag(xsi:type)StartTag[ATTRIBUTE_GENERIC, START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = ATTRIBUTE_GENERIC;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT_GENERIC;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 3) {
+			*nextEvent = CHARACTERS_GENERIC;
+			return 0;
+		}
+	case 82:
+		/* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT_GENERIC;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = CHARACTERS_GENERIC;
+			return 0;
+		}
+	case 71:
+		/* FirstStartTagStartTag[CHARACTERS[INTEGER_16]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 83:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 8:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 84:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 85:
+		/* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 86:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 9:
+		/* FirstStartTagStartTag[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 10:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 87:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEID)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 89:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 91:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 92:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 93:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PCurrent), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 94:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 95:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 88:
+		/* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 96:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 90:
+		/* FirstStartTagStartTag[CHARACTERS[BINARY_HEX]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 97:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 11:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ContractID)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 98:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 99:
+		/* FirstStartTagStartTag[CHARACTERS[STRING]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 100:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 12:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 101:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 102:
+		/* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 103:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 13:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 104:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ReqSwitchStatus)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 105:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 106:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 107:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 108:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 109:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 110:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 111:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 112:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 113:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 114:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 115:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 116:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 117:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 118:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 119:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 120:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 121:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 122:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 123:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 124:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 125:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 126:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 127:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 128:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 129:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 130:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 131:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 132:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 133:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 134:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 135:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 136:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 137:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 138:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 139:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 140:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 141:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 142:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 143:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 144:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 145:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 146:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 147:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 148:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 149:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 150:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 151:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 152:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 153:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 154:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 155:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 156:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 157:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 158:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 159:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 160:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 161:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 162:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 163:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 164:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 165:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 166:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 167:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 168:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 169:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 170:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 171:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 172:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 173:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 174:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 175:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 176:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 177:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 178:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 179:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 180:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 181:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 182:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 183:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 184:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 185:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 186:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 187:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 188:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 189:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 190:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 191:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 192:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 193:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 194:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 195:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 196:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 197:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 198:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 199:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 200:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 201:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 202:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 203:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 204:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 205:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 206:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 207:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 208:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 209:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 210:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 211:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 212:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 213:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 214:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 215:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 216:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 217:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 218:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 219:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 220:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 221:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 222:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 223:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 224:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 225:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 226:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 227:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 228:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 229:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 230:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 231:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 232:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 233:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 234:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 235:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 236:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 237:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 238:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 239:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 240:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 241:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 242:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 243:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 244:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 245:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 246:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 247:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 248:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 249:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 250:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 251:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 252:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 253:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 254:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 255:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 256:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 257:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 258:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 259:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 260:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 261:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 262:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 263:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 264:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 265:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 266:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 267:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 268:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 269:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 270:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 271:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 272:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 273:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 274:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 275:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 276:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 277:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 278:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 279:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 280:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 281:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 282:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 283:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 284:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 285:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 286:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 287:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 288:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 289:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 290:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 291:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 292:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 293:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 294:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 295:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 296:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 297:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 298:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 299:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 300:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 301:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 302:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 303:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 304:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 305:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 306:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 307:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 308:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 309:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 310:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 311:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 312:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 313:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 314:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 315:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 316:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 317:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 318:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 319:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 320:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 321:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 322:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 323:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 324:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 325:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 326:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 327:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 328:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 329:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 330:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 331:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 332:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 333:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 334:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 335:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 336:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 337:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 338:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 339:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 340:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 341:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 342:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 343:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 344:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 345:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 346:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 347:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 348:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 349:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 350:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 351:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 352:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 353:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 354:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 355:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 356:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 357:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 358:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 359:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 360:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 361:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 362:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 363:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 364:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 14:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 365:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 366:
+		/* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 367:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 15:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 368:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EoC)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 369:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EAmount)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 370:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxPower)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 371:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxPhases)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 372:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxVoltage)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 374:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMinVoltage)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 375:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 373:
+		/* FirstStartTagStartTag[CHARACTERS[INTEGER_16]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 376:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 16:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 377:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 379:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEVoltage)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 380:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEIMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 381:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEMaxPhases)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 382:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EnergyProvider), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 383:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 385:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 378:
+		/* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 387:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 384:
+		/* FirstStartTagStartTag[CHARACTERS[STRING]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 388:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 386:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Currency)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 389:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Tariff)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 391:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Tariff), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 390:
+		/* FirstStartTagStartTag[CHARACTERS[STRING]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 393:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 392:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffID)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 394:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffDescription), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntries)] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+	case 395:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntries)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 397:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 396:
+		/* FirstStartTagStartTag[CHARACTERS[STRING]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 399:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 398:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntry)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 400:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntry), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 401:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 402:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 404:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 405:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 406:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 407:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 408:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 409:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 410:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 411:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 412:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 413:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 414:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 415:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 416:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 417:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 418:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 419:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 420:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 421:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 422:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 423:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 424:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 425:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 426:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 427:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 428:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 429:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 430:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 431:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 432:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 433:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 434:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 435:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 436:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 437:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 438:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 439:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 440:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 441:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 442:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 443:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 444:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 445:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 446:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 447:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 448:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 449:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 450:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 451:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 452:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 453:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 454:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 455:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 456:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 457:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 458:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 459:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 460:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 461:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 462:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 463:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 464:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 465:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 466:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 467:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 468:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 469:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 470:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 471:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 472:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 473:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 474:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 403:
+		/* FirstStartTagStartTag[CHARACTERS[UNSIGNED_INTEGER_32]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 475:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 17:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 476:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 478:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 477:
+		/* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 480:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 479:
+		/* FirstStartTagStartTag[CHARACTERS[STRING]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 481:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 18:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 482:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceList), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 484:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 483:
+		/* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 486:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 485:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Service)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 487:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Service), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 488:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceID)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 489:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */
+		decodeNBitUnsignedInteger(stream, 3, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 3) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 4) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+	case 491:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 3) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+	case 493:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+	case 494:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+	case 495:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 497:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 490:
+		/* FirstStartTagStartTag[CHARACTERS[BINARY_HEX]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 499:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 492:
+		/* FirstStartTagStartTag[CHARACTERS[STRING]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 500:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 496:
+		/* FirstStartTagStartTag[START_ELEMENT_GENERIC] */
+		*nextEvent = START_ELEMENT_GENERIC;
+		return 0;
+	case 501:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 498:
+		/* FirstStartTagStartTag[CHARACTERS[LIST]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 502:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 19:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceList)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 503:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVPubKey)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 504:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 20:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 505:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringAuthPubKey), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 507:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 506:
+		/* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 508:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 21:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVID), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+	case 509:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 510:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 22:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 511:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEID)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 513:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 514:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 515:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 512:
+		/* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 516:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 23:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Header)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 517:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Body)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 519:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 518:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}SessionInformation)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 521:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Notification), START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 523:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 525:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 522:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SessionID)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 526:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceSessionID), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 528:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 529:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 527:
+		/* FirstStartTagStartTag[CHARACTERS[BINARY_HEX]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 531:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 530:
+		/* FirstStartTagStartTag[CHARACTERS[STRING]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 532:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 524:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 3) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 533:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 2, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 535:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 1, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 537:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 534:
+		/* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 539:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 536:
+		/* FirstStartTag(xsi:type)StartTag[CHARACTERS[STRING]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 540:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 538:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Event)] */
+		*nextEvent = START_ELEMENT;
+		return 0;
+	case 541:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 542:
+		/* FirstStartTagStartTag[CHARACTERS[ENUMERATION]] */
+		*nextEvent = CHARACTERS;
+		return 0;
+	case 543:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+	case 520:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}BodyElement), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupRes), END_ELEMENT] */
+		decodeNBitUnsignedInteger(stream, 5, &state->eventCode);
+		if (state->eventCode == 0) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 1) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 2) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 3) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 4) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 5) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 6) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 7) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 8) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 9) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 10) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 11) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 12) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 13) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 14) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 15) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 16) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 17) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 18) {
+			*nextEvent = START_ELEMENT;
+			return 0;
+		}
+		else if (state->eventCode == 19) {
+			*nextEvent = END_ELEMENT;
+			return 0;
+		}
+	case 544:
+		/* Element[END_ELEMENT] */
+		*nextEvent = END_ELEMENT;
+		return 0;
+
+	default:
+		*nextEvent = ERROR;
+		return -1;
+	}
+
+	return -1;
+}
+
+int exiDecodeStartDocument(bitstream_t* stream, exi_state_t* state) {
+	if ( state->grammarStack[state->stackIndex] == 0 ) {
+		/* move on */
+		state->grammarStack[state->stackIndex] = 1;
+		return 0;
+	} 
+
+	return -1;
+}
+
+int exiDecodeEndDocument(bitstream_t* stream, exi_state_t* state) {
+	if ( state->grammarStack[state->stackIndex] == 2) {
+		return 0;
+	} 
+
+	return -1;
+}
+
+int exiDecodeStartElement(bitstream_t* stream, exi_state_t* state,
+		eqname_t* se) {
+	switch (state->grammarStack[state->stackIndex]) {
+	case 1:
+		/* DocContent[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}BodyElement), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2010:MsgDef}V2G_Message), START_ELEMENT_GENERIC] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "BodyElement" */
+			se->namespaceURI = 6; /* "urn:iso:15118:2:2010:MsgDef" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 3, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 11; /* "LineLockReq" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 5, se);
+		}
+		else if (state->eventCode == 2) {
+			se->localPart = 13; /* "LineLockRes" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 6, se);
+		}
+		else if (state->eventCode == 3) {
+			se->localPart = 17; /* "MeteringReceiptReq" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 7, se);
+		}
+		else if (state->eventCode == 4) {
+			se->localPart = 19; /* "MeteringReceiptRes" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 8, se);
+		}
+		else if (state->eventCode == 5) {
+			se->localPart = 21; /* "MeteringStatusReq" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 9, se);
+		}
+		else if (state->eventCode == 6) {
+			se->localPart = 23; /* "MeteringStatusRes" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 10, se);
+		}
+		else if (state->eventCode == 7) {
+			se->localPart = 33; /* "PaymentDetailsReq" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 11, se);
+		}
+		else if (state->eventCode == 8) {
+			se->localPart = 35; /* "PaymentDetailsRes" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 12, se);
+		}
+		else if (state->eventCode == 9) {
+			se->localPart = 37; /* "PowerDeliveryReq" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 13, se);
+		}
+		else if (state->eventCode == 10) {
+			se->localPart = 39; /* "PowerDeliveryRes" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 14, se);
+		}
+		else if (state->eventCode == 11) {
+			se->localPart = 41; /* "PowerDiscoveryReq" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 15, se);
+		}
+		else if (state->eventCode == 12) {
+			se->localPart = 43; /* "PowerDiscoveryRes" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 16, se);
+		}
+		else if (state->eventCode == 13) {
+			se->localPart = 48; /* "ServiceDiscoveryReq" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 17, se);
+		}
+		else if (state->eventCode == 14) {
+			se->localPart = 50; /* "ServiceDiscoveryRes" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 18, se);
+		}
+		else if (state->eventCode == 15) {
+			se->localPart = 53; /* "ServicePaymentSelectionReq" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 19, se);
+		}
+		else if (state->eventCode == 16) {
+			se->localPart = 55; /* "ServicePaymentSelectionRes" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 20, se);
+		}
+		else if (state->eventCode == 17) {
+			se->localPart = 59; /* "SessionSetupReq" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 21, se);
+		}
+		else if (state->eventCode == 18) {
+			se->localPart = 61; /* "SessionSetupRes" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 22, se);
+		}
+		else if (state->eventCode == 19) {
+			se->localPart = 9; /* "V2G_Message" */
+			se->namespaceURI = 6; /* "urn:iso:15118:2:2010:MsgDef" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 23, se);
+		}
+		break;
+	case 5:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */
+			se->localPart = 32; /* "PEVStatus" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 24;
+			/* push element on stack */
+			return exiPushStack(state, 25, se);
+		break;
+	case 6:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */
+			se->localPart = 47; /* "ResponseCode" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 33;
+			/* push element on stack */
+			return exiPushStack(state, 34, se);
+		break;
+	case 7:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVID), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */
+		if (state->eventCode == 0) {
+			se->localPart = 26; /* "PEVID" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 52;
+			/* push element on stack */
+			return exiPushStack(state, 53, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 32; /* "PEVStatus" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 54;
+			/* push element on stack */
+			return exiPushStack(state, 25, se);
+		}
+		break;
+	case 8:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */
+			se->localPart = 47; /* "ResponseCode" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 84;
+			/* push element on stack */
+			return exiPushStack(state, 85, se);
+		break;
+	case 10:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */
+			se->localPart = 47; /* "ResponseCode" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 87;
+			/* push element on stack */
+			return exiPushStack(state, 88, se);
+		break;
+	case 11:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ContractID)] */
+			se->localPart = 1; /* "ContractID" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 98;
+			/* push element on stack */
+			return exiPushStack(state, 99, se);
+		break;
+	case 12:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */
+			se->localPart = 47; /* "ResponseCode" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 101;
+			/* push element on stack */
+			return exiPushStack(state, 102, se);
+		break;
+	case 13:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */
+			se->localPart = 32; /* "PEVStatus" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 104;
+			/* push element on stack */
+			return exiPushStack(state, 25, se);
+		break;
+	case 14:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */
+			se->localPart = 47; /* "ResponseCode" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 365;
+			/* push element on stack */
+			return exiPushStack(state, 366, se);
+		break;
+	case 15:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */
+			se->localPart = 32; /* "PEVStatus" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 368;
+			/* push element on stack */
+			return exiPushStack(state, 25, se);
+		break;
+	case 16:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */
+			se->localPart = 47; /* "ResponseCode" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 377;
+			/* push element on stack */
+			return exiPushStack(state, 378, se);
+		break;
+	case 17:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 58; /* "ServiceType" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 476;
+			/* push element on stack */
+			return exiPushStack(state, 477, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 57; /* "ServiceScope" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 478;
+			/* push element on stack */
+			return exiPushStack(state, 479, se);
+		}
+		break;
+	case 18:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */
+			se->localPart = 47; /* "ResponseCode" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 482;
+			/* push element on stack */
+			return exiPushStack(state, 483, se);
+		break;
+	case 19:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceList)] */
+			se->localPart = 52; /* "ServiceList" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 503;
+			/* push element on stack */
+			return exiPushStack(state, 485, se);
+		break;
+	case 20:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */
+			se->localPart = 47; /* "ResponseCode" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 505;
+			/* push element on stack */
+			return exiPushStack(state, 506, se);
+		break;
+	case 21:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVID), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */
+		if (state->eventCode == 0) {
+			se->localPart = 26; /* "PEVID" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 509;
+			/* push element on stack */
+			return exiPushStack(state, 53, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 32; /* "PEVStatus" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 510;
+			/* push element on stack */
+			return exiPushStack(state, 25, se);
+		}
+		break;
+	case 22:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */
+			se->localPart = 47; /* "ResponseCode" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 511;
+			/* push element on stack */
+			return exiPushStack(state, 512, se);
+		break;
+	case 23:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Header)] */
+			se->localPart = 4; /* "Header" */
+			se->namespaceURI = 6; /* "urn:iso:15118:2:2010:MsgDef" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 517;
+			/* push element on stack */
+			return exiPushStack(state, 518, se);
+		break;
+	case 24:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ReqLockStatus)] */
+			se->localPart = 45; /* "ReqLockStatus" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 26;
+			/* push element on stack */
+			return exiPushStack(state, 27, se);
+		break;
+	case 25:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ConnectorLocked)] */
+			se->localPart = 4; /* "ConnectorLocked" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 28;
+			/* push element on stack */
+			return exiPushStack(state, 27, se);
+		break;
+	case 28:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargerStandby)] */
+			se->localPart = 0; /* "ChargerStandby" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 29;
+			/* push element on stack */
+			return exiPushStack(state, 30, se);
+		break;
+	case 33:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */
+			se->localPart = 7; /* "EVSEStatus" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 35;
+			/* push element on stack */
+			return exiPushStack(state, 36, se);
+		break;
+	case 36:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FatalError)] */
+			se->localPart = 12; /* "FatalError" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 38;
+			/* push element on stack */
+			return exiPushStack(state, 39, se);
+		break;
+	case 38:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EVSEStandby)] */
+			se->localPart = 7; /* "EVSEStandby" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 40;
+			/* push element on stack */
+			return exiPushStack(state, 30, se);
+		break;
+	case 40:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ConnectorLocked)] */
+			se->localPart = 4; /* "ConnectorLocked" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 41;
+			/* push element on stack */
+			return exiPushStack(state, 27, se);
+		break;
+	case 41:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PowerSwitchClosed)] */
+			se->localPart = 25; /* "PowerSwitchClosed" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 42;
+			/* push element on stack */
+			return exiPushStack(state, 43, se);
+		break;
+	case 42:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}RCD)] */
+			se->localPart = 27; /* "RCD" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 44;
+			/* push element on stack */
+			return exiPushStack(state, 45, se);
+		break;
+	case 44:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ShutDownTime)] */
+			se->localPart = 39; /* "ShutDownTime" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 46;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		break;
+	case 52:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */
+			se->localPart = 32; /* "PEVStatus" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 54;
+			/* push element on stack */
+			return exiPushStack(state, 25, se);
+		break;
+	case 54:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff)] */
+		if (state->eventCode == 0) {
+			se->localPart = 63; /* "TCurrent" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 55;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 64; /* "Tariff" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 56;
+			/* push element on stack */
+			return exiPushStack(state, 57, se);
+		}
+		break;
+	case 55:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff)] */
+			se->localPart = 64; /* "Tariff" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 56;
+			/* push element on stack */
+			return exiPushStack(state, 57, se);
+		break;
+	case 56:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo)] */
+			se->localPart = 15; /* "MeterInfo" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 58;
+			/* push element on stack */
+			return exiPushStack(state, 59, se);
+		break;
+	case 59:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 16; /* "MeterID" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 62;
+			/* push element on stack */
+			return exiPushStack(state, 63, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 18; /* "MeterPubKey" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 64;
+			/* push element on stack */
+			return exiPushStack(state, 65, se);
+		}
+		else if (state->eventCode == 2) {
+			se->localPart = 19; /* "MeterReading" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 66;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		else if (state->eventCode == 3) {
+			se->localPart = 40; /* "SigMeterReading" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 68;
+			/* push element on stack */
+			return exiPushStack(state, 69, se);
+		}
+		else if (state->eventCode == 4) {
+			se->localPart = 20; /* "MeterStatus" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 70;
+			/* push element on stack */
+			return exiPushStack(state, 71, se);
+		}
+		else if (state->eventCode == 5) {
+			se->localPart = 41; /* "TMeter" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 72;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 62:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 18; /* "MeterPubKey" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 64;
+			/* push element on stack */
+			return exiPushStack(state, 65, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 19; /* "MeterReading" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 66;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		else if (state->eventCode == 2) {
+			se->localPart = 40; /* "SigMeterReading" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 68;
+			/* push element on stack */
+			return exiPushStack(state, 69, se);
+		}
+		else if (state->eventCode == 3) {
+			se->localPart = 20; /* "MeterStatus" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 70;
+			/* push element on stack */
+			return exiPushStack(state, 71, se);
+		}
+		else if (state->eventCode == 4) {
+			se->localPart = 41; /* "TMeter" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 72;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 64:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 19; /* "MeterReading" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 66;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 40; /* "SigMeterReading" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 68;
+			/* push element on stack */
+			return exiPushStack(state, 69, se);
+		}
+		else if (state->eventCode == 2) {
+			se->localPart = 20; /* "MeterStatus" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 70;
+			/* push element on stack */
+			return exiPushStack(state, 71, se);
+		}
+		else if (state->eventCode == 3) {
+			se->localPart = 41; /* "TMeter" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 72;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 66:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 40; /* "SigMeterReading" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 68;
+			/* push element on stack */
+			return exiPushStack(state, 69, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 20; /* "MeterStatus" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 70;
+			/* push element on stack */
+			return exiPushStack(state, 71, se);
+		}
+		else if (state->eventCode == 2) {
+			se->localPart = 41; /* "TMeter" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 72;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 67:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Multiplier)] */
+			se->localPart = 21; /* "Multiplier" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 75;
+			/* push element on stack */
+			return exiPushStack(state, 76, se);
+		break;
+	case 68:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 20; /* "MeterStatus" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 70;
+			/* push element on stack */
+			return exiPushStack(state, 71, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 41; /* "TMeter" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 72;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 70:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 41; /* "TMeter" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 72;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 75:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Unit)] */
+			se->localPart = 53; /* "Unit" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 77;
+			/* push element on stack */
+			return exiPushStack(state, 76, se);
+		break;
+	case 77:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Value)] */
+			se->localPart = 54; /* "Value" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 78;
+			/* push element on stack */
+			return exiPushStack(state, 79, se);
+		break;
+	case 87:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEID)] */
+			se->localPart = 3; /* "EVSEID" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 89;
+			/* push element on stack */
+			return exiPushStack(state, 90, se);
+		break;
+	case 89:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */
+			se->localPart = 7; /* "EVSEStatus" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 91;
+			/* push element on stack */
+			return exiPushStack(state, 36, se);
+		break;
+	case 91:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent)] */
+			se->localPart = 63; /* "TCurrent" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 92;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		break;
+	case 92:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEMaxPower)] */
+			se->localPart = 6; /* "EVSEMaxPower" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 93;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 93:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PCurrent), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 25; /* "PCurrent" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 94;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 15; /* "MeterInfo" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 95;
+			/* push element on stack */
+			return exiPushStack(state, 59, se);
+		}
+		break;
+	case 94:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 15; /* "MeterInfo" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 95;
+			/* push element on stack */
+			return exiPushStack(state, 59, se);
+		}
+		break;
+	case 104:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ReqSwitchStatus)] */
+			se->localPart = 46; /* "ReqSwitchStatus" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 105;
+			/* push element on stack */
+			return exiPushStack(state, 43, se);
+		break;
+	case 105:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 64; /* "Tariff" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 106;
+			/* push element on stack */
+			return exiPushStack(state, 57, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 0; /* "ChargingProfile" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 107;
+			/* push element on stack */
+			return exiPushStack(state, 108, se);
+		}
+		break;
+	case 106:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 0; /* "ChargingProfile" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 107;
+			/* push element on stack */
+			return exiPushStack(state, 108, se);
+		}
+		break;
+	case 108:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart)] */
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 109;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		break;
+	case 109:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 110;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 110:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 111;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 111:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 112;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 112:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 113;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 113:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 114;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 114:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 115;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 115:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 116;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 116:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 117;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 117:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 118;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 118:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 119;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 119:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 120;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 120:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 121;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 121:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 122;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 122:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 123;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 123:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 124;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 124:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 125;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 125:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 126;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 126:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 127;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 127:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 128;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 128:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 129;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 129:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 130;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 130:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 131;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 131:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 132;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 132:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 133;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 133:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 134;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 134:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 135;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 135:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 136;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 136:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 137;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 137:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 138;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 138:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 139;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 139:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 140;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 140:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 141;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 141:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 142;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 142:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 143;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 143:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 144;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 144:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 145;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 145:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 146;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 146:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 147;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 147:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 148;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 148:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 149;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 149:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 150;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 150:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 151;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 151:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 152;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 152:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 153;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 153:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 154;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 154:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 155;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 155:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 156;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 156:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 157;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 157:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 158;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 158:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 159;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 159:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 160;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 160:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 161;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 161:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 162;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 162:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 163;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 163:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 164;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 164:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 165;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 165:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 166;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 166:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 167;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 167:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 168;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 168:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 169;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 169:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 170;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 170:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 171;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 171:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 172;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 172:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 173;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 173:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 174;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 174:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 175;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 175:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 176;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 176:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 177;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 177:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 178;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 178:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 179;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 179:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 180;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 180:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 181;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 181:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 182;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 182:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 183;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 183:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 184;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 184:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 185;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 185:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 186;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 186:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 187;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 187:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 188;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 188:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 189;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 189:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 190;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 190:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 191;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 191:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 192;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 192:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 193;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 193:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 194;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 194:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 195;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 195:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 196;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 196:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 197;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 197:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 198;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 198:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 199;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 199:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 200;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 200:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 201;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 201:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 202;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 202:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 203;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 203:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 204;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 204:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 205;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 205:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 206;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 206:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 207;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 207:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 208;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 208:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 209;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 209:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 210;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 210:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 211;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 211:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 212;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 212:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 213;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 213:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 214;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 214:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 215;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 215:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 216;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 216:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 217;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 217:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 218;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 218:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 219;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 219:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 220;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 220:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 221;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 221:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 222;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 222:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 223;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 223:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 224;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 224:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 225;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 225:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 226;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 226:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 227;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 227:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 228;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 228:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 229;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 229:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 230;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 230:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 231;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 231:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 232;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 232:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 233;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 233:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 234;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 234:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 235;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 235:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 236;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 236:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 237;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 237:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 238;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 238:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 239;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 239:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 240;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 240:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 241;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 241:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 242;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 242:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 243;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 243:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 244;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 244:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 245;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 245:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 246;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 246:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 247;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 247:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 248;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 248:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 249;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 249:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 250;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 250:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 251;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 251:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 252;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 252:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 253;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 253:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 254;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 254:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 255;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 255:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 256;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 256:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 257;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 257:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 258;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 258:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 259;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 259:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 260;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 260:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 261;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 261:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 262;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 262:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 263;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 263:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 264;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 264:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 265;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 265:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 266;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 266:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 267;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 267:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 268;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 268:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 269;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 269:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 270;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 270:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 271;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 271:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 272;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 272:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 273;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 273:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 274;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 274:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 275;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 275:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 276;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 276:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 277;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 277:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 278;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 278:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 279;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 279:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 280;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 280:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 281;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 281:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 282;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 282:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 283;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 283:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 284;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 284:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 285;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 285:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 286;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 286:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 287;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 287:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 288;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 288:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 289;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 289:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 290;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 290:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 291;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 291:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 292;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 292:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 293;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 293:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 294;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 294:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 295;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 295:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 296;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 296:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 297;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 297:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 298;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 298:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 299;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 299:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 300;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 300:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 301;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 301:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 302;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 302:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 303;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 303:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 304;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 304:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 305;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 305:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 306;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 306:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 307;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 307:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 308;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 308:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 309;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 309:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 310;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 310:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 311;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 311:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 312;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 312:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 313;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 313:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 314;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 314:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 315;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 315:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 316;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 316:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 317;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 317:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 318;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 318:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 319;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 319:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 320;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 320:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 321;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 321:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 322;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 322:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 323;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 323:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 324;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 324:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 325;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 325:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 326;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 326:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 327;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 327:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 328;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 328:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 329;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 329:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 330;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 330:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 331;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 331:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 332;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 332:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 333;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 333:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 334;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 334:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 335;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 335:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 336;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 336:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 337;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 337:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 338;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 338:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 339;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 339:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 340;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 340:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 341;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 341:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 342;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 342:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 343;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 343:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 344;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 344:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 345;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 345:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 346;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 346:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 347;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 347:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 348;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 348:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 349;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 349:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 350;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 350:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 351;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 351:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 352;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 352:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 353;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 353:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 354;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 354:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 355;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 355:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 356;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 356:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 357;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 357:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 358;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 358:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 359;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 359:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 360;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 360:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 361;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 361:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 362;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 362:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "ChargingProfileEntryStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 363;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 363:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */
+			se->localPart = 1; /* "ChargingProfileEntryMaxPower" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 364;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 368:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EoC)] */
+			se->localPart = 10; /* "EoC" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 369;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		break;
+	case 369:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EAmount)] */
+			se->localPart = 2; /* "EAmount" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 370;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 370:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxPower)] */
+			se->localPart = 28; /* "PEVMaxPower" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 371;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 371:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxPhases)] */
+			se->localPart = 27; /* "PEVMaxPhases" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 372;
+			/* push element on stack */
+			return exiPushStack(state, 373, se);
+		break;
+	case 372:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxVoltage)] */
+			se->localPart = 29; /* "PEVMaxVoltage" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 374;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 374:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMinVoltage)] */
+			se->localPart = 30; /* "PEVMinVoltage" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 375;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 377:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */
+			se->localPart = 7; /* "EVSEStatus" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 379;
+			/* push element on stack */
+			return exiPushStack(state, 36, se);
+		break;
+	case 379:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEVoltage)] */
+			se->localPart = 8; /* "EVSEVoltage" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 380;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 380:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEIMax)] */
+			se->localPart = 4; /* "EVSEIMax" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 381;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 381:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEMaxPhases)] */
+			se->localPart = 5; /* "EVSEMaxPhases" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 382;
+			/* push element on stack */
+			return exiPushStack(state, 373, se);
+		break;
+	case 382:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EnergyProvider), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 9; /* "EnergyProvider" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 383;
+			/* push element on stack */
+			return exiPushStack(state, 384, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 65; /* "TariffTable" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 385;
+			/* push element on stack */
+			return exiPushStack(state, 386, se);
+		}
+		break;
+	case 383:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 65; /* "TariffTable" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 385;
+			/* push element on stack */
+			return exiPushStack(state, 386, se);
+		}
+		break;
+	case 386:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Currency)] */
+			se->localPart = 5; /* "Currency" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 389;
+			/* push element on stack */
+			return exiPushStack(state, 390, se);
+		break;
+	case 389:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Tariff)] */
+			se->localPart = 42; /* "Tariff" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 391;
+			/* push element on stack */
+			return exiPushStack(state, 392, se);
+		break;
+	case 391:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Tariff), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 42; /* "Tariff" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 391;
+			/* push element on stack */
+			return exiPushStack(state, 392, se);
+		}
+		break;
+	case 392:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffID)] */
+			se->localPart = 49; /* "TariffID" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 394;
+			/* push element on stack */
+			return exiPushStack(state, 57, se);
+		break;
+	case 394:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffDescription), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntries)] */
+		if (state->eventCode == 0) {
+			se->localPart = 44; /* "TariffDescription" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 395;
+			/* push element on stack */
+			return exiPushStack(state, 396, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 45; /* "TariffEntries" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 397;
+			/* push element on stack */
+			return exiPushStack(state, 398, se);
+		}
+		break;
+	case 395:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntries)] */
+			se->localPart = 45; /* "TariffEntries" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 397;
+			/* push element on stack */
+			return exiPushStack(state, 398, se);
+		break;
+	case 398:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntry)] */
+			se->localPart = 47; /* "TariffEntry" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 400;
+			/* push element on stack */
+			return exiPushStack(state, 401, se);
+		break;
+	case 400:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntry), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 47; /* "TariffEntry" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 400;
+			/* push element on stack */
+			return exiPushStack(state, 401, se);
+		}
+		break;
+	case 401:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart)] */
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 402;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		break;
+	case 402:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 404;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 404:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 405;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 474;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 405:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 406;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 406:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 407;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 473;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 407:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 408;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 408:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 409;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 472;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 409:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 410;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 410:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 411;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 471;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 411:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 412;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 412:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 413;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 470;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 413:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 414;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 414:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 415;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 469;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 415:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 416;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 416:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 417;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 468;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 417:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 418;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 418:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 419;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 467;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 419:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 420;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 420:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 421;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 466;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 421:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 422;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 422:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 423;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 465;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 423:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 424;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 424:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 425;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 464;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 425:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 426;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 426:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 427;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 463;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 427:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 428;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 428:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 429;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 462;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 429:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 430;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 430:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 431;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 461;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 431:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 432;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 432:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 433;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 460;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 433:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 434;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 434:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 435;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 459;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 435:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 436;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 436:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 437;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 458;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 437:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 438;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 438:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 439;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 457;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 439:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 440;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 440:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 441;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 456;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 441:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 442;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 442:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 443;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 455;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 443:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 444;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 444:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 445;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 454;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 445:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 446;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 446:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 447;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 453;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 447:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 448;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 448:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 449;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 452;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 449:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */
+			se->localPart = 50; /* "TariffPMax" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 450;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		break;
+	case 450:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 6; /* "EPrice" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 451;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 452:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 449;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 453:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 447;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 454:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 445;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 455:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 443;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 456:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 441;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 457:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 439;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 458:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 437;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 459:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 435;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 460:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 433;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 461:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 431;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 462:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 429;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 463:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 427;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 464:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 425;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 465:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 423;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 466:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 421;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 467:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 419;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 468:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 417;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 469:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 415;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 470:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 413;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 471:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 411;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 472:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 409;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 473:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 407;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 474:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 51; /* "TariffStart" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 405;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 476:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 57; /* "ServiceScope" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 478;
+			/* push element on stack */
+			return exiPushStack(state, 479, se);
+		}
+		break;
+	case 482:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceList), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 52; /* "ServiceList" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 484;
+			/* push element on stack */
+			return exiPushStack(state, 485, se);
+		}
+		break;
+	case 485:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Service)] */
+			se->localPart = 28; /* "Service" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 487;
+			/* push element on stack */
+			return exiPushStack(state, 488, se);
+		break;
+	case 487:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Service), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 28; /* "Service" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 487;
+			/* push element on stack */
+			return exiPushStack(state, 488, se);
+		}
+		break;
+	case 488:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceID)] */
+			se->localPart = 31; /* "ServiceID" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 489;
+			/* push element on stack */
+			return exiPushStack(state, 490, se);
+		break;
+	case 489:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */
+		if (state->eventCode == 0) {
+			se->localPart = 33; /* "ServiceName" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 491;
+			/* push element on stack */
+			return exiPushStack(state, 492, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 36; /* "ServiceType" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 493;
+			/* push element on stack */
+			return exiPushStack(state, 477, se);
+		}
+		else if (state->eventCode == 2) {
+			se->localPart = 34; /* "ServiceScope" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 494;
+			/* push element on stack */
+			return exiPushStack(state, 479, se);
+		}
+		else if (state->eventCode == 3) {
+			se->localPart = 30; /* "ServiceDetails" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 495;
+			/* push element on stack */
+			return exiPushStack(state, 496, se);
+		}
+		else if (state->eventCode == 4) {
+			se->localPart = 24; /* "PaymentOption" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 497;
+			/* push element on stack */
+			return exiPushStack(state, 498, se);
+		}
+		break;
+	case 491:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */
+		if (state->eventCode == 0) {
+			se->localPart = 36; /* "ServiceType" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 493;
+			/* push element on stack */
+			return exiPushStack(state, 477, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 34; /* "ServiceScope" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 494;
+			/* push element on stack */
+			return exiPushStack(state, 479, se);
+		}
+		else if (state->eventCode == 2) {
+			se->localPart = 30; /* "ServiceDetails" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 495;
+			/* push element on stack */
+			return exiPushStack(state, 496, se);
+		}
+		else if (state->eventCode == 3) {
+			se->localPart = 24; /* "PaymentOption" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 497;
+			/* push element on stack */
+			return exiPushStack(state, 498, se);
+		}
+		break;
+	case 493:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */
+		if (state->eventCode == 0) {
+			se->localPart = 34; /* "ServiceScope" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 494;
+			/* push element on stack */
+			return exiPushStack(state, 479, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 30; /* "ServiceDetails" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 495;
+			/* push element on stack */
+			return exiPushStack(state, 496, se);
+		}
+		else if (state->eventCode == 2) {
+			se->localPart = 24; /* "PaymentOption" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 497;
+			/* push element on stack */
+			return exiPushStack(state, 498, se);
+		}
+		break;
+	case 494:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */
+		if (state->eventCode == 0) {
+			se->localPart = 30; /* "ServiceDetails" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 495;
+			/* push element on stack */
+			return exiPushStack(state, 496, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 24; /* "PaymentOption" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 497;
+			/* push element on stack */
+			return exiPushStack(state, 498, se);
+		}
+		break;
+	case 495:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */
+			se->localPart = 24; /* "PaymentOption" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 497;
+			/* push element on stack */
+			return exiPushStack(state, 498, se);
+		break;
+	case 503:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVPubKey)] */
+			se->localPart = 31; /* "PEVPubKey" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 504;
+			/* push element on stack */
+			return exiPushStack(state, 65, se);
+		break;
+	case 505:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringAuthPubKey), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 16; /* "MeteringAuthPubKey" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 507;
+			/* push element on stack */
+			return exiPushStack(state, 65, se);
+		}
+		break;
+	case 509:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */
+			se->localPart = 32; /* "PEVStatus" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 510;
+			/* push element on stack */
+			return exiPushStack(state, 25, se);
+		break;
+	case 511:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEID)] */
+			se->localPart = 3; /* "EVSEID" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 513;
+			/* push element on stack */
+			return exiPushStack(state, 90, se);
+		break;
+	case 513:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */
+			se->localPart = 7; /* "EVSEStatus" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 514;
+			/* push element on stack */
+			return exiPushStack(state, 36, se);
+		break;
+	case 514:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent)] */
+			se->localPart = 63; /* "TCurrent" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 515;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		break;
+	case 517:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Body)] */
+			se->localPart = 0; /* "Body" */
+			se->namespaceURI = 6; /* "urn:iso:15118:2:2010:MsgDef" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 519;
+			/* push element on stack */
+			return exiPushStack(state, 520, se);
+		break;
+	case 518:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}SessionInformation)] */
+			se->localPart = 8; /* "SessionInformation" */
+			se->namespaceURI = 6; /* "urn:iso:15118:2:2010:MsgDef" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 521;
+			/* push element on stack */
+			return exiPushStack(state, 522, se);
+		break;
+	case 520:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}BodyElement), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupRes), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 2; /* "BodyElement" */
+			se->namespaceURI = 6; /* "urn:iso:15118:2:2010:MsgDef" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 3, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 11; /* "LineLockReq" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 5, se);
+		}
+		else if (state->eventCode == 2) {
+			se->localPart = 13; /* "LineLockRes" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 6, se);
+		}
+		else if (state->eventCode == 3) {
+			se->localPart = 17; /* "MeteringReceiptReq" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 7, se);
+		}
+		else if (state->eventCode == 4) {
+			se->localPart = 19; /* "MeteringReceiptRes" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 8, se);
+		}
+		else if (state->eventCode == 5) {
+			se->localPart = 21; /* "MeteringStatusReq" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 9, se);
+		}
+		else if (state->eventCode == 6) {
+			se->localPart = 23; /* "MeteringStatusRes" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 10, se);
+		}
+		else if (state->eventCode == 7) {
+			se->localPart = 33; /* "PaymentDetailsReq" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 11, se);
+		}
+		else if (state->eventCode == 8) {
+			se->localPart = 35; /* "PaymentDetailsRes" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 12, se);
+		}
+		else if (state->eventCode == 9) {
+			se->localPart = 37; /* "PowerDeliveryReq" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 13, se);
+		}
+		else if (state->eventCode == 10) {
+			se->localPart = 39; /* "PowerDeliveryRes" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 14, se);
+		}
+		else if (state->eventCode == 11) {
+			se->localPart = 41; /* "PowerDiscoveryReq" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 15, se);
+		}
+		else if (state->eventCode == 12) {
+			se->localPart = 43; /* "PowerDiscoveryRes" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 16, se);
+		}
+		else if (state->eventCode == 13) {
+			se->localPart = 48; /* "ServiceDiscoveryReq" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 17, se);
+		}
+		else if (state->eventCode == 14) {
+			se->localPart = 50; /* "ServiceDiscoveryRes" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 18, se);
+		}
+		else if (state->eventCode == 15) {
+			se->localPart = 53; /* "ServicePaymentSelectionReq" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 19, se);
+		}
+		else if (state->eventCode == 16) {
+			se->localPart = 55; /* "ServicePaymentSelectionRes" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 20, se);
+		}
+		else if (state->eventCode == 17) {
+			se->localPart = 59; /* "SessionSetupReq" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 21, se);
+		}
+		else if (state->eventCode == 18) {
+			se->localPart = 61; /* "SessionSetupRes" */
+			se->namespaceURI = 4; /* "urn:iso:15118:2:2010:MsgBody" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 22, se);
+		}
+		break;
+	case 521:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Notification), START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 6; /* "Notification" */
+			se->namespaceURI = 6; /* "urn:iso:15118:2:2010:MsgDef" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 523;
+			/* push element on stack */
+			return exiPushStack(state, 524, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 7; /* "Security" */
+			se->namespaceURI = 6; /* "urn:iso:15118:2:2010:MsgDef" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 525;
+			/* push element on stack */
+			return exiPushStack(state, 69, se);
+		}
+		break;
+	case 522:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SessionID)] */
+			se->localPart = 37; /* "SessionID" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 526;
+			/* push element on stack */
+			return exiPushStack(state, 527, se);
+		break;
+	case 523:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 7; /* "Security" */
+			se->namespaceURI = 6; /* "urn:iso:15118:2:2010:MsgDef" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 525;
+			/* push element on stack */
+			return exiPushStack(state, 69, se);
+		}
+		break;
+	case 524:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 13; /* "FaultCode" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 533;
+			/* push element on stack */
+			return exiPushStack(state, 534, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 14; /* "FaultMsg" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 535;
+			/* push element on stack */
+			return exiPushStack(state, 536, se);
+		}
+		else if (state->eventCode == 2) {
+			se->localPart = 10; /* "EventList" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 537;
+			/* push element on stack */
+			return exiPushStack(state, 538, se);
+		}
+		break;
+	case 526:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceSessionID), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 35; /* "ServiceSessionID" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 528;
+			/* push element on stack */
+			return exiPushStack(state, 527, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 26; /* "ProtocolVersion" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 529;
+			/* push element on stack */
+			return exiPushStack(state, 530, se);
+		}
+		break;
+	case 528:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 26; /* "ProtocolVersion" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 529;
+			/* push element on stack */
+			return exiPushStack(state, 530, se);
+		}
+		break;
+	case 533:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 14; /* "FaultMsg" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 535;
+			/* push element on stack */
+			return exiPushStack(state, 536, se);
+		}
+		else if (state->eventCode == 1) {
+			se->localPart = 10; /* "EventList" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 537;
+			/* push element on stack */
+			return exiPushStack(state, 538, se);
+		}
+		break;
+	case 535:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */
+		if (state->eventCode == 0) {
+			se->localPart = 10; /* "EventList" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 537;
+			/* push element on stack */
+			return exiPushStack(state, 538, se);
+		}
+		break;
+	case 538:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Event)] */
+			se->localPart = 9; /* "Event" */
+			se->namespaceURI = 5; /* "urn:iso:15118:2:2010:MsgDataTypes" */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 541;
+			/* push element on stack */
+			return exiPushStack(state, 542, se);
+		break;
+
+	default:
+		return -1;
+	}
+
+	return -1;
+}
+
+int exiDecodeEndElement(bitstream_t* stream, exi_state_t* state,
+		eqname_t* ee) {
+	// pop item and update ahead of time element qname
+	ee->localPart = state->elementStack[state->stackIndex].localPart;
+	ee->namespaceURI = state->elementStack[state->stackIndex].namespaceURI;
+	return exiPopStack(state);
+}
+
+int exiDecodeCharacters(bitstream_t* stream, exi_state_t* state,
+		exi_value_t* val) {
+	uint8_t xsi;
+	switch (state->grammarStack[state->stackIndex]) {
+	case 27:
+		/* CHARACTERS[BOOLEAN] */
+		val->type = BOOLEAN;
+		decodeBoolean(stream, &val->boolean);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 31;
+		return 0;
+	case 30:
+		/* CHARACTERS[BOOLEAN] */
+		val->type = BOOLEAN;
+		decodeBoolean(stream, &val->boolean);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 32;
+		return 0;
+	case 34:
+		/* CHARACTERS[ENUMERATION] */
+		val->type = ENUMERATION;
+		decodeNBitUnsignedInteger(stream, 2, &val->enumeration);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 37;
+		return 0;
+	case 39:
+		/* CHARACTERS[BOOLEAN] */
+		val->type = BOOLEAN;
+		decodeBoolean(stream, &val->boolean);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 48;
+		return 0;
+	case 43:
+		/* CHARACTERS[BOOLEAN] */
+		val->type = BOOLEAN;
+		decodeBoolean(stream, &val->boolean);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 49;
+		return 0;
+	case 45:
+		/* CHARACTERS[BOOLEAN] */
+		val->type = BOOLEAN;
+		decodeBoolean(stream, &val->boolean);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 50;
+		return 0;
+	case 47:
+		/* CHARACTERS[INTEGER_64] */
+		val->type = INTEGER_64;
+		decodeInteger64(stream, &val->int64);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 51;
+		return 0;
+	case 53:
+		/* CHARACTERS[STRING] */
+		val->type = STRING;
+		decodeStringValue(stream, &val->string);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 60;
+		return 0;
+	case 57:
+		/* CHARACTERS[ENUMERATION] */
+		val->type = ENUMERATION;
+		decodeNBitUnsignedInteger(stream, 3, &val->enumeration);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 61;
+		return 0;
+	case 63:
+		/* CHARACTERS[STRING] */
+		val->type = STRING;
+		decodeStringValue(stream, &val->string);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 73;
+		return 0;
+	case 65:
+		/* CHARACTERS[BINARY_HEX] */
+		val->type = BINARY_HEX;
+		decodeBinary(stream, &val->binary);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 74;
+		return 0;
+	case 76:
+		/* CHARACTERS[ENUMERATION] */
+		val->type = ENUMERATION;
+		decodeNBitUnsignedInteger(stream, 4, &val->enumeration);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 80;
+		return 0;
+	case 79:
+		/* CHARACTERS[INTEGER_64] */
+		/* xsi:type OR xsi:nil */
+		decodeNBitUnsignedInteger(stream, 1, &xsi);
+		val->type = INTEGER_64;
+		decodeInteger64(stream, &val->int64);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 81;
+		return 0;
+	case 71:
+		/* CHARACTERS[INTEGER_16] */
+		val->type = INTEGER_16;
+		decodeInteger32(stream, &val->int32);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 83;
+		return 0;
+	case 85:
+		/* CHARACTERS[ENUMERATION] */
+		val->type = ENUMERATION;
+		decodeNBitUnsignedInteger(stream, 1, &val->enumeration);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 86;
+		return 0;
+	case 88:
+		/* CHARACTERS[ENUMERATION] */
+		val->type = ENUMERATION;
+		decodeNBitUnsignedInteger(stream, 1, &val->enumeration);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 96;
+		return 0;
+	case 90:
+		/* CHARACTERS[BINARY_HEX] */
+		val->type = BINARY_HEX;
+		decodeBinary(stream, &val->binary);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 97;
+		return 0;
+	case 99:
+		/* CHARACTERS[STRING] */
+		val->type = STRING;
+		decodeStringValue(stream, &val->string);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 100;
+		return 0;
+	case 102:
+		/* CHARACTERS[ENUMERATION] */
+		val->type = ENUMERATION;
+		decodeNBitUnsignedInteger(stream, 2, &val->enumeration);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 103;
+		return 0;
+	case 366:
+		/* CHARACTERS[ENUMERATION] */
+		val->type = ENUMERATION;
+		decodeNBitUnsignedInteger(stream, 3, &val->enumeration);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 367;
+		return 0;
+	case 373:
+		/* CHARACTERS[INTEGER_16] */
+		val->type = INTEGER_16;
+		decodeInteger32(stream, &val->int32);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 376;
+		return 0;
+	case 378:
+		/* CHARACTERS[ENUMERATION] */
+		val->type = ENUMERATION;
+		decodeNBitUnsignedInteger(stream, 1, &val->enumeration);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 387;
+		return 0;
+	case 384:
+		/* CHARACTERS[STRING] */
+		val->type = STRING;
+		decodeStringValue(stream, &val->string);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 388;
+		return 0;
+	case 390:
+		/* CHARACTERS[STRING] */
+		val->type = STRING;
+		decodeStringValue(stream, &val->string);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 393;
+		return 0;
+	case 396:
+		/* CHARACTERS[STRING] */
+		val->type = STRING;
+		decodeStringValue(stream, &val->string);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 399;
+		return 0;
+	case 403:
+		/* CHARACTERS[UNSIGNED_INTEGER_32] */
+		val->type = UNSIGNED_INTEGER_32;
+		decodeUnsignedInteger32(stream, &val->uint32);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 475;
+		return 0;
+	case 477:
+		/* CHARACTERS[ENUMERATION] */
+		val->type = ENUMERATION;
+		decodeNBitUnsignedInteger(stream, 2, &val->enumeration);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 480;
+		return 0;
+	case 479:
+		/* CHARACTERS[STRING] */
+		val->type = STRING;
+		decodeStringValue(stream, &val->string);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 481;
+		return 0;
+	case 483:
+		/* CHARACTERS[ENUMERATION] */
+		val->type = ENUMERATION;
+		decodeNBitUnsignedInteger(stream, 3, &val->enumeration);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 486;
+		return 0;
+	case 490:
+		/* CHARACTERS[BINARY_HEX] */
+		val->type = BINARY_HEX;
+		decodeBinary(stream, &val->binary);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 499;
+		return 0;
+	case 492:
+		/* CHARACTERS[STRING] */
+		val->type = STRING;
+		decodeStringValue(stream, &val->string);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 500;
+		return 0;
+	case 498:
+		/* CHARACTERS[LIST] */
+		val->type = LIST;
+			return -1;
+		/* move on */
+		state->grammarStack[state->stackIndex] = 502;
+		return 0;
+	case 506:
+		/* CHARACTERS[ENUMERATION] */
+		val->type = ENUMERATION;
+		decodeNBitUnsignedInteger(stream, 2, &val->enumeration);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 508;
+		return 0;
+	case 512:
+		/* CHARACTERS[ENUMERATION] */
+		val->type = ENUMERATION;
+		decodeNBitUnsignedInteger(stream, 3, &val->enumeration);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 516;
+		return 0;
+	case 527:
+		/* CHARACTERS[BINARY_HEX] */
+		val->type = BINARY_HEX;
+		decodeBinary(stream, &val->binary);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 531;
+		return 0;
+	case 530:
+		/* CHARACTERS[STRING] */
+		val->type = STRING;
+		decodeStringValue(stream, &val->string);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 532;
+		return 0;
+	case 534:
+		/* CHARACTERS[ENUMERATION] */
+		val->type = ENUMERATION;
+		decodeNBitUnsignedInteger(stream, 2, &val->enumeration);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 539;
+		return 0;
+	case 536:
+		/* CHARACTERS[STRING] */
+		/* xsi:type OR xsi:nil */
+		decodeNBitUnsignedInteger(stream, 1, &xsi);
+		val->type = STRING;
+		decodeStringValue(stream, &val->string);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 540;
+		return 0;
+	case 542:
+		/* CHARACTERS[ENUMERATION] */
+		val->type = ENUMERATION;
+		decodeNBitUnsignedInteger(stream, 3, &val->enumeration);
+		/* move on */
+		state->grammarStack[state->stackIndex] = 543;
+		return 0;
+
+	default:
+		return -1;
+	}
+
+	return 0;
+}
+
+int exiDecodeAttribute(bitstream_t* stream, exi_state_t* state,
+		eqname_t* at, exi_value_t* val) {
+	switch (state->grammarStack[state->stackIndex]) {
+
+	default:
+		return -1;
+	}
+	return -1;
+}
+
+
+
+#endif
+

+ 61 - 0
src/codec/EXIDecoder.h

@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef EXI_DECODER_H
+#define EXI_DECODER_H
+
+#include "EXITypes.h"
+
+int exiInitDecoder(bitstream_t* stream, exi_state_t* state);
+
+int exiDecodeNextEvent(bitstream_t* stream, exi_state_t* state,
+		exi_event_t* nextEvent);
+
+int exiDecodeStartDocument(bitstream_t* stream, exi_state_t* state);
+
+int exiDecodeEndDocument(bitstream_t* stream, exi_state_t* state);
+
+int exiDecodeStartElement(bitstream_t* stream, exi_state_t* state,
+		eqname_t* se);
+
+int exiDecodeEndElement(bitstream_t* stream, exi_state_t* state,
+		eqname_t* ee);
+
+int exiDecodeCharacters(bitstream_t* stream, exi_state_t* state,
+		exi_value_t* val);
+
+int exiDecodeAttribute(bitstream_t* stream, exi_state_t* state,
+		eqname_t* at, exi_value_t* val);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+

+ 6843 - 0
src/codec/EXIEncoder.c

@@ -0,0 +1,6843 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ * <p>NOTE: Code generated by EXIdizer v0.1</p>
+ ********************************************************************/
+
+#ifndef EXI_ENCODER_C
+#define EXI_ENCODER_C
+
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "EXITypes.h"
+#include "BitOutputStream.h"
+#include "BitEncoderChannel.h"
+
+#include "EXICoder.h"
+#include "EXIHeader.h"
+#include "StringTable.h"
+
+/* ==================================== */
+
+int exiInitEncoder(bitstream_t* stream, exi_state_t* state) {
+	/* init grammar state */
+	state->stackIndex = 0;
+	state->grammarStack[0] = 0;
+	/* encode header */
+	return writeEXIHeader(stream);
+}
+
+int exiEncodeStartDocument(bitstream_t* stream, exi_state_t* state) {
+	if ( state->grammarStack[state->stackIndex] == 0 ) {
+		/* move on */
+		state->grammarStack[state->stackIndex] = 1;
+		return 0;
+	} 
+
+	return -1;
+}
+
+int exiEncodeEndDocument(bitstream_t* stream, exi_state_t* state) {
+	if ( state->grammarStack[state->stackIndex] == 2) {
+		return 0;
+	} 
+
+	return -1;
+}
+
+int exiEncodeStartElement(bitstream_t* stream, exi_state_t* state,
+		eqname_t* se) {
+	switch (state->grammarStack[state->stackIndex]) {
+	case 1:
+		/* DocContent[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}BodyElement), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupRes), START_ELEMENT({urn:iso:15118:2:2010:MsgDef}V2G_Message), START_ELEMENT_GENERIC] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 6  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDef}BodyElement) */
+			encodeNBitUnsignedInteger(stream, 0, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 3, se);
+		}
+		else if ( se->localPart == 11 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockReq) */
+			encodeNBitUnsignedInteger(stream, 1, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 5, se);
+		}
+		else if ( se->localPart == 13 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockRes) */
+			encodeNBitUnsignedInteger(stream, 2, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 6, se);
+		}
+		else if ( se->localPart == 17 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq) */
+			encodeNBitUnsignedInteger(stream, 3, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 7, se);
+		}
+		else if ( se->localPart == 19 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes) */
+			encodeNBitUnsignedInteger(stream, 4, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 8, se);
+		}
+		else if ( se->localPart == 21 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusReq) */
+			encodeNBitUnsignedInteger(stream, 5, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 9, se);
+		}
+		else if ( se->localPart == 23 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusRes) */
+			encodeNBitUnsignedInteger(stream, 6, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 10, se);
+		}
+		else if ( se->localPart == 33 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq) */
+			encodeNBitUnsignedInteger(stream, 7, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 11, se);
+		}
+		else if ( se->localPart == 35 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes) */
+			encodeNBitUnsignedInteger(stream, 8, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 12, se);
+		}
+		else if ( se->localPart == 37 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq) */
+			encodeNBitUnsignedInteger(stream, 9, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 13, se);
+		}
+		else if ( se->localPart == 39 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes) */
+			encodeNBitUnsignedInteger(stream, 10, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 14, se);
+		}
+		else if ( se->localPart == 41 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryReq) */
+			encodeNBitUnsignedInteger(stream, 11, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 15, se);
+		}
+		else if ( se->localPart == 43 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryRes) */
+			encodeNBitUnsignedInteger(stream, 12, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 16, se);
+		}
+		else if ( se->localPart == 48 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq) */
+			encodeNBitUnsignedInteger(stream, 13, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 17, se);
+		}
+		else if ( se->localPart == 50 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes) */
+			encodeNBitUnsignedInteger(stream, 14, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 18, se);
+		}
+		else if ( se->localPart == 53 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq) */
+			encodeNBitUnsignedInteger(stream, 15, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 19, se);
+		}
+		else if ( se->localPart == 55 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes) */
+			encodeNBitUnsignedInteger(stream, 16, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 20, se);
+		}
+		else if ( se->localPart == 59 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupReq) */
+			encodeNBitUnsignedInteger(stream, 17, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 21, se);
+		}
+		else if ( se->localPart == 61 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupRes) */
+			encodeNBitUnsignedInteger(stream, 18, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 22, se);
+		}
+		else if ( se->localPart == 9 && se->namespaceURI == 6 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDef}V2G_Message) */
+			encodeNBitUnsignedInteger(stream, 19, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 2;
+			/* push element on stack */
+			return exiPushStack(state, 23, se);
+		}
+		break;
+	case 5:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ 
+		if ( se->localPart == 32 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 24;
+			/* push element on stack */
+			return exiPushStack(state, 25, se);
+		}
+		break;
+	case 6:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ 
+		if ( se->localPart == 47 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 33;
+			/* push element on stack */
+			return exiPushStack(state, 34, se);
+		}
+		break;
+	case 7:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVID), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ 
+		if ( se->localPart == 26 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVID) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 52;
+			/* push element on stack */
+			return exiPushStack(state, 53, se);
+		}
+		else if ( se->localPart == 32 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus) */
+			encodeNBitUnsignedInteger(stream, 1, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 54;
+			/* push element on stack */
+			return exiPushStack(state, 25, se);
+		}
+		break;
+	case 8:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ 
+		if ( se->localPart == 47 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 84;
+			/* push element on stack */
+			return exiPushStack(state, 85, se);
+		}
+		break;
+	case 10:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ 
+		if ( se->localPart == 47 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 87;
+			/* push element on stack */
+			return exiPushStack(state, 88, se);
+		}
+		break;
+	case 11:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ContractID)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ContractID) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 98;
+			/* push element on stack */
+			return exiPushStack(state, 99, se);
+		}
+		break;
+	case 12:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ 
+		if ( se->localPart == 47 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 101;
+			/* push element on stack */
+			return exiPushStack(state, 102, se);
+		}
+		break;
+	case 13:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ 
+		if ( se->localPart == 32 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 104;
+			/* push element on stack */
+			return exiPushStack(state, 25, se);
+		}
+		break;
+	case 14:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ 
+		if ( se->localPart == 47 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 365;
+			/* push element on stack */
+			return exiPushStack(state, 366, se);
+		}
+		break;
+	case 15:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ 
+		if ( se->localPart == 32 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 368;
+			/* push element on stack */
+			return exiPushStack(state, 25, se);
+		}
+		break;
+	case 16:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ 
+		if ( se->localPart == 47 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 377;
+			/* push element on stack */
+			return exiPushStack(state, 378, se);
+		}
+		break;
+	case 17:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope), END_ELEMENT] */ 
+		if ( se->localPart == 58 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceType) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 476;
+			/* push element on stack */
+			return exiPushStack(state, 477, se);
+		}
+		else if ( se->localPart == 57 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 478;
+			/* push element on stack */
+			return exiPushStack(state, 479, se);
+		}
+		break;
+	case 18:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ 
+		if ( se->localPart == 47 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 482;
+			/* push element on stack */
+			return exiPushStack(state, 483, se);
+		}
+		break;
+	case 19:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceList)] */ 
+		if ( se->localPart == 52 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceList) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 503;
+			/* push element on stack */
+			return exiPushStack(state, 485, se);
+		}
+		break;
+	case 20:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ 
+		if ( se->localPart == 47 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 505;
+			/* push element on stack */
+			return exiPushStack(state, 506, se);
+		}
+		break;
+	case 21:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVID), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ 
+		if ( se->localPart == 26 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVID) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 509;
+			/* push element on stack */
+			return exiPushStack(state, 53, se);
+		}
+		else if ( se->localPart == 32 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus) */
+			encodeNBitUnsignedInteger(stream, 1, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 510;
+			/* push element on stack */
+			return exiPushStack(state, 25, se);
+		}
+		break;
+	case 22:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode)] */ 
+		if ( se->localPart == 47 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ResponseCode) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 511;
+			/* push element on stack */
+			return exiPushStack(state, 512, se);
+		}
+		break;
+	case 23:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Header)] */ 
+		if ( se->localPart == 4 && se->namespaceURI == 6  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Header) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 517;
+			/* push element on stack */
+			return exiPushStack(state, 518, se);
+		}
+		break;
+	case 24:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ReqLockStatus)] */ 
+		if ( se->localPart == 45 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ReqLockStatus) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 26;
+			/* push element on stack */
+			return exiPushStack(state, 27, se);
+		}
+		break;
+	case 25:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ConnectorLocked)] */ 
+		if ( se->localPart == 4 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ConnectorLocked) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 28;
+			/* push element on stack */
+			return exiPushStack(state, 27, se);
+		}
+		break;
+	case 28:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargerStandby)] */ 
+		if ( se->localPart == 0 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargerStandby) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 29;
+			/* push element on stack */
+			return exiPushStack(state, 30, se);
+		}
+		break;
+	case 33:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */ 
+		if ( se->localPart == 7 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 35;
+			/* push element on stack */
+			return exiPushStack(state, 36, se);
+		}
+		break;
+	case 36:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FatalError)] */ 
+		if ( se->localPart == 12 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FatalError) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 38;
+			/* push element on stack */
+			return exiPushStack(state, 39, se);
+		}
+		break;
+	case 38:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EVSEStandby)] */ 
+		if ( se->localPart == 7 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EVSEStandby) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 40;
+			/* push element on stack */
+			return exiPushStack(state, 30, se);
+		}
+		break;
+	case 40:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ConnectorLocked)] */ 
+		if ( se->localPart == 4 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ConnectorLocked) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 41;
+			/* push element on stack */
+			return exiPushStack(state, 27, se);
+		}
+		break;
+	case 41:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PowerSwitchClosed)] */ 
+		if ( se->localPart == 25 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PowerSwitchClosed) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 42;
+			/* push element on stack */
+			return exiPushStack(state, 43, se);
+		}
+		break;
+	case 42:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}RCD)] */ 
+		if ( se->localPart == 27 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}RCD) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 44;
+			/* push element on stack */
+			return exiPushStack(state, 45, se);
+		}
+		break;
+	case 44:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ShutDownTime)] */ 
+		if ( se->localPart == 39 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ShutDownTime) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 46;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 52:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ 
+		if ( se->localPart == 32 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 54;
+			/* push element on stack */
+			return exiPushStack(state, 25, se);
+		}
+		break;
+	case 54:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff)] */ 
+		if ( se->localPart == 63 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 55;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		else if ( se->localPart == 64 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff) */
+			encodeNBitUnsignedInteger(stream, 1, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 56;
+			/* push element on stack */
+			return exiPushStack(state, 57, se);
+		}
+		break;
+	case 55:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff)] */ 
+		if ( se->localPart == 64 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 56;
+			/* push element on stack */
+			return exiPushStack(state, 57, se);
+		}
+		break;
+	case 56:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo)] */ 
+		if ( se->localPart == 15 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 58;
+			/* push element on stack */
+			return exiPushStack(state, 59, se);
+		}
+		break;
+	case 59:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ 
+		if ( se->localPart == 16 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterID) */
+			encodeNBitUnsignedInteger(stream, 0, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 62;
+			/* push element on stack */
+			return exiPushStack(state, 63, se);
+		}
+		else if ( se->localPart == 18 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey) */
+			encodeNBitUnsignedInteger(stream, 1, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 64;
+			/* push element on stack */
+			return exiPushStack(state, 65, se);
+		}
+		else if ( se->localPart == 19 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading) */
+			encodeNBitUnsignedInteger(stream, 2, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 66;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		else if ( se->localPart == 40 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading) */
+			encodeNBitUnsignedInteger(stream, 3, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 68;
+			/* push element on stack */
+			return exiPushStack(state, 69, se);
+		}
+		else if ( se->localPart == 20 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus) */
+			encodeNBitUnsignedInteger(stream, 4, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 70;
+			/* push element on stack */
+			return exiPushStack(state, 71, se);
+		}
+		else if ( se->localPart == 41 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter) */
+			encodeNBitUnsignedInteger(stream, 5, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 72;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 62:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ 
+		if ( se->localPart == 18 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey) */
+			encodeNBitUnsignedInteger(stream, 0, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 64;
+			/* push element on stack */
+			return exiPushStack(state, 65, se);
+		}
+		else if ( se->localPart == 19 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading) */
+			encodeNBitUnsignedInteger(stream, 1, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 66;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		else if ( se->localPart == 40 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading) */
+			encodeNBitUnsignedInteger(stream, 2, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 68;
+			/* push element on stack */
+			return exiPushStack(state, 69, se);
+		}
+		else if ( se->localPart == 20 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus) */
+			encodeNBitUnsignedInteger(stream, 3, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 70;
+			/* push element on stack */
+			return exiPushStack(state, 71, se);
+		}
+		else if ( se->localPart == 41 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter) */
+			encodeNBitUnsignedInteger(stream, 4, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 72;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 64:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ 
+		if ( se->localPart == 19 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading) */
+			encodeNBitUnsignedInteger(stream, 0, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 66;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		else if ( se->localPart == 40 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading) */
+			encodeNBitUnsignedInteger(stream, 1, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 68;
+			/* push element on stack */
+			return exiPushStack(state, 69, se);
+		}
+		else if ( se->localPart == 20 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus) */
+			encodeNBitUnsignedInteger(stream, 2, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 70;
+			/* push element on stack */
+			return exiPushStack(state, 71, se);
+		}
+		else if ( se->localPart == 41 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter) */
+			encodeNBitUnsignedInteger(stream, 3, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 72;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 66:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ 
+		if ( se->localPart == 40 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 68;
+			/* push element on stack */
+			return exiPushStack(state, 69, se);
+		}
+		else if ( se->localPart == 20 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 70;
+			/* push element on stack */
+			return exiPushStack(state, 71, se);
+		}
+		else if ( se->localPart == 41 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter) */
+			encodeNBitUnsignedInteger(stream, 2, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 72;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 67:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Multiplier)] */ 
+		if ( se->localPart == 21 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Multiplier) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 75;
+			/* push element on stack */
+			return exiPushStack(state, 76, se);
+		}
+		break;
+	case 68:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ 
+		if ( se->localPart == 20 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 70;
+			/* push element on stack */
+			return exiPushStack(state, 71, se);
+		}
+		else if ( se->localPart == 41 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 72;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 70:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */ 
+		if ( se->localPart == 41 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 72;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 75:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Unit)] */ 
+		if ( se->localPart == 53 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Unit) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 77;
+			/* push element on stack */
+			return exiPushStack(state, 76, se);
+		}
+		break;
+	case 77:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Value)] */ 
+		if ( se->localPart == 54 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Value) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 78;
+			/* push element on stack */
+			return exiPushStack(state, 79, se);
+		}
+		break;
+	case 87:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEID)] */ 
+		if ( se->localPart == 3 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEID) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 89;
+			/* push element on stack */
+			return exiPushStack(state, 90, se);
+		}
+		break;
+	case 89:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */ 
+		if ( se->localPart == 7 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 91;
+			/* push element on stack */
+			return exiPushStack(state, 36, se);
+		}
+		break;
+	case 91:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent)] */ 
+		if ( se->localPart == 63 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 92;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 92:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEMaxPower)] */ 
+		if ( se->localPart == 6 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 93;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 93:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PCurrent), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo), END_ELEMENT] */ 
+		if ( se->localPart == 25 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PCurrent) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 94;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		else if ( se->localPart == 15 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 95;
+			/* push element on stack */
+			return exiPushStack(state, 59, se);
+		}
+		break;
+	case 94:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo), END_ELEMENT] */ 
+		if ( se->localPart == 15 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 95;
+			/* push element on stack */
+			return exiPushStack(state, 59, se);
+		}
+		break;
+	case 104:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ReqSwitchStatus)] */ 
+		if ( se->localPart == 46 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ReqSwitchStatus) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 105;
+			/* push element on stack */
+			return exiPushStack(state, 43, se);
+		}
+		break;
+	case 105:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile), END_ELEMENT] */ 
+		if ( se->localPart == 64 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 106;
+			/* push element on stack */
+			return exiPushStack(state, 57, se);
+		}
+		else if ( se->localPart == 0 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 107;
+			/* push element on stack */
+			return exiPushStack(state, 108, se);
+		}
+		break;
+	case 106:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile), END_ELEMENT] */ 
+		if ( se->localPart == 0 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 107;
+			/* push element on stack */
+			return exiPushStack(state, 108, se);
+		}
+		break;
+	case 108:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart)] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 109;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 109:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 110;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 110:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 111;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 111:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 112;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 112:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 113;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 113:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 114;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 114:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 115;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 115:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 116;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 116:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 117;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 117:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 118;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 118:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 119;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 119:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 120;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 120:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 121;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 121:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 122;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 122:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 123;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 123:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 124;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 124:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 125;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 125:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 126;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 126:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 127;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 127:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 128;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 128:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 129;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 129:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 130;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 130:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 131;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 131:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 132;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 132:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 133;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 133:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 134;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 134:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 135;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 135:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 136;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 136:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 137;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 137:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 138;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 138:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 139;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 139:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 140;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 140:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 141;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 141:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 142;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 142:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 143;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 143:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 144;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 144:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 145;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 145:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 146;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 146:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 147;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 147:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 148;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 148:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 149;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 149:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 150;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 150:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 151;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 151:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 152;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 152:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 153;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 153:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 154;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 154:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 155;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 155:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 156;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 156:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 157;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 157:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 158;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 158:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 159;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 159:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 160;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 160:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 161;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 161:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 162;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 162:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 163;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 163:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 164;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 164:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 165;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 165:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 166;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 166:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 167;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 167:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 168;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 168:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 169;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 169:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 170;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 170:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 171;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 171:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 172;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 172:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 173;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 173:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 174;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 174:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 175;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 175:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 176;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 176:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 177;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 177:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 178;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 178:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 179;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 179:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 180;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 180:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 181;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 181:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 182;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 182:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 183;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 183:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 184;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 184:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 185;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 185:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 186;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 186:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 187;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 187:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 188;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 188:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 189;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 189:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 190;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 190:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 191;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 191:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 192;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 192:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 193;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 193:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 194;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 194:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 195;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 195:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 196;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 196:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 197;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 197:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 198;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 198:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 199;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 199:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 200;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 200:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 201;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 201:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 202;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 202:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 203;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 203:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 204;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 204:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 205;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 205:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 206;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 206:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 207;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 207:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 208;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 208:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 209;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 209:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 210;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 210:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 211;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 211:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 212;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 212:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 213;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 213:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 214;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 214:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 215;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 215:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 216;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 216:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 217;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 217:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 218;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 218:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 219;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 219:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 220;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 220:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 221;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 221:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 222;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 222:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 223;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 223:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 224;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 224:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 225;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 225:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 226;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 226:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 227;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 227:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 228;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 228:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 229;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 229:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 230;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 230:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 231;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 231:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 232;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 232:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 233;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 233:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 234;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 234:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 235;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 235:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 236;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 236:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 237;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 237:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 238;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 238:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 239;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 239:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 240;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 240:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 241;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 241:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 242;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 242:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 243;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 243:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 244;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 244:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 245;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 245:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 246;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 246:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 247;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 247:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 248;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 248:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 249;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 249:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 250;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 250:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 251;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 251:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 252;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 252:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 253;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 253:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 254;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 254:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 255;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 255:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 256;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 256:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 257;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 257:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 258;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 258:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 259;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 259:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 260;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 260:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 261;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 261:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 262;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 262:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 263;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 263:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 264;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 264:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 265;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 265:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 266;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 266:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 267;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 267:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 268;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 268:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 269;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 269:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 270;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 270:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 271;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 271:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 272;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 272:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 273;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 273:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 274;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 274:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 275;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 275:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 276;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 276:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 277;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 277:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 278;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 278:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 279;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 279:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 280;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 280:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 281;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 281:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 282;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 282:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 283;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 283:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 284;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 284:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 285;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 285:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 286;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 286:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 287;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 287:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 288;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 288:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 289;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 289:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 290;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 290:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 291;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 291:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 292;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 292:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 293;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 293:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 294;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 294:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 295;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 295:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 296;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 296:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 297;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 297:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 298;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 298:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 299;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 299:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 300;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 300:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 301;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 301:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 302;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 302:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 303;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 303:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 304;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 304:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 305;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 305:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 306;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 306:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 307;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 307:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 308;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 308:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 309;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 309:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 310;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 310:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 311;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 311:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 312;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 312:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 313;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 313:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 314;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 314:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 315;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 315:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 316;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 316:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 317;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 317:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 318;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 318:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 319;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 319:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 320;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 320:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 321;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 321:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 322;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 322:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 323;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 323:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 324;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 324:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 325;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 325:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 326;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 326:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 327;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 327:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 328;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 328:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 329;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 329:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 330;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 330:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 331;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 331:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 332;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 332:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 333;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 333:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 334;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 334:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 335;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 335:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 336;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 336:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 337;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 337:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 338;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 338:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 339;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 339:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 340;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 340:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 341;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 341:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 342;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 342:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 343;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 343:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 344;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 344:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 345;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 345:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 346;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 346:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 347;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 347:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 348;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 348:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 349;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 349:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 350;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 350:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 351;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 351:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 352;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 352:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 353;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 353:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 354;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 354:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 355;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 355:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 356;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 356:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 357;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 357:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 358;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 358:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 359;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 359:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 360;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 360:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 361;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 361:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 362;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 362:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 363;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 363:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower)] */ 
+		if ( se->localPart == 1 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 364;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 368:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EoC)] */ 
+		if ( se->localPart == 10 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EoC) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 369;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 369:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EAmount)] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EAmount) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 370;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 370:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxPower)] */ 
+		if ( se->localPart == 28 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxPower) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 371;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 371:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxPhases)] */ 
+		if ( se->localPart == 27 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxPhases) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 372;
+			/* push element on stack */
+			return exiPushStack(state, 373, se);
+		}
+		break;
+	case 372:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxVoltage)] */ 
+		if ( se->localPart == 29 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMaxVoltage) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 374;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 374:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMinVoltage)] */ 
+		if ( se->localPart == 30 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVMinVoltage) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 375;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 377:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */ 
+		if ( se->localPart == 7 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 379;
+			/* push element on stack */
+			return exiPushStack(state, 36, se);
+		}
+		break;
+	case 379:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEVoltage)] */ 
+		if ( se->localPart == 8 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEVoltage) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 380;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 380:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEIMax)] */ 
+		if ( se->localPart == 4 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEIMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 381;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 381:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEMaxPhases)] */ 
+		if ( se->localPart == 5 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEMaxPhases) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 382;
+			/* push element on stack */
+			return exiPushStack(state, 373, se);
+		}
+		break;
+	case 382:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EnergyProvider), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable), END_ELEMENT] */ 
+		if ( se->localPart == 9 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EnergyProvider) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 383;
+			/* push element on stack */
+			return exiPushStack(state, 384, se);
+		}
+		else if ( se->localPart == 65 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 385;
+			/* push element on stack */
+			return exiPushStack(state, 386, se);
+		}
+		break;
+	case 383:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable), END_ELEMENT] */ 
+		if ( se->localPart == 65 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 385;
+			/* push element on stack */
+			return exiPushStack(state, 386, se);
+		}
+		break;
+	case 386:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Currency)] */ 
+		if ( se->localPart == 5 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Currency) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 389;
+			/* push element on stack */
+			return exiPushStack(state, 390, se);
+		}
+		break;
+	case 389:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Tariff)] */ 
+		if ( se->localPart == 42 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Tariff) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 391;
+			/* push element on stack */
+			return exiPushStack(state, 392, se);
+		}
+		break;
+	case 391:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Tariff), END_ELEMENT] */ 
+		if ( se->localPart == 42 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Tariff) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 391;
+			/* push element on stack */
+			return exiPushStack(state, 392, se);
+		}
+		break;
+	case 392:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffID)] */ 
+		if ( se->localPart == 49 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffID) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 394;
+			/* push element on stack */
+			return exiPushStack(state, 57, se);
+		}
+		break;
+	case 394:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffDescription), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntries)] */ 
+		if ( se->localPart == 44 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffDescription) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 395;
+			/* push element on stack */
+			return exiPushStack(state, 396, se);
+		}
+		else if ( se->localPart == 45 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntries) */
+			encodeNBitUnsignedInteger(stream, 1, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 397;
+			/* push element on stack */
+			return exiPushStack(state, 398, se);
+		}
+		break;
+	case 395:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntries)] */ 
+		if ( se->localPart == 45 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntries) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 397;
+			/* push element on stack */
+			return exiPushStack(state, 398, se);
+		}
+		break;
+	case 398:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntry)] */ 
+		if ( se->localPart == 47 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntry) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 400;
+			/* push element on stack */
+			return exiPushStack(state, 401, se);
+		}
+		break;
+	case 400:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntry), END_ELEMENT] */ 
+		if ( se->localPart == 47 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntry) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 400;
+			/* push element on stack */
+			return exiPushStack(state, 401, se);
+		}
+		break;
+	case 401:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart)] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 402;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 402:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 404;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 404:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 405;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 474;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 405:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 406;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 406:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 407;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 473;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 407:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 408;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 408:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 409;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 472;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 409:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 410;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 410:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 411;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 471;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 411:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 412;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 412:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 413;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 470;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 413:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 414;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 414:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 415;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 469;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 415:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 416;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 416:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 417;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 468;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 417:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 418;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 418:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 419;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 467;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 419:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 420;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 420:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 421;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 466;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 421:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 422;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 422:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 423;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 465;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 423:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 424;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 424:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 425;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 464;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 425:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 426;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 426:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 427;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 463;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 427:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 428;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 428:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 429;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 462;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 429:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 430;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 430:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 431;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 461;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 431:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 432;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 432:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 433;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 460;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 433:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 434;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 434:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 435;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 459;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 435:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 436;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 436:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 437;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 458;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 437:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 438;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 438:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 439;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 457;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 439:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 440;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 440:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 441;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 456;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 441:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 442;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 442:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 443;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 455;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 443:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 444;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 444:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 445;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 454;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 445:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 446;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 446:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 447;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 453;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 447:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 448;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 448:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 449;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		else if ( se->localPart == 6 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 452;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 449:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax)] */ 
+		if ( se->localPart == 50 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffPMax) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 450;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 450:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */ 
+		if ( se->localPart == 6 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 451;
+			/* push element on stack */
+			return exiPushStack(state, 67, se);
+		}
+		break;
+	case 452:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 449;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 453:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 447;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 454:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 445;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 455:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 443;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 456:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 441;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 457:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 439;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 458:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 437;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 459:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 435;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 460:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 433;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 461:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 431;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 462:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 429;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 463:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 427;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 464:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 425;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 465:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 423;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 466:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 421;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 467:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 419;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 468:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 417;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 469:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 415;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 470:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 413;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 471:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 411;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 472:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 409;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 473:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 407;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 474:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */ 
+		if ( se->localPart == 51 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 405;
+			/* push element on stack */
+			return exiPushStack(state, 403, se);
+		}
+		break;
+	case 476:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope), END_ELEMENT] */ 
+		if ( se->localPart == 57 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 478;
+			/* push element on stack */
+			return exiPushStack(state, 479, se);
+		}
+		break;
+	case 482:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceList), END_ELEMENT] */ 
+		if ( se->localPart == 52 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceList) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 484;
+			/* push element on stack */
+			return exiPushStack(state, 485, se);
+		}
+		break;
+	case 485:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Service)] */ 
+		if ( se->localPart == 28 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Service) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 487;
+			/* push element on stack */
+			return exiPushStack(state, 488, se);
+		}
+		break;
+	case 487:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Service), END_ELEMENT] */ 
+		if ( se->localPart == 28 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Service) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 487;
+			/* push element on stack */
+			return exiPushStack(state, 488, se);
+		}
+		break;
+	case 488:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceID)] */ 
+		if ( se->localPart == 31 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceID) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 489;
+			/* push element on stack */
+			return exiPushStack(state, 490, se);
+		}
+		break;
+	case 489:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceName), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ 
+		if ( se->localPart == 33 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceName) */
+			encodeNBitUnsignedInteger(stream, 0, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 491;
+			/* push element on stack */
+			return exiPushStack(state, 492, se);
+		}
+		else if ( se->localPart == 36 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceType) */
+			encodeNBitUnsignedInteger(stream, 1, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 493;
+			/* push element on stack */
+			return exiPushStack(state, 477, se);
+		}
+		else if ( se->localPart == 34 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope) */
+			encodeNBitUnsignedInteger(stream, 2, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 494;
+			/* push element on stack */
+			return exiPushStack(state, 479, se);
+		}
+		else if ( se->localPart == 30 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails) */
+			encodeNBitUnsignedInteger(stream, 3, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 495;
+			/* push element on stack */
+			return exiPushStack(state, 496, se);
+		}
+		else if ( se->localPart == 24 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption) */
+			encodeNBitUnsignedInteger(stream, 4, 3);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 497;
+			/* push element on stack */
+			return exiPushStack(state, 498, se);
+		}
+		break;
+	case 491:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ 
+		if ( se->localPart == 36 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceType) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 493;
+			/* push element on stack */
+			return exiPushStack(state, 477, se);
+		}
+		else if ( se->localPart == 34 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 494;
+			/* push element on stack */
+			return exiPushStack(state, 479, se);
+		}
+		else if ( se->localPart == 30 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails) */
+			encodeNBitUnsignedInteger(stream, 2, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 495;
+			/* push element on stack */
+			return exiPushStack(state, 496, se);
+		}
+		else if ( se->localPart == 24 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption) */
+			encodeNBitUnsignedInteger(stream, 3, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 497;
+			/* push element on stack */
+			return exiPushStack(state, 498, se);
+		}
+		break;
+	case 493:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ 
+		if ( se->localPart == 34 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceScope) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 494;
+			/* push element on stack */
+			return exiPushStack(state, 479, se);
+		}
+		else if ( se->localPart == 30 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 495;
+			/* push element on stack */
+			return exiPushStack(state, 496, se);
+		}
+		else if ( se->localPart == 24 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption) */
+			encodeNBitUnsignedInteger(stream, 2, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 497;
+			/* push element on stack */
+			return exiPushStack(state, 498, se);
+		}
+		break;
+	case 494:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ 
+		if ( se->localPart == 30 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceDetails) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 495;
+			/* push element on stack */
+			return exiPushStack(state, 496, se);
+		}
+		else if ( se->localPart == 24 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption) */
+			encodeNBitUnsignedInteger(stream, 1, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 497;
+			/* push element on stack */
+			return exiPushStack(state, 498, se);
+		}
+		break;
+	case 495:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption)] */ 
+		if ( se->localPart == 24 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}PaymentOption) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 497;
+			/* push element on stack */
+			return exiPushStack(state, 498, se);
+		}
+		break;
+	case 503:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVPubKey)] */ 
+		if ( se->localPart == 31 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVPubKey) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 504;
+			/* push element on stack */
+			return exiPushStack(state, 65, se);
+		}
+		break;
+	case 505:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringAuthPubKey), END_ELEMENT] */ 
+		if ( se->localPart == 16 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringAuthPubKey) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 507;
+			/* push element on stack */
+			return exiPushStack(state, 65, se);
+		}
+		break;
+	case 509:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus)] */ 
+		if ( se->localPart == 32 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PEVStatus) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 510;
+			/* push element on stack */
+			return exiPushStack(state, 25, se);
+		}
+		break;
+	case 511:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEID)] */ 
+		if ( se->localPart == 3 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEID) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 513;
+			/* push element on stack */
+			return exiPushStack(state, 90, se);
+		}
+		break;
+	case 513:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus)] */ 
+		if ( se->localPart == 7 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EVSEStatus) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 514;
+			/* push element on stack */
+			return exiPushStack(state, 36, se);
+		}
+		break;
+	case 514:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent)] */ 
+		if ( se->localPart == 63 && se->namespaceURI == 4  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TCurrent) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 515;
+			/* push element on stack */
+			return exiPushStack(state, 47, se);
+		}
+		break;
+	case 517:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Body)] */ 
+		if ( se->localPart == 0 && se->namespaceURI == 6  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Body) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 519;
+			/* push element on stack */
+			return exiPushStack(state, 520, se);
+		}
+		break;
+	case 518:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}SessionInformation)] */ 
+		if ( se->localPart == 8 && se->namespaceURI == 6  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDef}SessionInformation) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 521;
+			/* push element on stack */
+			return exiPushStack(state, 522, se);
+		}
+		break;
+	case 520:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}BodyElement), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupRes), END_ELEMENT] */ 
+		if ( se->localPart == 2 && se->namespaceURI == 6  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDef}BodyElement) */
+			encodeNBitUnsignedInteger(stream, 0, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 3, se);
+		}
+		else if ( se->localPart == 11 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockReq) */
+			encodeNBitUnsignedInteger(stream, 1, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 5, se);
+		}
+		else if ( se->localPart == 13 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockRes) */
+			encodeNBitUnsignedInteger(stream, 2, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 6, se);
+		}
+		else if ( se->localPart == 17 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq) */
+			encodeNBitUnsignedInteger(stream, 3, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 7, se);
+		}
+		else if ( se->localPart == 19 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes) */
+			encodeNBitUnsignedInteger(stream, 4, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 8, se);
+		}
+		else if ( se->localPart == 21 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusReq) */
+			encodeNBitUnsignedInteger(stream, 5, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 9, se);
+		}
+		else if ( se->localPart == 23 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusRes) */
+			encodeNBitUnsignedInteger(stream, 6, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 10, se);
+		}
+		else if ( se->localPart == 33 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq) */
+			encodeNBitUnsignedInteger(stream, 7, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 11, se);
+		}
+		else if ( se->localPart == 35 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes) */
+			encodeNBitUnsignedInteger(stream, 8, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 12, se);
+		}
+		else if ( se->localPart == 37 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq) */
+			encodeNBitUnsignedInteger(stream, 9, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 13, se);
+		}
+		else if ( se->localPart == 39 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes) */
+			encodeNBitUnsignedInteger(stream, 10, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 14, se);
+		}
+		else if ( se->localPart == 41 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryReq) */
+			encodeNBitUnsignedInteger(stream, 11, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 15, se);
+		}
+		else if ( se->localPart == 43 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryRes) */
+			encodeNBitUnsignedInteger(stream, 12, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 16, se);
+		}
+		else if ( se->localPart == 48 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq) */
+			encodeNBitUnsignedInteger(stream, 13, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 17, se);
+		}
+		else if ( se->localPart == 50 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes) */
+			encodeNBitUnsignedInteger(stream, 14, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 18, se);
+		}
+		else if ( se->localPart == 53 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq) */
+			encodeNBitUnsignedInteger(stream, 15, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 19, se);
+		}
+		else if ( se->localPart == 55 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes) */
+			encodeNBitUnsignedInteger(stream, 16, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 20, se);
+		}
+		else if ( se->localPart == 59 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupReq) */
+			encodeNBitUnsignedInteger(stream, 17, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 21, se);
+		}
+		else if ( se->localPart == 61 && se->namespaceURI == 4 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupRes) */
+			encodeNBitUnsignedInteger(stream, 18, 5);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 544;
+			/* push element on stack */
+			return exiPushStack(state, 22, se);
+		}
+		break;
+	case 521:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Notification), START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security), END_ELEMENT] */ 
+		if ( se->localPart == 6 && se->namespaceURI == 6  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Notification) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 523;
+			/* push element on stack */
+			return exiPushStack(state, 524, se);
+		}
+		else if ( se->localPart == 7 && se->namespaceURI == 6 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 525;
+			/* push element on stack */
+			return exiPushStack(state, 69, se);
+		}
+		break;
+	case 522:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SessionID)] */ 
+		if ( se->localPart == 37 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SessionID) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 526;
+			/* push element on stack */
+			return exiPushStack(state, 527, se);
+		}
+		break;
+	case 523:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security), END_ELEMENT] */ 
+		if ( se->localPart == 7 && se->namespaceURI == 6  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 525;
+			/* push element on stack */
+			return exiPushStack(state, 69, se);
+		}
+		break;
+	case 524:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */ 
+		if ( se->localPart == 13 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultCode) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 533;
+			/* push element on stack */
+			return exiPushStack(state, 534, se);
+		}
+		else if ( se->localPart == 14 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 535;
+			/* push element on stack */
+			return exiPushStack(state, 536, se);
+		}
+		else if ( se->localPart == 10 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList) */
+			encodeNBitUnsignedInteger(stream, 2, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 537;
+			/* push element on stack */
+			return exiPushStack(state, 538, se);
+		}
+		break;
+	case 526:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceSessionID), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion), END_ELEMENT] */ 
+		if ( se->localPart == 35 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceSessionID) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 528;
+			/* push element on stack */
+			return exiPushStack(state, 527, se);
+		}
+		else if ( se->localPart == 26 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 529;
+			/* push element on stack */
+			return exiPushStack(state, 530, se);
+		}
+		break;
+	case 528:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion), END_ELEMENT] */ 
+		if ( se->localPart == 26 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 529;
+			/* push element on stack */
+			return exiPushStack(state, 530, se);
+		}
+		break;
+	case 533:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */ 
+		if ( se->localPart == 14 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg) */
+			encodeNBitUnsignedInteger(stream, 0, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 535;
+			/* push element on stack */
+			return exiPushStack(state, 536, se);
+		}
+		else if ( se->localPart == 10 && se->namespaceURI == 5 ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList) */
+			encodeNBitUnsignedInteger(stream, 1, 2);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 537;
+			/* push element on stack */
+			return exiPushStack(state, 538, se);
+		}
+		break;
+	case 535:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */ 
+		if ( se->localPart == 10 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList) */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 537;
+			/* push element on stack */
+			return exiPushStack(state, 538, se);
+		}
+		break;
+	case 538:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Event)] */ 
+		if ( se->localPart == 9 && se->namespaceURI == 5  ) {
+			/* START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Event) */
+			/* move on */
+			state->grammarStack[state->stackIndex] = 541;
+			/* push element on stack */
+			return exiPushStack(state, 542, se);
+		}
+		break;
+
+	default:
+		return -1;
+	}
+
+	return -1;
+}
+
+int exiEncodeEndElement(bitstream_t* stream, exi_state_t* state,
+		eqname_t* ee) {
+	switch (state->grammarStack[state->stackIndex]) {
+	case 3:
+		/* FirstStartTag(xsi:type)StartTag[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 26:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 29:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 31:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 32:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 35:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 37:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 46:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 48:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 49:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 50:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 51:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 58:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 60:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 61:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 72:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 70:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 68:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 66:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 3, 2);
+		break;
+	case 64:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 4, 3);
+		break;
+	case 62:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 5, 3);
+		break;
+	case 59:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterID), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterPubKey), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}SigMeterReading), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}MeterStatus), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TMeter), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 6, 3);
+		break;
+	case 73:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 74:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 78:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 80:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 81:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 82:
+		/* Element[START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
+		encodeNBitUnsignedInteger(stream, 1, 2);
+		break;
+	case 69:
+		/* FirstStartTag(xsi:type)StartTag[ATTRIBUTE_GENERIC, START_ELEMENT_GENERIC, END_ELEMENT, CHARACTERS_GENERIC[STRING]] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 83:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 84:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 86:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 9:
+		/* FirstStartTagStartTag[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 95:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 94:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 93:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PCurrent), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeterInfo), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 96:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 97:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 98:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 100:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 101:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 103:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 107:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 106:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 105:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}Tariff), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ChargingProfile), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 364:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 362:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 360:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 358:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 356:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 354:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 352:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 350:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 348:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 346:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 344:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 342:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 340:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 338:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 336:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 334:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 332:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 330:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 328:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 326:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 324:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 322:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 320:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 318:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 316:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 314:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 312:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 310:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 308:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 306:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 304:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 302:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 300:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 298:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 296:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 294:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 292:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 290:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 288:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 286:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 284:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 282:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 280:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 278:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 276:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 274:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 272:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 270:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 268:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 266:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 264:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 262:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 260:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 258:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 256:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 254:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 252:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 250:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 248:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 246:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 244:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 242:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 240:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 238:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 236:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 234:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 232:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 230:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 228:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 226:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 224:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 222:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 220:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 218:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 216:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 214:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 212:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 210:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 208:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 206:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 204:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 202:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 200:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 198:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 196:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 194:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 192:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 190:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 188:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 186:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 184:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 182:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 180:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 178:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 176:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 174:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 172:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 170:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 168:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 166:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 164:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 162:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 160:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 158:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 156:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 154:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 152:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 150:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 148:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 146:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 144:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 142:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 140:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 138:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 136:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 134:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 132:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 130:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 128:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 126:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 124:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 122:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 120:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 118:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 116:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 114:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 112:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 110:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ChargingProfileEntryStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 365:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 367:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 375:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 376:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 385:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 383:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 382:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}EnergyProvider), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}TariffTable), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 387:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 388:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 391:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Tariff), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 393:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 397:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 399:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 400:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffEntry), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 451:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 450:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 452:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 448:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 453:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 446:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 454:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 444:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 455:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 442:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 456:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 440:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 457:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 438:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 458:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 436:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 459:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 434:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 460:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 432:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 461:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 430:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 462:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 428:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 463:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 426:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 464:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 424:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 465:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 422:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 466:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 420:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 467:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 418:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 468:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 416:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 469:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 414:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 470:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 412:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 471:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 410:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 472:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 408:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 473:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 406:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 474:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 404:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}TariffStart), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EPrice), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 475:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 478:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 476:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 17:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceType), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceScope), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 480:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 481:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 484:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 482:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceList), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 486:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 487:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}Service), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 497:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 499:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 500:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 501:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 502:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 504:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 507:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 505:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringAuthPubKey), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 508:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 510:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 515:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 516:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 519:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 525:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 523:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 521:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Notification), START_ELEMENT({urn:iso:15118:2:2010:MsgDef}Security), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 529:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 528:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 526:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ServiceSessionID), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}ProtocolVersion), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 531:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 532:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 537:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 535:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 1, 1);
+		break;
+	case 533:
+		/* Element[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 2, 2);
+		break;
+	case 524:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultCode), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}FaultMsg), START_ELEMENT({urn:iso:15118:2:2010:MsgDataTypes}EventList), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 3, 2);
+		break;
+	case 539:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 540:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 541:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 543:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 544:
+		/* Element[END_ELEMENT] */
+		/* no event code to write */
+		break;
+	case 520:
+		/* FirstStartTagStartTag[START_ELEMENT({urn:iso:15118:2:2010:MsgDef}BodyElement), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}LineLockRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringReceiptRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}MeteringStatusRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PaymentDetailsRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDeliveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}PowerDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServiceDiscoveryRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}ServicePaymentSelectionRes), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupReq), START_ELEMENT({urn:iso:15118:2:2010:MsgBody}SessionSetupRes), END_ELEMENT] */
+		encodeNBitUnsignedInteger(stream, 19, 5);
+		break;
+
+	default:
+		return -1;
+	}
+
+	// pop item
+	return exiPopStack(state);
+}
+
+int exiEncodeCharacters(bitstream_t* stream, exi_state_t* state,
+		exi_value_t* val) {
+	switch (state->grammarStack[state->stackIndex]) {
+	case 27:
+		if (val->type == BOOLEAN) {
+			/* CHARACTERS[BOOLEAN] */
+			encodeBoolean(stream, val->boolean);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 31;
+			return 0;
+		}
+		break;
+	case 30:
+		if (val->type == BOOLEAN) {
+			/* CHARACTERS[BOOLEAN] */
+			encodeBoolean(stream, val->boolean);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 32;
+			return 0;
+		}
+		break;
+	case 34:
+		if (val->type == ENUMERATION) {
+			/* CHARACTERS[ENUMERATION] */
+			encodeNBitUnsignedInteger(stream, 2, val->enumeration);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 37;
+			return 0;
+		}
+		break;
+	case 39:
+		if (val->type == BOOLEAN) {
+			/* CHARACTERS[BOOLEAN] */
+			encodeBoolean(stream, val->boolean);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 48;
+			return 0;
+		}
+		break;
+	case 43:
+		if (val->type == BOOLEAN) {
+			/* CHARACTERS[BOOLEAN] */
+			encodeBoolean(stream, val->boolean);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 49;
+			return 0;
+		}
+		break;
+	case 45:
+		if (val->type == BOOLEAN) {
+			/* CHARACTERS[BOOLEAN] */
+			encodeBoolean(stream, val->boolean);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 50;
+			return 0;
+		}
+		break;
+	case 47:
+		if (val->type == INTEGER_64) {
+			/* CHARACTERS[INTEGER_64] */
+			encodeInteger64(stream, val->int64);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 51;
+			return 0;
+		}
+		break;
+	case 53:
+		if (val->type == STRING) {
+			/* CHARACTERS[STRING] */
+			encodeStringValue(stream, &val->string);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 60;
+			return 0;
+		}
+		break;
+	case 57:
+		if (val->type == ENUMERATION) {
+			/* CHARACTERS[ENUMERATION] */
+			encodeNBitUnsignedInteger(stream, 3, val->enumeration);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 61;
+			return 0;
+		}
+		break;
+	case 63:
+		if (val->type == STRING) {
+			/* CHARACTERS[STRING] */
+			encodeStringValue(stream, &val->string);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 73;
+			return 0;
+		}
+		break;
+	case 65:
+		if (val->type == BINARY_HEX) {
+			/* CHARACTERS[BINARY_HEX] */
+			encodeBinary(stream, &val->binary);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 74;
+			return 0;
+		}
+		break;
+	case 76:
+		if (val->type == ENUMERATION) {
+			/* CHARACTERS[ENUMERATION] */
+			encodeNBitUnsignedInteger(stream, 4, val->enumeration);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 80;
+			return 0;
+		}
+		break;
+	case 79:
+		if (val->type == INTEGER_64) {
+			/* CHARACTERS[INTEGER_64] */
+			/* xsi:type OR xsi:nil */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			encodeInteger64(stream, val->int64);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 81;
+			return 0;
+		}
+		break;
+	case 71:
+		if (val->type == INTEGER_16) {
+			/* CHARACTERS[INTEGER_16] */
+			encodeInteger32(stream, val->int32);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 83;
+			return 0;
+		}
+		break;
+	case 85:
+		if (val->type == ENUMERATION) {
+			/* CHARACTERS[ENUMERATION] */
+			encodeNBitUnsignedInteger(stream, 1, val->enumeration);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 86;
+			return 0;
+		}
+		break;
+	case 88:
+		if (val->type == ENUMERATION) {
+			/* CHARACTERS[ENUMERATION] */
+			encodeNBitUnsignedInteger(stream, 1, val->enumeration);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 96;
+			return 0;
+		}
+		break;
+	case 90:
+		if (val->type == BINARY_HEX) {
+			/* CHARACTERS[BINARY_HEX] */
+			encodeBinary(stream, &val->binary);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 97;
+			return 0;
+		}
+		break;
+	case 99:
+		if (val->type == STRING) {
+			/* CHARACTERS[STRING] */
+			encodeStringValue(stream, &val->string);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 100;
+			return 0;
+		}
+		break;
+	case 102:
+		if (val->type == ENUMERATION) {
+			/* CHARACTERS[ENUMERATION] */
+			encodeNBitUnsignedInteger(stream, 2, val->enumeration);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 103;
+			return 0;
+		}
+		break;
+	case 366:
+		if (val->type == ENUMERATION) {
+			/* CHARACTERS[ENUMERATION] */
+			encodeNBitUnsignedInteger(stream, 3, val->enumeration);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 367;
+			return 0;
+		}
+		break;
+	case 373:
+		if (val->type == INTEGER_16) {
+			/* CHARACTERS[INTEGER_16] */
+			encodeInteger32(stream, val->int32);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 376;
+			return 0;
+		}
+		break;
+	case 378:
+		if (val->type == ENUMERATION) {
+			/* CHARACTERS[ENUMERATION] */
+			encodeNBitUnsignedInteger(stream, 1, val->enumeration);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 387;
+			return 0;
+		}
+		break;
+	case 384:
+		if (val->type == STRING) {
+			/* CHARACTERS[STRING] */
+			encodeStringValue(stream, &val->string);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 388;
+			return 0;
+		}
+		break;
+	case 390:
+		if (val->type == STRING) {
+			/* CHARACTERS[STRING] */
+			encodeStringValue(stream, &val->string);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 393;
+			return 0;
+		}
+		break;
+	case 396:
+		if (val->type == STRING) {
+			/* CHARACTERS[STRING] */
+			encodeStringValue(stream, &val->string);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 399;
+			return 0;
+		}
+		break;
+	case 403:
+		if (val->type == UNSIGNED_INTEGER_32) {
+			/* CHARACTERS[UNSIGNED_INTEGER_32] */
+			encodeUnsignedInteger32(stream, val->uint32);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 475;
+			return 0;
+		}
+		break;
+	case 477:
+		if (val->type == ENUMERATION) {
+			/* CHARACTERS[ENUMERATION] */
+			encodeNBitUnsignedInteger(stream, 2, val->enumeration);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 480;
+			return 0;
+		}
+		break;
+	case 479:
+		if (val->type == STRING) {
+			/* CHARACTERS[STRING] */
+			encodeStringValue(stream, &val->string);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 481;
+			return 0;
+		}
+		break;
+	case 483:
+		if (val->type == ENUMERATION) {
+			/* CHARACTERS[ENUMERATION] */
+			encodeNBitUnsignedInteger(stream, 3, val->enumeration);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 486;
+			return 0;
+		}
+		break;
+	case 490:
+		if (val->type == BINARY_HEX) {
+			/* CHARACTERS[BINARY_HEX] */
+			encodeBinary(stream, &val->binary);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 499;
+			return 0;
+		}
+		break;
+	case 492:
+		if (val->type == STRING) {
+			/* CHARACTERS[STRING] */
+			encodeStringValue(stream, &val->string);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 500;
+			return 0;
+		}
+		break;
+			/* List not supported yet */
+	case 498:
+		if (val->type == LIST) {
+			/* CHARACTERS[LIST] */
+			/* List not supported yet */
+			return -1;
+			/* move on */
+			state->grammarStack[state->stackIndex] = 502;
+			return 0;
+		}
+		break;
+	case 506:
+		if (val->type == ENUMERATION) {
+			/* CHARACTERS[ENUMERATION] */
+			encodeNBitUnsignedInteger(stream, 2, val->enumeration);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 508;
+			return 0;
+		}
+		break;
+	case 512:
+		if (val->type == ENUMERATION) {
+			/* CHARACTERS[ENUMERATION] */
+			encodeNBitUnsignedInteger(stream, 3, val->enumeration);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 516;
+			return 0;
+		}
+		break;
+	case 527:
+		if (val->type == BINARY_HEX) {
+			/* CHARACTERS[BINARY_HEX] */
+			encodeBinary(stream, &val->binary);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 531;
+			return 0;
+		}
+		break;
+	case 530:
+		if (val->type == STRING) {
+			/* CHARACTERS[STRING] */
+			encodeStringValue(stream, &val->string);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 532;
+			return 0;
+		}
+		break;
+	case 534:
+		if (val->type == ENUMERATION) {
+			/* CHARACTERS[ENUMERATION] */
+			encodeNBitUnsignedInteger(stream, 2, val->enumeration);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 539;
+			return 0;
+		}
+		break;
+	case 536:
+		if (val->type == STRING) {
+			/* CHARACTERS[STRING] */
+			/* xsi:type OR xsi:nil */
+			encodeNBitUnsignedInteger(stream, 0, 1);
+			encodeStringValue(stream, &val->string);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 540;
+			return 0;
+		}
+		break;
+	case 542:
+		if (val->type == ENUMERATION) {
+			/* CHARACTERS[ENUMERATION] */
+			encodeNBitUnsignedInteger(stream, 3, val->enumeration);
+			/* move on */
+			state->grammarStack[state->stackIndex] = 543;
+			return 0;
+		}
+		break;
+
+	default:
+		return -1;
+	}
+
+	return -1;
+}
+
+int exiEncodeAttribute(bitstream_t* stream, exi_state_t* state,
+		eqname_t* at, exi_value_t* val) {
+	switch (state->grammarStack[state->stackIndex]) {
+
+	default:
+		return -1;
+	}
+
+	return -1;
+}
+
+
+#endif
+

+ 61 - 0
src/codec/EXIEncoder.h

@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef EXI_ENCODER_H
+#define EXI_ENCODER_H
+
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+
+#include "EXITypes.h"
+
+int exiInitEncoder(bitstream_t* stream, exi_state_t* state);
+
+int exiEncodeStartDocument(bitstream_t* stream, exi_state_t* state);
+
+int exiEncodeEndDocument(bitstream_t* stream, exi_state_t* state);
+
+int exiEncodeStartElement(bitstream_t* stream, exi_state_t* state,
+				eqname_t* se);
+
+int exiEncodeEndElement(bitstream_t* stream, exi_state_t* state, eqname_t* ee);
+
+int exiEncodeCharacters(bitstream_t* stream, exi_state_t* state,
+		exi_value_t* val);
+
+int exiEncodeAttribute(bitstream_t* stream, exi_state_t* state, eqname_t* at,
+		exi_value_t* val);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+

+ 64 - 0
src/codec/EXIHeader.c

@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "EXIHeader.h"
+#include "BitInputStream.h"
+#include "BitOutputStream.h"
+#include "BitDecoderChannel.h"
+#include "BitEncoderChannel.h"
+
+#ifndef EXI_HEADER_C
+#define EXI_HEADER_C
+
+int readEXIHeader(bitstream_t* stream) {
+	uint8_t header;
+	int errn = readBits(stream, 8, &header);
+	if (errn < 0) {
+		return errn;
+	}
+	if(header == '$') {
+		/*	we do not support "EXI Cookie" */
+		errn = -1;
+	} else if ( header & 0x20 ) {
+		/* we do not support "Presence Bit for EXI Options" */
+		errn = -2;
+	} else {
+		/* Yes, a *simple* header */
+		errn = 0;
+	}
+	return errn;
+}
+
+int writeEXIHeader(bitstream_t* stream) {
+	return writeBits(stream, 144, 8);
+}
+
+
+#endif
+
+

+ 46 - 0
src/codec/EXIHeader.h

@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+
+#include "EXITypes.h"
+
+#ifndef EXI_HEADER_H
+#define EXI_HEADER_H
+
+int readEXIHeader(bitstream_t* stream);
+
+int writeEXIHeader(bitstream_t* stream);
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif

+ 195 - 0
src/codec/EXITypes.h

@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <string.h>
+#include <stdint.h>
+
+#ifndef EXI_TYPES_H
+#define EXI_TYPES_H
+
+#define BITS_IN_BYTE 8
+
+#define EXI_ELEMENT_STACK_SIZE 16
+
+/* EXI automaton methods prefixes such as "inline" etc. */
+#ifndef EXI_MPFX
+#define EXI_MPFX
+#endif
+
+#define FLOAT_EXPONENT_SPECIAL_VALUES -16384
+#define FLOAT_MANTISSA_INFINITY 1
+#define FLOAT_MANTISSA_MINUS_INFINITY -1
+#define FLOAT_MANTISSA_NOT_A_NUMBER 0
+
+typedef struct {
+	/*	Integer Array */
+	size_t size; /* array size */
+	uint8_t* data; /* int data array */
+	size_t* pos; /* next position in array */
+	/* Current byte buffer & its remaining bit capacity */
+	uint8_t buffer;
+	size_t capacity;
+} bitstream_t;
+
+typedef struct {
+	/* Bytes Size and array container */
+	size_t size;
+	uint8_t* data;
+	/* current length (len <= size) */
+	size_t len;
+} bytes_t;
+
+/* Universal Character Set (UCS) strings */
+typedef struct {
+	/* UCS size and UCS character container*/
+	size_t size;
+	uint32_t* codepoints;
+	/* current length == number of code-points, (len <= size) */
+	size_t len;
+} string_ucs_t;
+
+/* ASCII strings */
+typedef struct {
+	size_t size;
+	char* ascii;
+	/* current length == number of characters, (len <= size) */
+	size_t len;
+} string_ascii_t;
+
+
+typedef struct {
+	/* range of the mantissa is -(2^63) to 2^63-1 */
+	int64_t mantissa;
+	/* range of the exponent is - (2^14-1) to 2^14-1 */
+	int32_t exponent; /* base-10 */
+} float_me_t;
+
+
+typedef enum
+{
+	/* Binary */
+	BINARY_BASE64, BINARY_HEX,
+	/* Boolean */
+	BOOLEAN,
+	/* Decimal */
+	DECIMAL,
+	/* Float */
+	FLOAT, DOUBLE,
+	/* N-Bit Integer */
+	NBIT_INTEGER_32, NBIT_INTEGER_64, NBIT_INTEGER_BIG,
+	/* Unsigned Integer */
+	UNSIGNED_INTEGER_16, UNSIGNED_INTEGER_32, UNSIGNED_INTEGER_64, UNSIGNED_INTEGER_BIG,
+	/* (Signed) Integer */
+	INTEGER_16, INTEGER_32, INTEGER_64, INTEGER_BIG,
+	/* Datetime */
+	DATETIME,
+	/* String */
+	STRING,
+	/* Enumeration */
+	ENUMERATION,
+	/* List */
+	LIST
+}  exi_datatype_t;
+
+
+typedef enum
+{
+	START_DOCUMENT,
+	END_DOCUMENT,
+	START_ELEMENT,
+	START_ELEMENT_GENERIC, /* not supported yet */
+	END_ELEMENT,
+	CHARACTERS,
+	CHARACTERS_GENERIC, /* not supported yet */
+	ATTRIBUTE,
+	ATTRIBUTE_GENERIC, /* not supported yet */
+	/* error state */
+	ERROR
+} exi_event_t;
+
+/* TODO list support */
+typedef struct {
+	/* List container with memory size */
+	size_t size;
+	uint8_t* data;
+	/* list item type */
+	exi_datatype_t type;
+	/* number of items */
+	size_t len;
+} list_t;
+
+
+typedef struct {
+	unsigned int namespaceURI;
+	unsigned int localPart;
+} eqname_t;
+
+typedef struct  {
+	/* stack of grammar states and elements */
+	size_t grammarStack [EXI_ELEMENT_STACK_SIZE];
+	eqname_t elementStack [EXI_ELEMENT_STACK_SIZE];
+	size_t stackIndex;
+	/* event-code */
+	uint8_t eventCode;
+} exi_state_t;
+
+
+typedef struct  {
+	/* union of base types */
+	union {
+		int boolean;
+		int8_t int8;
+		uint8_t uint8;
+		uint32_t uint32;
+		int32_t int32;
+		int64_t int64;
+		uint8_t enumeration;
+	};
+	/* Bytes, Strings and Lists are not base types */
+	bytes_t binary;
+	string_ucs_t string;
+	list_t list;
+
+	/* value datatype */
+	exi_datatype_t type;
+} exi_value_t;
+
+
+/*
+ * ERROR-Codes
+ */
+# define EXI_ERROR_OUT_OF_BOUNDS -100
+
+# define EXI_ERROR_UNKOWN_EVENT_CODE -110
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif

+ 113 - 0
src/codec/StringTable.c

@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#ifndef STRING_TABLE_C
+#define STRING_TABLE_C
+
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "StringTable.h"
+#include "EXITypes.h"
+#include "BitInputStream.h"
+#include "BitDecoderChannel.h"
+
+#include "StringTableEntries.h"
+
+#include "assert.h"
+
+int exiGetUri(size_t uriID, const char** uri) {
+	if ( uriID < stringTable.len ) {
+		*uri = stringTable.uris[uriID];
+	} else {
+		return EXI_ERROR_OUT_OF_BOUNDS;
+	}
+
+	return 0;
+}
+
+int exiGetUriLength(size_t* uriLength) {
+	*uriLength =  stringTable.len;
+	return 0;
+}
+
+
+int exiGetUriID(const char* uri, size_t* uriID) {
+	unsigned int i;
+	for(i=0; i<stringTable.len; i++) {
+		if ( strcmp ( uri, stringTable.uris[i] ) == 0 ) {
+			*uriID = i;
+			return 0;
+		}
+	}
+	return -1;
+}
+
+
+int exiGetLocalName(size_t uriID, size_t localNameID, const char** localName) {
+	if ( uriID < stringTable.len ) {
+		if ( localNameID < stringTable.localNames[uriID].len ) {
+			*localName = stringTable.localNames[uriID].entries[localNameID];
+			// strcpy(stringTable.localNames[uriID].entries[localNameID], localName);
+		} else {
+			return EXI_ERROR_OUT_OF_BOUNDS;
+		}
+	} else {
+		return EXI_ERROR_OUT_OF_BOUNDS;
+	}
+	return 0;
+}
+
+int exiGetLocalNameLength(size_t uriID, size_t* localNameLength) {
+	if ( uriID < stringTable.len ) {
+		*localNameLength =  stringTable.localNames[uriID].len;
+	} else {
+		return EXI_ERROR_OUT_OF_BOUNDS;
+	}
+
+	return 0;
+}
+
+int exiGetLocalNameID(size_t uriID, const char* localName, size_t* localNameID) {
+	unsigned int i;
+	if ( uriID < stringTable.len ) {
+		/* TODO binary search */
+		for(i=0; i<stringTable.localNames[uriID].len; i++) {
+			if ( strcmp ( localName, stringTable.localNames[uriID].entries[i] ) == 0 ) {
+				*localNameID = i;
+				return 0;
+			}
+		}
+	} else {
+		return EXI_ERROR_OUT_OF_BOUNDS;
+	}
+
+	return -1;
+}
+
+#endif
+

+ 53 - 0
src/codec/StringTable.h

@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef STRING_TABLE_H
+#define STRING_TABLE_H
+
+#include "EXITypes.h"
+
+int exiGetUri(size_t uriID, const char** uri);
+
+int exiGetUriLength(size_t* uriLength);
+
+int exiGetUriID(const char* uri, size_t* uriID);
+
+int exiGetLocalName(size_t uriID, size_t localNameID, const char** localName);
+
+int exiGetLocalNameLength(size_t uriID, size_t* localNameLength);
+
+int exiGetLocalNameID(size_t uriID, const char* localName, size_t* localNameID);
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+

+ 124 - 0
src/codec/StringTableEntries.c

@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#ifndef STRING_TABLE_ENTRIES_C
+#define STRING_TABLE_ENTRIES_C
+
+#include "StringTableEntries.h"
+
+
+/* ==================================== */
+/* String Table Population */
+
+/* localName entries for URI id = 0 */
+const char * localNames0[] = {
+ NULL 
+};
+/* localName entries for URI id = 1 */
+const char * localNames1[] = {
+  "base",  "id",  "lang",  "space"
+};
+/* localName entries for URI id = 2 */
+const char * localNames2[] = {
+  "nil",  "type"
+};
+/* localName entries for URI id = 3 */
+const char * localNames3[] = {
+  "ENTITIES",  "ENTITY",  "ID",  "IDREF",  "IDREFS",
+  "NCName",  "NMTOKEN",  "NMTOKENS",  "NOTATION",  "Name",
+  "QName",  "anySimpleType",  "anyType",  "anyURI",  "base64Binary",
+  "boolean",  "byte",  "date",  "dateTime",  "decimal",
+  "double",  "duration",  "float",  "gDay",  "gMonth",
+  "gMonthDay",  "gYear",  "gYearMonth",  "hexBinary",  "int",
+  "integer",  "language",  "long",  "negativeInteger",  "nonNegativeInteger",
+  "nonPositiveInteger",  "normalizedString",  "positiveInteger",  "short",  "string",
+  "time",  "token",  "unsignedByte",  "unsignedInt",  "unsignedLong",
+  "unsignedShort"
+};
+/* localName entries for URI id = 4 */
+const char * localNames4[] = {
+  "ChargingProfile",  "ContractID",  "EAmount",  "EVSEID",  "EVSEIMax",
+  "EVSEMaxPhases",  "EVSEMaxPower",  "EVSEStatus",  "EVSEVoltage",  "EnergyProvider",
+  "EoC",  "LineLockReq",  "LineLockReqType",  "LineLockRes",  "LineLockResType",
+  "MeterInfo",  "MeteringAuthPubKey",  "MeteringReceiptReq",  "MeteringReceiptReqType",  "MeteringReceiptRes",
+  "MeteringReceiptResType",  "MeteringStatusReq",  "MeteringStatusReqType",  "MeteringStatusRes",  "MeteringStatusResType",
+  "PCurrent",  "PEVID",  "PEVMaxPhases",  "PEVMaxPower",  "PEVMaxVoltage",
+  "PEVMinVoltage",  "PEVPubKey",  "PEVStatus",  "PaymentDetailsReq",  "PaymentDetailsReqType",
+  "PaymentDetailsRes",  "PaymentDetailsResType",  "PowerDeliveryReq",  "PowerDeliveryReqType",  "PowerDeliveryRes",
+  "PowerDeliveryResType",  "PowerDiscoveryReq",  "PowerDiscoveryReqType",  "PowerDiscoveryRes",  "PowerDiscoveryResType",
+  "ReqLockStatus",  "ReqSwitchStatus",  "ResponseCode",  "ServiceDiscoveryReq",  "ServiceDiscoveryReqType",
+  "ServiceDiscoveryRes",  "ServiceDiscoveryResType",  "ServiceList",  "ServicePaymentSelectionReq",  "ServicePaymentSelectionReqType",
+  "ServicePaymentSelectionRes",  "ServicePaymentSelectionResType",  "ServiceScope",  "ServiceType",  "SessionSetupReq",
+  "SessionSetupReqType",  "SessionSetupRes",  "SessionSetupResType",  "TCurrent",  "Tariff",
+  "TariffTable"
+};
+/* localName entries for URI id = 5 */
+const char * localNames5[] = {
+  "ChargerStandby",  "ChargingProfileEntryMaxPower",  "ChargingProfileEntryStart",  "ChargingProfileType",  "ConnectorLocked",
+  "Currency",  "EPrice",  "EVSEStandby",  "EVSEStatusType",  "Event",
+  "EventList",  "EventListType",  "FatalError",  "FaultCode",  "FaultMsg",
+  "FloatingValueType",  "MeterID",  "MeterInfoType",  "MeterPubKey",  "MeterReading",
+  "MeterStatus",  "Multiplier",  "NotificationType",  "PEVStatusType",  "PaymentOption",
+  "PowerSwitchClosed",  "ProtocolVersion",  "RCD",  "Service",  "ServiceDescriptionType",
+  "ServiceDetails",  "ServiceID",  "ServiceListType",  "ServiceName",  "ServiceScope",
+  "ServiceSessionID",  "ServiceType",  "SessionID",  "SessionInformationType",  "ShutDownTime",
+  "SigMeterReading",  "TMeter",  "Tariff",  "TariffDescrType",  "TariffDescription",
+  "TariffEntries",  "TariffEntriesType",  "TariffEntry",  "TariffEntryType",  "TariffID",
+  "TariffPMax",  "TariffStart",  "TariffTableType",  "Unit",  "Value",
+  "contractIDType",  "currencyType",  "energyProviderType",  "eventEntryType",  "evseIDType",
+  "fatalErrorType",  "faultCodeType",  "lockStatusType",  "maxPhasesType",  "meterIDType",
+  "meterStatusType",  "paymentOptionListType",  "paymentOptionType",  "pevIDType",  "protocolVersionType",
+  "pubKeyType",  "rcdType",  "responseCode_LineLockType",  "responseCode_MeteringReceiptType",  "responseCode_MeteringStatusType",
+  "responseCode_PaymentDetailsType",  "responseCode_PowerDeliveryType",  "responseCode_PowerDiscoveryType",  "responseCode_ServiceDiscoveryType",  "responseCode_ServicePaymentSelectionType",
+  "responseCode_SessionSetupType",  "serviceDetailsType",  "serviceIDType",  "serviceNameType",  "serviceScopeType",
+  "serviceTypeType",  "sessionIDType",  "standbyType",  "switchStatusType",  "tariffDescriptionType",
+  "tariffIDType",  "tariffStartType",  "timeType",  "unitMultiplierType",  "unitSymbolType"
+
+};
+/* localName entries for URI id = 6 */
+const char * localNames6[] = {
+  "Body",  "BodyBaseType",  "BodyElement",  "BodyType",  "Header",
+  "HeaderType",  "Notification",  "Security",  "SessionInformation",  "V2G_Message"
+
+};
+struct exiPartition localNamePartitions[7] = {
+ { 0, localNames0 },
+ { 4, localNames1 },
+ { 2, localNames2 },
+ { 46, localNames3 },
+ { 66, localNames4 },
+ { 95, localNames5 },
+ { 10, localNames6 }
+};
+const char * uris[] = {
+  "",  "http://www.w3.org/XML/1998/namespace",  "http://www.w3.org/2001/XMLSchema-instance",  "http://www.w3.org/2001/XMLSchema",  "urn:iso:15118:2:2010:MsgBody",  "urn:iso:15118:2:2010:MsgDataTypes",  "urn:iso:15118:2:2010:MsgDef"
+};
+struct exiStringTable stringTable = { 7, uris, localNamePartitions };
+
+
+
+
+#endif
+

+ 60 - 0
src/codec/StringTableEntries.h

@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#ifndef STRING_TABLE_ENTRIES_H
+#define STRING_TABLE_ENTRIES_H
+
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+
+/* ==================================== */
+/* String Table Structures */
+
+struct exiPartition {
+	/* length of array */
+	size_t len;
+	/* array of string entries */
+	const char** entries;
+};
+
+struct exiStringTable {
+	/* length of both arrays (uris & localNames) */
+	size_t len;
+	/* URI entries*/
+	const char** uris;
+	/* localName entries divided by URI */
+	struct exiPartition * localNames;
+};
+
+
+/* ==================================== */
+/* String Table Population */
+
+extern struct exiStringTable stringTable;
+
+#endif
+

+ 64 - 0
src/codec/UCSString.c

@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+#include <stdint.h>
+
+#include "BitDecoderChannel.h"
+#include "BitInputStream.h"
+#include "EXITypes.h"
+
+#ifndef UCS_STRING_C
+#define UCS_STRING_C
+
+int toUCSString(char* chars, string_ucs_t* s) {
+	unsigned int i;
+	s->len = strlen(chars);
+
+	if (s->len <= s->size) {
+		for(i=0; i<s->len; i++) {
+			s->codepoints[i] = chars[i];
+		}
+		return 0;
+	} else {
+		return -1;
+	}
+}
+
+/* Note: fails if string contains non ASCII characters */
+int toASCIIString(string_ucs_t* string, char* outASCII) {
+	unsigned int i;
+	for(i=0; i<string->len; i++) {
+		outASCII[i] = (char)string->codepoints[i];
+	}
+	outASCII[string->len] = '\0';
+
+	return 0;
+}
+
+#endif
+

+ 48 - 0
src/codec/UCSString.h

@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ ********************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "EXITypes.h"
+
+// TODO utf8/cstring//wchar_t/char16_t/char32_t methods
+
+
+#ifndef UCS_STRING_H
+#define UCS_STRING_H
+
+int toUCSString(char* chars, string_ucs_t* s);
+
+// Note: fails if string contains non ASCII characters
+int toASCIIString(string_ucs_t* string, char* outASCII);
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif

+ 218 - 0
src/test/main_codec.c

@@ -0,0 +1,218 @@
+/*
+ * Copyright (C) 2007-2010 Siemens AG
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*******************************************************************
+ *
+ * @author Daniel.Peintner.EXT@siemens.com
+ * @version 0.1
+ * @contact Joerg.Heuer@siemens.com
+ *
+ * <p>Sample program to illustrate how to read an EXI stream and
+ *  directly write it again to an output</p>
+ *
+ *  <p>e.g., data/test/sessionSetupReq.xml_SCHEMA.exi out/test/sessionSetupReq.xml_SCHEMA.exi</p>
+ ********************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "EXIDecoder.h"
+#include "StringTable.h"
+#include "EXIEncoder.h"
+#include "EXITypes.h"
+#include "Bitstream.h"
+
+
+int main(int argc, char *argv[]) {
+
+	int errn = 0;
+	unsigned int i;
+
+	bitstream_t iStream, oStream;
+	size_t posDecode, posEncode;
+
+	// EXI set-up
+	exi_state_t stateDecode;
+	exi_state_t stateEncode;
+	exi_event_t event;
+	eqname_t eqn;
+	exi_value_t val;
+
+	// BINARY memory allocation
+	uint8_t data[10];
+	bytes_t bytes = { 10, data };
+
+	// STRING memory allocation
+	uint32_t codepoints[50];
+	string_ucs_t string = { 50, codepoints };
+
+	const char * localName;
+	const char * namespaceURI;
+
+	int noEndOfDocument = 1; /* true */
+
+	if (argc != 3) {
+		printf("Usage: %s exiInput exiOutput\n", argv[0]);
+		return -1;
+	}
+
+	/* parse EXI stream to internal byte structures  */
+	toBitstream(argv[1], &iStream);
+
+	// input
+	posDecode = 0;
+	iStream.pos = &posDecode;
+	iStream.buffer = 0;
+	iStream.capacity = 0;
+
+	// output
+	posEncode = 0;
+	oStream.data = malloc(sizeof(uint8_t)*iStream.size);
+	oStream.size = iStream.size;
+	oStream.pos = &posEncode;
+	oStream.buffer = 0;
+	oStream.capacity = 8;
+
+	val.binary = bytes;
+	val.string = string;
+
+	/* init decoder (read header, set initial state) */
+	exiInitDecoder(&iStream, &stateDecode);
+
+	/* init encoder (write header, set initial state) */
+	exiInitEncoder(&oStream, &stateEncode);
+
+	printf("[DECODE] >>> EXI  >>> [ENCODE] \n");
+
+	do {
+		if (errn < 0) {
+			printf("[Encode-ERROR] %d \n", errno);
+			return errn;
+		}
+
+		errn = exiDecodeNextEvent(&iStream, &stateDecode, &event);
+		if (errn < 0) {
+			printf("[Decode-ERROR] %d \n", errno);
+			return errn;
+		}
+
+		switch (event) {
+		case START_DOCUMENT:
+			// decode
+			errn = exiDecodeStartDocument(&iStream, &stateDecode);
+			if (errn < 0) {
+				printf("[Decode-ERROR] %d \n", errno);
+				return errn;
+			}
+			printf(">> START_DOCUMENT \n");
+			// encode
+			errn = exiEncodeStartDocument(&oStream, &stateEncode);
+			break;
+		case END_DOCUMENT:
+			// decode
+			errn = exiDecodeEndDocument(&iStream, &stateDecode);
+			if (errn < 0) {
+				printf("[Decode-ERROR] %d \n", errno);
+				return errn;
+			}
+			printf(">> END_DOCUMENT \n");
+			// encode
+			errn = exiEncodeEndDocument(&oStream, &stateEncode);
+			/* signalize end of document */
+			noEndOfDocument = 0; /* false */
+			break;
+		case START_ELEMENT:
+			// decode
+			errn = exiDecodeStartElement(&iStream, &stateDecode, &eqn);
+			if (errn < 0) {
+				printf("[Decode-ERROR] %d \n", errno);
+				return errn;
+			}
+			exiGetLocalName(eqn.namespaceURI, eqn.localPart, &localName);
+			exiGetUri(eqn.namespaceURI, &namespaceURI);
+			printf(">> SE {%s}%s \n", namespaceURI, localName);
+			// encode
+			errn = exiEncodeStartElement(&oStream, &stateEncode, &eqn);
+			break;
+		case END_ELEMENT:
+			// decode
+			errn = exiDecodeEndElement(&iStream, &stateDecode, &eqn);
+			if (errn < 0) {
+				printf("[Decode-ERROR] %d \n", errno);
+				return errn;
+			}
+			exiGetLocalName(eqn.namespaceURI, eqn.localPart, &localName);
+			exiGetUri(eqn.namespaceURI, &namespaceURI);
+			printf("<< EE {%s}%s \n", namespaceURI, localName);
+			// encode
+			errn = exiEncodeEndElement(&oStream, &stateEncode, &eqn);
+			break;
+		case CHARACTERS:
+			// decode
+			errn = exiDecodeCharacters(&iStream, &stateDecode, &val);
+			if (errn < 0) {
+				printf("[Decode-ERROR] %d \n", errno);
+				return errn;
+			}
+			if (val.type == INTEGER_BIG) {
+				printf(" CH int64 : %lld \n", val.int64);
+			} else if (val.type == BINARY_BASE64 || val.type == BINARY_HEX) {
+				printf(" CH Binary (len == %d) : ", val.binary.len);
+				for(i=0; i<val.binary.len; i++) {
+					printf(" [%d]", val.binary.data[i]);
+				}
+				printf("\n");
+			} else if (val.type == BOOLEAN) {
+				printf(" CH Boolean : %d \n", val.boolean);
+			} else if (val.type == STRING) {
+				printf(" CH String (len==%d) : '", val.string.len);
+				for(i=0;i<val.string.len; i++) {
+					printf("%c", (char)val.string.codepoints[i]);
+				}
+				printf("'\n");
+			} else {
+				printf(" CH ?? \n");
+			}
+			// encode
+			errn = exiEncodeCharacters(&oStream, &stateEncode, &val);
+			break;
+		case ATTRIBUTE:
+			// decode
+			errn = exiDecodeAttribute(&iStream, &stateDecode, &eqn, &val);
+			if (errn < 0) {
+				printf("[Decode-ERROR] %d \n", errno);
+				return errn;
+			}
+			exiGetLocalName(eqn.namespaceURI, eqn.localPart, &localName);
+			exiGetUri(eqn.namespaceURI, &namespaceURI);
+			printf(" AT {%s}%s \n", namespaceURI, localName);
+			// encode
+			errn = exiEncodeAttribute(&oStream, &stateEncode, &eqn, &val);
+			break;
+		default:
+			// ERROR
+			return -1;
+		}
+
+	} while (noEndOfDocument);
+
+	/* write to file */
+	writeBytesToFile(oStream.data, iStream.size, argv[2]);
+
+	return 0;
+}
+