Forráskód Böngészése

Add Download Response (not completed)

Sasan Torabkheslat 5 éve
szülő
commit
0c8be1b07d
15 módosított fájl, 1435 hozzáadás és 466 törlés
  1. 345 426
      .idea/workspace.xml
  2. 2 2
      cwmp.Download.res.xml
  3. 1 1
      cwmp.Inform.req.xml
  4. 2 2
      cwmp.Upload.res.xml
  5. 46 2
      cwmp.wsdl
  6. 4 2
      cwmp.xsd
  7. 8 2
      main.cpp
  8. 441 1
      soapC.cpp
  9. 224 0
      soapH.h
  10. 85 7
      soapReadme.md
  11. 70 12
      soapStub.h
  12. 188 5
      soapcwmpService.cpp
  13. 10 2
      soapcwmpService.h
  14. 2 2
      stdsoap2.cpp
  15. 7 0
      trapi.h

+ 345 - 426
.idea/workspace.xml

@@ -14,45 +14,22 @@
     </configurations>
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="6938f4e3-b9b8-4c34-bea6-8fc5ace411e6" name="Default Changelist" comment="fix timezone for GenieACS">
-      <change afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/json.hpp" afterDir="false" />
+    <list default="true" id="6938f4e3-b9b8-4c34-bea6-8fc5ace411e6" name="Default Changelist" comment="">
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/3.7.2/CMakeCCompiler.cmake" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/3.7.2/CMakeCXXCompiler.cmake" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/3.7.2/CMakeDetermineCompilerABI_C.bin" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/3.7.2/CMakeDetermineCompilerABI_CXX.bin" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/3.7.2/CMakeSystem.cmake" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/3.7.2/CompilerIdC/CMakeCCompilerId.c" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/3.7.2/CompilerIdC/a.out" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/3.7.2/CompilerIdCXX/CMakeCXXCompilerId.cpp" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/3.7.2/CompilerIdCXX/a.out" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/CMakeError.log" beforeDir="false" afterPath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/CMakeError.log" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/CMakeOutput.log" beforeDir="false" afterPath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/CMakeOutput.log" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/FDIACS.dir/C.includecache" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/FDIACS.dir/CXX.includecache" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/FDIACS.dir/depend.internal" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/FDIACS.dir/depend.make" beforeDir="false" afterPath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/FDIACS.dir/depend.make" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/FDIACS.dir/httppost.c.o" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/FDIACS.dir/httppost.cpp.o" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/FDIACS.dir/main.cpp.o" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/FDIACS.dir/soapC.cpp.o" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/FDIACS.dir/soapcwmpService.cpp.o" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/FDIACS.dir/stdsoap2.cpp.o" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/FDIACS.dir/zbx.cpp.o" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/Makefile.cmake" beforeDir="false" afterPath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/Makefile.cmake" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/Progress/1" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/Progress/2" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/Progress/3" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/Progress/4" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/Progress/5" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/Progress/count.txt" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/clion-log.txt" beforeDir="false" afterPath="$PROJECT_DIR$/cmake-build-debug/CMakeFiles/clion-log.txt" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/FDIACS" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/RECV.log" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/SENT.log" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/cmake-build-debug/TEST.log" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/cwmp.Download.res.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cwmp.Download.res.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cwmp.Inform.req.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cwmp.Inform.req.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cwmp.Upload.res.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cwmp.Upload.res.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cwmp.wsdl" beforeDir="false" afterPath="$PROJECT_DIR$/cwmp.wsdl" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/cwmp.xsd" beforeDir="false" afterPath="$PROJECT_DIR$/cwmp.xsd" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/main.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/main.cpp" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/soapC.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/soapC.cpp" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/soapH.h" beforeDir="false" afterPath="$PROJECT_DIR$/soapH.h" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/soapReadme.md" beforeDir="false" afterPath="$PROJECT_DIR$/soapReadme.md" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/soapStub.h" beforeDir="false" afterPath="$PROJECT_DIR$/soapStub.h" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/soapcwmpService.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/soapcwmpService.cpp" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/soapcwmpService.h" beforeDir="false" afterPath="$PROJECT_DIR$/soapcwmpService.h" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/stdsoap2.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/stdsoap2.cpp" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/trapi.h" beforeDir="false" afterPath="$PROJECT_DIR$/trapi.h" afterDir="false" />
     </list>
     <ignored path="$PROJECT_DIR$/cmake-build-debug/" />
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
@@ -67,8 +44,8 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/main.cpp">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-552">
-              <caret line="167" column="65" selection-start-line="167" selection-start-column="65" selection-end-line="167" selection-end-column="65" />
+            <state relative-caret-position="200">
+              <caret line="154" column="11" selection-start-line="154" selection-start-column="11" selection-end-line="154" selection-end-column="11" />
               <folding>
                 <element signature="e#464#648#0" />
                 <element signature="e#649#715#0" />
@@ -76,6 +53,7 @@
                 <element signature="e#968#999#0" />
                 <element signature="e#5581#6601#0" />
                 <element signature="e#6603#7289#0" />
+                <element signature="e#7291#8323#0" />
                 <element signature="e#8326#10694#0" />
                 <element signature="e#12859#31996#0" />
                 <element signature="e#15761#15794#0" />
@@ -86,28 +64,10 @@
         </entry>
       </file>
       <file pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/soapcwmpService.h">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="363">
-              <caret line="140" lean-forward="true" selection-start-line="140" selection-end-line="140" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/soapH.h">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="75">
-              <caret line="2458" column="4" selection-start-line="2458" selection-start-column="4" selection-end-line="2458" selection-end-column="4" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/soapcwmpService.cpp">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="1889">
-              <caret line="389" selection-start-line="389" selection-end-line="389" />
+            <state relative-caret-position="264">
+              <caret line="292" column="31" lean-forward="true" selection-start-line="292" selection-start-column="31" selection-end-line="292" selection-end-column="31" />
               <folding>
                 <element signature="e#0#614#0" />
                 <element signature="e#646#784#0" />
@@ -136,31 +96,38 @@
                 <element signature="e#4953#5424#0" />
                 <element signature="e#5921#6035#0" />
                 <element signature="e#6048#6106#0" />
-                <element signature="e#6243#7153#0" />
-                <element signature="e#7993#8053#0" />
-                <element signature="e#8055#9703#0" />
-                <element signature="e#9706#11724#0" />
-                <element signature="e#11726#13768#0" />
-                <element signature="e#13770#14578#0" />
-                <element signature="e#14580#16622#0" />
-                <element signature="e#16624#18762#0" />
-                <element signature="e#18764#20902#0" />
-                <element signature="e#20904#22706#0" />
-                <element signature="e#22708#24462#0" />
-                <element signature="e#24464#26290#0" />
-                <element signature="e#26292#28190#0" />
-                <element signature="e#28192#30114#0" />
-                <element signature="e#30116#31870#0" />
+                <element signature="e#6243#7179#0" />
+                <element signature="e#8147#8207#0" />
+                <element signature="e#13297#15315#0" />
+                <element signature="e#15317#17359#0" />
+                <element signature="e#17361#18169#0" />
+                <element signature="e#18171#20213#0" />
+                <element signature="e#20215#22353#0" />
+                <element signature="e#22355#24493#0" />
+                <element signature="e#24495#26297#0" />
+                <element signature="e#26299#28053#0" />
+                <element signature="e#28055#29881#0" />
+                <element signature="e#29883#31781#0" />
+                <element signature="e#31783#33705#0" />
+                <element signature="e#33707#35461#0" />
+                <element signature="e#35463#37407#0" />
+                <element signature="e#37409#39387#0" />
+                <element signature="e#36241#36561#0" />
+                <element signature="e#36562#38307#0" />
+                <element signature="e#38309#39421#0" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/soapStub.h">
+        <entry file="file://$PROJECT_DIR$/soapcwmpService.h">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="64">
-              <caret line="1110" column="11" selection-start-line="1110" selection-start-column="11" selection-end-line="1110" selection-end-column="11" />
+            <state relative-caret-position="336">
+              <caret line="145" column="39" selection-start-line="145" selection-start-column="39" selection-end-line="145" selection-end-column="39" />
+              <folding>
+                <element signature="e#0#612#0" />
+              </folding>
             </state>
           </provider>
         </entry>
@@ -169,9 +136,6 @@
   </component>
   <component name="FindInProjectRecents">
     <findStrings>
-      <find>IMEI</find>
-      <find>Status</find>
-      <find>LANEthernetInterfaceConfig</find>
       <find>DHCPServerEnable</find>
       <find>LAN1Enable</find>
       <find>ConnectionRequestURL</find>
@@ -184,7 +148,6 @@
       <find>WANEthernetInterfaceConfig</find>
       <find>gSOAP/2.8</find>
       <find>Data required for operation</find>
-      <find>204</find>
       <find>SOAP_NO_DATA</find>
       <find>10000</find>
       <find>No Content</find>
@@ -199,10 +162,20 @@
       <find>DownloadResponse</find>
       <find>__cwmp__DownloadResponse</find>
       <find>*CommandKey=&quot;reboot&quot;</find>
+      <find>NO</find>
+      <find>NO_DA</find>
+      <find>NO_BOD</find>
+      <find>204</find>
     </findStrings>
   </component>
   <component name="Git.Settings">
     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+    <option name="PUSH_TAGS">
+      <GitPushTagMode>
+        <option name="argument" value="--follow-tags" />
+        <option name="title" value="Current Branch" />
+      </GitPushTagMode>
+    </option>
   </component>
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
@@ -210,13 +183,14 @@
         <option value="$USER_HOME$/Library/Caches/CLion2018.3/.remote/192.168.0.154_22/8475b696-d6ff-4afa-994e-c4b54dd29918/usr/local/include/stdsoap2.h" />
         <option value="$PROJECT_DIR$/ZBXSender/zabbix_sender.cpp" />
         <option value="$PROJECT_DIR$/zbx.h" />
-        <option value="$PROJECT_DIR$/soapcwmpService.h" />
         <option value="$PROJECT_DIR$/zbx.cpp" />
         <option value="$PROJECT_DIR$/influxdb.h" />
-        <option value="$PROJECT_DIR$/soapcwmpService.cpp" />
         <option value="$PROJECT_DIR$/CMakeLists.txt" />
         <option value="$PROJECT_DIR$/stdsoap2.cpp" />
+        <option value="$PROJECT_DIR$/trapi.h" />
         <option value="$PROJECT_DIR$/main.cpp" />
+        <option value="$PROJECT_DIR$/soapcwmpService.h" />
+        <option value="$PROJECT_DIR$/soapcwmpService.cpp" />
       </list>
     </option>
   </component>
@@ -311,7 +285,7 @@
       <workItem from="1575063631744" duration="39743000" />
       <workItem from="1575470455404" duration="18124000" />
       <workItem from="1575747610607" duration="1922000" />
-      <workItem from="1577522322161" duration="1250000" />
+      <workItem from="1577522322161" duration="6073000" />
     </task>
     <task id="LOCAL-00001" summary="Disable InfluxDB">
       <created>1572183659791</created>
@@ -327,11 +301,18 @@
       <option name="project" value="LOCAL" />
       <updated>1575465371849</updated>
     </task>
-    <option name="localTasksCounter" value="3" />
+    <task id="LOCAL-00003" summary="fix SOAP_IO_KEEPALIVE">
+      <created>1577523962271</created>
+      <option name="number" value="00003" />
+      <option name="presentableId" value="LOCAL-00003" />
+      <option name="project" value="LOCAL" />
+      <updated>1577523962272</updated>
+    </task>
+    <option name="localTasksCounter" value="4" />
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="225625000" />
+    <option name="totallyTimeSpent" value="230448000" />
   </component>
   <component name="TodoView" selected-index="3">
     <todo-panel id="selected-file">
@@ -345,8 +326,8 @@
   <component name="ToolWindowManager">
     <frame x="0" y="0" width="1280" height="800" extended-state="6" />
     <layout>
-      <window_info active="true" content_ui="combo" id="Project" order="0" sideWeight="0.4739726" visible="true" weight="0.25767368" />
-      <window_info id="Structure" order="1" sideWeight="0.5260274" side_tool="true" weight="0.23909532" />
+      <window_info content_ui="combo" id="Project" order="0" sideWeight="0.47285068" visible="true" weight="0.25767368" />
+      <window_info id="Structure" order="1" sideWeight="0.5271493" side_tool="true" visible="true" weight="0.25767368" />
       <window_info id="Favorites" order="2" side_tool="true" />
       <window_info anchor="bottom" id="Message" order="0" />
       <window_info anchor="bottom" id="Find" order="1" weight="0.32739726" />
@@ -355,9 +336,9 @@
       <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
       <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
       <window_info anchor="bottom" id="TODO" order="6" weight="0.32876712" />
-      <window_info anchor="bottom" id="File Transfer" order="7" visible="true" weight="0.31506848" />
+      <window_info anchor="bottom" id="File Transfer" order="7" weight="0.31506848" />
       <window_info anchor="bottom" id="Database Changes" order="8" />
-      <window_info anchor="bottom" id="Messages" order="9" weight="0.39452055" />
+      <window_info active="true" anchor="bottom" id="Messages" order="9" visible="true" weight="0.39452055" />
       <window_info anchor="bottom" id="Terminal" order="10" weight="0.3260274" />
       <window_info anchor="bottom" id="Event Log" order="11" side_tool="true" />
       <window_info anchor="bottom" id="Version Control" order="12" weight="0.32876712" />
@@ -373,14 +354,14 @@
     <option name="version" value="1" />
   </component>
   <component name="VcsManagerConfiguration">
+    <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="false" />
     <option name="CHECK_CODE_CLEANUP_BEFORE_PROJECT_COMMIT" value="true" />
     <MESSAGE value="Disable InfluxDB" />
     <MESSAGE value="Create Json format compatible with GenieACS" />
     <MESSAGE value="fix timezone for GenieACS" />
-    <option name="LAST_COMMIT_MESSAGE" value="fix timezone for GenieACS" />
-    <option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
-    <option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="true" />
-    <option name="REARRANGE_BEFORE_PROJECT_COMMIT" value="true" />
+    <MESSAGE value="fix SOAP_IO_KEEPALIVE" />
+    <MESSAGE value="Add Download Response (not completed)" />
+    <option name="LAST_COMMIT_MESSAGE" value="Add Download Response (not completed)" />
   </component>
   <component name="XDebuggerManager">
     <watches-manager>
@@ -479,13 +460,6 @@
     <entry file="file://$PROJECT_DIR$/cwmp.Upload.req.xml">
       <provider selected="true" editor-type-id="text-editor" />
     </entry>
-    <entry file="file://$PROJECT_DIR$/trapi.h">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="523">
-          <caret line="92" selection-start-line="92" selection-end-line="92" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/tr-069.h">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="-2042">
@@ -597,13 +571,6 @@
       <provider selected="true" editor-type-id="text-editor" />
     </entry>
     <entry file="file://$PROJECT_DIR$/influxdb.h" />
-    <entry file="file://$PROJECT_DIR$/soapC.cpp">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="201">
-          <caret line="4047" column="33" selection-start-line="4047" selection-start-column="20" selection-end-line="4047" selection-end-column="33" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$USER_HOME$/Library/Caches/CLion2018.3/.remote/192.168.0.154_22/e9dd1ecb-683b-455d-93f3-bda676ea4f16/usr/local/include/stdsoap2.h">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="192">
@@ -618,10 +585,38 @@
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/CMakeLists.txt">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="75">
+          <caret line="5" column="16" selection-start-line="5" selection-start-column="16" selection-end-line="5" selection-end-column="16" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/soapStub.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="94">
+          <caret line="1112" column="11" selection-start-line="1112" selection-start-column="11" selection-end-line="1112" selection-end-column="11" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/soapH.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="75">
+          <caret line="2458" column="4" selection-start-line="2458" selection-start-column="4" selection-end-line="2458" selection-end-column="4" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/trapi.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="280">
+          <caret line="105" column="62" selection-start-line="105" selection-start-column="62" selection-end-line="105" selection-end-column="62" />
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/stdsoap2.cpp">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="285885">
-          <caret line="19059" column="21" selection-start-line="19059" selection-start-column="17" selection-end-line="19059" selection-end-column="21" />
+        <state relative-caret-position="122">
+          <caret line="19060" column="36" selection-start-line="19060" selection-start-column="36" selection-end-line="19060" selection-end-column="36" />
           <folding>
             <element signature="e#2635#2680#0" expanded="true" />
             <element signature="e#2741#2763#0" expanded="true" />
@@ -698,288 +693,241 @@
             <element signature="e#127807#130586#0" expanded="true" />
             <element signature="e#130874#132211#0" expanded="true" />
             <element signature="e#132472#133729#0" expanded="true" />
-            <element signature="e#133990#135759#0" expanded="true" />
-            <element signature="e#136020#136177#0" expanded="true" />
-            <element signature="e#136438#138070#0" expanded="true" />
-            <element signature="e#138303#138404#0" expanded="true" />
-            <element signature="e#138637#138738#0" expanded="true" />
-            <element signature="e#139026#154513#0" expanded="true" />
-            <element signature="e#154744#154951#0" expanded="true" />
-            <element signature="e#155182#156639#0" expanded="true" />
-            <element signature="e#156870#157632#0" expanded="true" />
-            <element signature="e#157862#159507#0" expanded="true" />
-            <element signature="e#159768#166613#0" expanded="true" />
-            <element signature="e#167050#167182#0" expanded="true" />
-            <element signature="e#168771#168906#0" expanded="true" />
-            <element signature="e#168933#168970#0" expanded="true" />
-            <element signature="e#169047#169077#0" expanded="true" />
-            <element signature="e#170239#171039#0" expanded="true" />
-            <element signature="e#171208#171258#0" expanded="true" />
-            <element signature="e#172972#173010#0" expanded="true" />
-            <element signature="e#174048#174710#0" expanded="true" />
-            <element signature="e#176138#176626#0" expanded="true" />
-            <element signature="e#177136#177882#0" expanded="true" />
-            <element signature="e#178303#178376#0" expanded="true" />
-            <element signature="e#178561#178583#0" expanded="true" />
-            <element signature="e#178790#178924#0" expanded="true" />
-            <element signature="e#179526#179548#0" expanded="true" />
-            <element signature="e#179844#179866#0" expanded="true" />
-            <element signature="e#180301#180323#0" expanded="true" />
-            <element signature="e#180758#180780#0" expanded="true" />
-            <element signature="e#181180#181202#0" expanded="true" />
-            <element signature="e#181646#181668#0" expanded="true" />
-            <element signature="e#182158#182180#0" expanded="true" />
-            <element signature="e#182655#182677#0" expanded="true" />
-            <element signature="e#183143#183165#0" expanded="true" />
-            <element signature="e#183570#183762#0" expanded="true" />
-            <element signature="e#184117#184139#0" expanded="true" />
-            <element signature="e#184785#184807#0" expanded="true" />
-            <element signature="e#185246#185745#0" expanded="true" />
-            <element signature="e#188473#190242#0" expanded="true" />
-            <element signature="e#190430#190482#0" expanded="true" />
-            <element signature="e#190762#190909#0" expanded="true" />
-            <element signature="e#191489#191826#0" expanded="true" />
-            <element signature="e#192435#192575#0" expanded="true" />
-            <element signature="e#193254#193394#0" expanded="true" />
-            <element signature="e#194279#194399#0" expanded="true" />
-            <element signature="e#194636#194755#0" expanded="true" />
-            <element signature="e#194876#194898#0" expanded="true" />
-            <element signature="e#195416#195503#0" expanded="true" />
-            <element signature="e#195842#214424#0" expanded="true" />
-            <element signature="e#215329#215409#0" expanded="true" />
-            <element signature="e#215699#215791#0" expanded="true" />
-            <element signature="e#216361#216390#0" expanded="true" />
-            <element signature="e#217251#217683#0" expanded="true" />
-            <element signature="e#217914#217970#0" expanded="true" />
-            <element signature="e#218228#218493#0" expanded="true" />
-            <element signature="e#219144#219233#0" expanded="true" />
-            <element signature="e#220007#220414#0" expanded="true" />
-            <element signature="e#221014#221155#0" expanded="true" />
-            <element signature="e#221478#223598#0" expanded="true" />
-            <element signature="e#223749#223884#0" expanded="true" />
-            <element signature="e#224038#224144#0" expanded="true" />
-            <element signature="e#225389#225513#0" expanded="true" />
-            <element signature="e#226105#227149#0" expanded="true" />
-            <element signature="e#227905#228059#0" expanded="true" />
-            <element signature="e#230324#231057#0" expanded="true" />
-            <element signature="e#233198#233443#0" expanded="true" />
-            <element signature="e#234324#234353#0" expanded="true" />
-            <element signature="e#235152#235272#0" expanded="true" />
-            <element signature="e#235712#235741#0" expanded="true" />
-            <element signature="e#237756#239092#0" expanded="true" />
-            <element signature="e#244785#245039#0" expanded="true" />
-            <element signature="e#245673#245820#0" expanded="true" />
-            <element signature="e#246148#246206#0" expanded="true" />
-            <element signature="e#247043#247067#0" expanded="true" />
-            <element signature="e#247967#247989#0" expanded="true" />
-            <element signature="e#248394#248458#0" expanded="true" />
-            <element signature="e#249156#249245#0" expanded="true" />
-            <element signature="e#249600#250068#0" expanded="true" />
-            <element signature="e#250223#250960#0" expanded="true" />
-            <element signature="e#251118#251265#0" expanded="true" />
-            <element signature="e#251469#251645#0" expanded="true" />
-            <element signature="e#252195#252246#0" expanded="true" />
-            <element signature="e#252822#252848#0" expanded="true" />
-            <element signature="e#252979#253007#0" expanded="true" />
-            <element signature="e#258590#258703#0" expanded="true" />
-            <element signature="e#260510#260544#0" expanded="true" />
-            <element signature="e#260668#260699#0" expanded="true" />
-            <element signature="e#260900#261270#0" expanded="true" />
-            <element signature="e#261872#261982#0" expanded="true" />
-            <element signature="e#262787#262885#0" expanded="true" />
-            <element signature="e#264369#264577#0" expanded="true" />
-            <element signature="e#270796#270857#0" expanded="true" />
-            <element signature="e#271042#271189#0" expanded="true" />
-            <element signature="e#271440#271578#0" expanded="true" />
-            <element signature="e#272829#273010#0" expanded="true" />
-            <element signature="e#273472#273965#0" expanded="true" />
-            <element signature="e#275378#275562#0" expanded="true" />
-            <element signature="e#277195#277448#0" expanded="true" />
-            <element signature="e#277643#277696#0" expanded="true" />
-            <element signature="e#281146#281226#0" expanded="true" />
-            <element signature="e#286722#313348#0" expanded="true" />
-            <element signature="e#314145#314209#0" expanded="true" />
-            <element signature="e#314530#314556#0" expanded="true" />
-            <element signature="e#319531#319810#0" expanded="true" />
-            <element signature="e#321615#321626#0" expanded="true" />
-            <element signature="e#322497#322700#0" expanded="true" />
-            <element signature="e#322882#322990#0" expanded="true" />
-            <element signature="e#323956#324262#0" expanded="true" />
-            <element signature="e#324798#326496#0" expanded="true" />
-            <element signature="e#326648#326685#0" expanded="true" />
-            <element signature="e#327467#327495#0" expanded="true" />
-            <element signature="e#345096#345124#0" expanded="true" />
-            <element signature="e#364129#364338#0" expanded="true" />
-            <element signature="e#364529#366514#0" expanded="true" />
-            <element signature="e#366759#366972#0" expanded="true" />
-            <element signature="e#369499#369752#0" expanded="true" />
-            <element signature="e#371822#373754#0" expanded="true" />
-            <element signature="e#380127#380155#0" expanded="true" />
-            <element signature="e#381266#381395#0" expanded="true" />
-            <element signature="e#381430#381451#0" expanded="true" />
-            <element signature="e#381604#381650#0" expanded="true" />
-            <element signature="e#381876#381922#0" expanded="true" />
-            <element signature="e#383053#383149#0" expanded="true" />
-            <element signature="e#385713#385785#0" expanded="true" />
-            <element signature="e#385816#385846#0" expanded="true" />
-            <element signature="e#386000#386047#0" expanded="true" />
-            <element signature="e#386196#387128#0" expanded="true" />
-            <element signature="e#390146#390203#0" expanded="true" />
-            <element signature="e#390354#390494#0" expanded="true" />
-            <element signature="e#390648#390709#0" expanded="true" />
-            <element signature="e#390858#390930#0" expanded="true" />
-            <element signature="e#391647#391770#0" expanded="true" />
-            <element signature="e#392065#392161#0" expanded="true" />
-            <element signature="e#392536#392564#0" expanded="true" />
-            <element signature="e#393468#393490#0" expanded="true" />
-            <element signature="e#393895#393959#0" expanded="true" />
-            <element signature="e#395695#395741#0" expanded="true" />
-            <element signature="e#395973#396077#0" expanded="true" />
-            <element signature="e#396945#396969#0" expanded="true" />
-            <element signature="e#397904#397950#0" expanded="true" />
-            <element signature="e#399288#399310#0" expanded="true" />
-            <element signature="e#399540#400017#0" expanded="true" />
-            <element signature="e#400168#400596#0" expanded="true" />
-            <element signature="e#400750#401143#0" expanded="true" />
-            <element signature="e#411552#411857#0" expanded="true" />
-            <element signature="e#412103#413836#0" expanded="true" />
-            <element signature="e#419321#419406#0" expanded="true" />
-            <element signature="e#420709#420861#0" expanded="true" />
-            <element signature="e#421092#422127#0" expanded="true" />
-            <element signature="e#422359#423220#0" expanded="true" />
-            <element signature="e#423452#424594#0" expanded="true" />
-            <element signature="e#424827#425676#0" expanded="true" />
-            <element signature="e#429293#430025#0" expanded="true" />
-            <element signature="e#431511#431586#0" expanded="true" />
-            <element signature="e#432058#432191#0" expanded="true" />
-            <element signature="e#436582#436627#0" expanded="true" />
-            <element signature="e#440546#441065#0" expanded="true" />
-            <element signature="e#443811#444416#0" expanded="true" />
-            <element signature="e#445735#445959#0" expanded="true" />
-            <element signature="e#453873#454017#0" expanded="true" />
-            <element signature="e#459015#459075#0" expanded="true" />
-            <element signature="e#460342#460898#0" expanded="true" />
-            <element signature="e#461288#461594#0" expanded="true" />
-            <element signature="e#462152#463083#0" expanded="true" />
-            <element signature="e#463779#464210#0" expanded="true" />
-            <element signature="e#467369#468511#0" expanded="true" />
-            <element signature="e#469071#469229#0" expanded="true" />
-            <element signature="e#469473#469508#0" expanded="true" />
-            <element signature="e#469803#470015#0" expanded="true" />
-            <element signature="e#470369#470484#0" expanded="true" />
-            <element signature="e#471761#471954#0" expanded="true" />
-            <element signature="e#475909#475988#0" expanded="true" />
-            <element signature="e#477015#477150#0" expanded="true" />
-            <element signature="e#478329#478509#0" expanded="true" />
-            <element signature="e#481645#481657#0" expanded="true" />
-            <element signature="e#483620#483674#0" expanded="true" />
-            <element signature="e#484238#484345#0" expanded="true" />
-            <element signature="e#485428#485576#0" expanded="true" />
-            <element signature="e#492547#492624#0" expanded="true" />
-            <element signature="e#493710#493762#0" expanded="true" />
-            <element signature="e#494294#494395#0" expanded="true" />
-            <element signature="e#494738#494795#0" expanded="true" />
-            <element signature="e#495386#495534#0" expanded="true" />
-            <element signature="e#500286#500613#0" expanded="true" />
-            <element signature="e#500977#501052#0" expanded="true" />
-            <element signature="e#502098#502177#0" expanded="true" />
-            <element signature="e#502548#502688#0" expanded="true" />
-            <element signature="e#503477#503595#0" expanded="true" />
-            <element signature="e#505329#505423#0" expanded="true" />
-            <element signature="e#511360#511450#0" expanded="true" />
-            <element signature="e#513431#513442#0" expanded="true" />
-            <element signature="e#515859#515870#0" expanded="true" />
-            <element signature="e#518695#518706#0" expanded="true" />
-            <element signature="e#520836#520847#0" expanded="true" />
-            <element signature="e#523035#523046#0" expanded="true" />
-            <element signature="e#523832#523840#0" expanded="true" />
-            <element signature="e#524042#524135#0" expanded="true" />
-            <element signature="e#524431#524607#0" expanded="true" />
-            <element signature="e#525817#525865#0" expanded="true" />
-            <element signature="e#526167#527112#0" expanded="true" />
-            <element signature="e#527280#527661#0" expanded="true" />
-            <element signature="e#529365#529376#0" expanded="true" />
-            <element signature="e#530164#530172#0" expanded="true" />
-            <element signature="e#530365#530459#0" expanded="true" />
-            <element signature="e#530756#530933#0" expanded="true" />
-            <element signature="e#532055#532096#0" expanded="true" />
-            <element signature="e#532388#532795#0" expanded="true" />
-            <element signature="e#532963#533177#0" expanded="true" />
-            <element signature="e#533609#533620#0" expanded="true" />
-            <element signature="e#535875#535886#0" expanded="true" />
-            <element signature="e#538249#538260#0" expanded="true" />
-            <element signature="e#540933#540944#0" expanded="true" />
-            <element signature="e#543624#543635#0" expanded="true" />
-            <element signature="e#546443#546454#0" expanded="true" />
-            <element signature="e#548886#548900#0" expanded="true" />
-            <element signature="e#552454#552508#0" expanded="true" />
-            <element signature="e#552900#552913#0" expanded="true" />
-            <element signature="e#555886#556509#0" expanded="true" />
-            <element signature="e#556796#556805#0" expanded="true" />
-            <element signature="e#557091#557232#0" expanded="true" />
-            <element signature="e#557447#557461#0" expanded="true" />
-            <element signature="e#557942#558016#0" expanded="true" />
-            <element signature="e#558189#558202#0" expanded="true" />
-            <element signature="e#558577#558666#0" expanded="true" />
-            <element signature="e#561017#561532#0" expanded="true" />
-            <element signature="e#561732#561780#0" expanded="true" />
-            <element signature="e#563811#565092#0" expanded="true" />
-            <element signature="e#571418#571425#0" expanded="true" />
-            <element signature="e#572293#572387#0" expanded="true" />
-            <element signature="e#572707#572851#0" expanded="true" />
-            <element signature="e#578393#579177#0" expanded="true" />
-            <element signature="e#579429#580315#0" expanded="true" />
-            <element signature="e#580567#581138#0" expanded="true" />
-            <element signature="e#581519#581938#0" expanded="true" />
-            <element signature="e#582540#585683#0" expanded="true" />
-            <element signature="e#595364#595517#0" expanded="true" />
-            <element signature="e#599493#599512#0" expanded="true" />
-            <element signature="e#624010#624047#0" expanded="true" />
-            <element signature="e#624426#624513#0" expanded="true" />
-            <element signature="e#639170#640146#0" expanded="true" />
-            <element signature="e#640445#640537#0" expanded="true" />
-            <element signature="e#640781#640809#0" expanded="true" />
-            <element signature="e#642933#643238#0" expanded="true" />
-            <element signature="e#643387#643951#0" expanded="true" />
-            <element signature="e#644103#644140#0" expanded="true" />
-            <element signature="e#644528#645704#0" expanded="true" />
-            <element signature="e#647586#649257#0" expanded="true" />
-            <element signature="e#663254#663315#0" expanded="true" />
-            <element signature="e#664479#664811#0" expanded="true" />
-            <element signature="e#671406#671504#0" expanded="true" />
-            <element signature="e#672938#676453#0" expanded="true" />
-            <element signature="e#684158#684209#0" expanded="true" />
-            <element signature="e#684794#685082#0" expanded="true" />
-            <element signature="e#692589#692610#0" expanded="true" />
-            <element signature="e#693751#694009#0" expanded="true" />
-            <element signature="e#696147#696254#0" expanded="true" />
-            <element signature="e#696629#696673#0" expanded="true" />
-            <element signature="e#706982#707060#0" expanded="true" />
-            <element signature="e#707085#707106#0" expanded="true" />
-            <element signature="e#707249#707919#0" expanded="true" />
-            <element signature="e#717754#717777#0" expanded="true" />
+            <element signature="e#258582#258695#0" expanded="true" />
+            <element signature="e#260502#260536#0" expanded="true" />
+            <element signature="e#260660#260691#0" expanded="true" />
+            <element signature="e#260892#261262#0" expanded="true" />
+            <element signature="e#261864#261974#0" expanded="true" />
+            <element signature="e#262779#262877#0" expanded="true" />
+            <element signature="e#264361#264569#0" expanded="true" />
+            <element signature="e#270788#270849#0" expanded="true" />
+            <element signature="e#271034#271181#0" expanded="true" />
+            <element signature="e#271432#271570#0" expanded="true" />
+            <element signature="e#272821#273002#0" expanded="true" />
+            <element signature="e#273464#273957#0" expanded="true" />
+            <element signature="e#275210#275211#0" expanded="true" />
+            <element signature="e#275370#275554#0" expanded="true" />
+            <element signature="e#277187#277440#0" expanded="true" />
+            <element signature="e#277635#277688#0" expanded="true" />
+            <element signature="e#281138#281218#0" expanded="true" />
+            <element signature="e#286714#313340#0" expanded="true" />
+            <element signature="e#314137#314201#0" expanded="true" />
+            <element signature="e#314522#314548#0" expanded="true" />
+            <element signature="e#319523#319802#0" expanded="true" />
+            <element signature="e#321607#321618#0" expanded="true" />
+            <element signature="e#322489#322692#0" expanded="true" />
+            <element signature="e#322874#322982#0" expanded="true" />
+            <element signature="e#323948#324254#0" expanded="true" />
+            <element signature="e#324790#326488#0" expanded="true" />
+            <element signature="e#326640#326677#0" expanded="true" />
+            <element signature="e#327459#327487#0" expanded="true" />
+            <element signature="e#345088#345116#0" expanded="true" />
+            <element signature="e#364121#364330#0" expanded="true" />
+            <element signature="e#364521#366506#0" expanded="true" />
+            <element signature="e#366751#366964#0" expanded="true" />
+            <element signature="e#369491#369744#0" expanded="true" />
+            <element signature="e#371814#373746#0" expanded="true" />
+            <element signature="e#376244#376404#0" expanded="true" />
+            <element signature="e#376633#376798#0" expanded="true" />
+            <element signature="e#377027#377175#0" expanded="true" />
+            <element signature="e#377404#377552#0" expanded="true" />
+            <element signature="e#377781#378185#0" expanded="true" />
+            <element signature="e#378426#378475#0" expanded="true" />
+            <element signature="e#378718#378767#0" expanded="true" />
+            <element signature="e#379010#379059#0" expanded="true" />
+            <element signature="e#380119#380147#0" expanded="true" />
+            <element signature="e#380585#380801#0" expanded="true" />
+            <element signature="e#381258#381387#0" expanded="true" />
+            <element signature="e#381422#381443#0" expanded="true" />
+            <element signature="e#381596#381642#0" expanded="true" />
+            <element signature="e#381868#381914#0" expanded="true" />
+            <element signature="e#383045#383141#0" expanded="true" />
+            <element signature="e#385705#385777#0" expanded="true" />
+            <element signature="e#385808#385838#0" expanded="true" />
+            <element signature="e#385992#386039#0" expanded="true" />
+            <element signature="e#386188#387120#0" expanded="true" />
+            <element signature="e#390138#390195#0" expanded="true" />
+            <element signature="e#390346#390486#0" expanded="true" />
+            <element signature="e#390640#390701#0" expanded="true" />
+            <element signature="e#390850#390922#0" expanded="true" />
+            <element signature="e#391464#391485#0" expanded="true" />
+            <element signature="e#391639#391762#0" expanded="true" />
+            <element signature="e#392057#392153#0" expanded="true" />
+            <element signature="e#392528#392556#0" expanded="true" />
+            <element signature="e#393460#393482#0" expanded="true" />
+            <element signature="e#393887#393951#0" expanded="true" />
+            <element signature="e#395687#395733#0" expanded="true" />
+            <element signature="e#395965#396069#0" expanded="true" />
+            <element signature="e#396937#396961#0" expanded="true" />
+            <element signature="e#397896#397942#0" expanded="true" />
+            <element signature="e#399280#399302#0" expanded="true" />
+            <element signature="e#399532#400009#0" expanded="true" />
+            <element signature="e#400160#400588#0" expanded="true" />
+            <element signature="e#400742#401135#0" expanded="true" />
+            <element signature="e#402790#402816#0" expanded="true" />
+            <element signature="e#411544#411849#0" expanded="true" />
+            <element signature="e#412095#413828#0" expanded="true" />
+            <element signature="e#415617#415618#0" expanded="true" />
+            <element signature="e#419313#419398#0" expanded="true" />
+            <element signature="e#420701#420853#0" expanded="true" />
+            <element signature="e#421084#422119#0" expanded="true" />
+            <element signature="e#422351#423212#0" expanded="true" />
+            <element signature="e#423444#424586#0" expanded="true" />
+            <element signature="e#424819#425668#0" expanded="true" />
+            <element signature="e#429285#430017#0" expanded="true" />
+            <element signature="e#431503#431578#0" expanded="true" />
+            <element signature="e#432050#432183#0" expanded="true" />
+            <element signature="e#436574#436619#0" expanded="true" />
+            <element signature="e#440538#441057#0" expanded="true" />
+            <element signature="e#443803#444408#0" expanded="true" />
+            <element signature="e#445727#445951#0" expanded="true" />
+            <element signature="e#453865#454009#0" expanded="true" />
+            <element signature="e#459007#459067#0" expanded="true" />
+            <element signature="e#460334#460890#0" expanded="true" />
+            <element signature="e#461280#461586#0" expanded="true" />
+            <element signature="e#462144#463075#0" expanded="true" />
+            <element signature="e#463771#464202#0" expanded="true" />
+            <element signature="e#467361#468503#0" expanded="true" />
+            <element signature="e#469063#469221#0" expanded="true" />
+            <element signature="e#469465#469500#0" expanded="true" />
+            <element signature="e#469795#470007#0" expanded="true" />
+            <element signature="e#470361#470476#0" expanded="true" />
+            <element signature="e#471753#471946#0" expanded="true" />
+            <element signature="e#475901#475980#0" expanded="true" />
+            <element signature="e#477007#477142#0" expanded="true" />
+            <element signature="e#478321#478501#0" expanded="true" />
+            <element signature="e#481637#481649#0" expanded="true" />
+            <element signature="e#483612#483666#0" expanded="true" />
+            <element signature="e#484230#484337#0" expanded="true" />
+            <element signature="e#485420#485568#0" expanded="true" />
+            <element signature="e#492539#492616#0" expanded="true" />
+            <element signature="e#493702#493754#0" expanded="true" />
+            <element signature="e#494286#494387#0" expanded="true" />
+            <element signature="e#494730#494787#0" expanded="true" />
+            <element signature="e#495378#495526#0" expanded="true" />
+            <element signature="e#500278#500605#0" expanded="true" />
+            <element signature="e#500969#501044#0" expanded="true" />
+            <element signature="e#502090#502169#0" expanded="true" />
+            <element signature="e#502540#502680#0" expanded="true" />
+            <element signature="e#503469#503587#0" expanded="true" />
+            <element signature="e#505321#505415#0" expanded="true" />
+            <element signature="e#511352#511442#0" expanded="true" />
+            <element signature="e#513423#513434#0" expanded="true" />
+            <element signature="e#515851#515862#0" expanded="true" />
+            <element signature="e#518687#518698#0" expanded="true" />
+            <element signature="e#520828#520839#0" expanded="true" />
+            <element signature="e#523027#523038#0" expanded="true" />
+            <element signature="e#523824#523832#0" expanded="true" />
+            <element signature="e#524034#524127#0" expanded="true" />
+            <element signature="e#524423#524599#0" expanded="true" />
+            <element signature="e#525809#525857#0" expanded="true" />
+            <element signature="e#526159#527104#0" expanded="true" />
+            <element signature="e#527272#527653#0" expanded="true" />
+            <element signature="e#529357#529368#0" expanded="true" />
+            <element signature="e#530156#530164#0" expanded="true" />
+            <element signature="e#530357#530451#0" expanded="true" />
+            <element signature="e#530748#530925#0" expanded="true" />
+            <element signature="e#532047#532088#0" expanded="true" />
+            <element signature="e#532380#532787#0" expanded="true" />
+            <element signature="e#532955#533169#0" expanded="true" />
+            <element signature="e#533601#533612#0" expanded="true" />
+            <element signature="e#535867#535878#0" expanded="true" />
+            <element signature="e#538241#538252#0" expanded="true" />
+            <element signature="e#540925#540936#0" expanded="true" />
+            <element signature="e#543616#543627#0" expanded="true" />
+            <element signature="e#546435#546446#0" expanded="true" />
+            <element signature="e#548878#548892#0" expanded="true" />
+            <element signature="e#552446#552500#0" expanded="true" />
+            <element signature="e#552892#552905#0" expanded="true" />
+            <element signature="e#555878#556501#0" expanded="true" />
+            <element signature="e#556788#556797#0" expanded="true" />
+            <element signature="e#557083#557224#0" expanded="true" />
+            <element signature="e#557439#557453#0" expanded="true" />
+            <element signature="e#557934#558008#0" expanded="true" />
+            <element signature="e#558181#558194#0" expanded="true" />
+            <element signature="e#558569#558658#0" expanded="true" />
+            <element signature="e#561009#561524#0" expanded="true" />
+            <element signature="e#561724#561772#0" expanded="true" />
+            <element signature="e#563803#565084#0" expanded="true" />
+            <element signature="e#571410#571417#0" expanded="true" />
+            <element signature="e#572285#572379#0" expanded="true" />
+            <element signature="e#572699#572843#0" expanded="true" />
+            <element signature="e#578385#579169#0" expanded="true" />
+            <element signature="e#579421#580307#0" expanded="true" />
+            <element signature="e#580559#581130#0" expanded="true" />
+            <element signature="e#581511#581930#0" expanded="true" />
+            <element signature="e#582532#585675#0" expanded="true" />
+            <element signature="e#595356#595509#0" expanded="true" />
+            <element signature="e#599485#599504#0" expanded="true" />
+            <element signature="e#624002#624039#0" expanded="true" />
+            <element signature="e#624418#624505#0" expanded="true" />
+            <element signature="e#639162#640138#0" expanded="true" />
+            <element signature="e#640437#640529#0" expanded="true" />
+            <element signature="e#640773#640801#0" expanded="true" />
+            <element signature="e#642925#643230#0" expanded="true" />
+            <element signature="e#643379#643943#0" expanded="true" />
+            <element signature="e#644095#644132#0" expanded="true" />
+            <element signature="e#644520#645696#0" expanded="true" />
+            <element signature="e#647578#649249#0" expanded="true" />
+            <element signature="e#663313#663374#0" expanded="true" />
+            <element signature="e#664538#664870#0" expanded="true" />
+            <element signature="e#671465#671563#0" expanded="true" />
+            <element signature="e#672997#676510#0" expanded="true" />
+            <element signature="e#684215#684266#0" expanded="true" />
+            <element signature="e#684851#685139#0" expanded="true" />
+            <element signature="e#692646#692667#0" expanded="true" />
+            <element signature="e#693808#694066#0" expanded="true" />
+            <element signature="e#696204#696311#0" expanded="true" />
+            <element signature="e#696686#696730#0" expanded="true" />
+            <element signature="e#707039#707117#0" expanded="true" />
+            <element signature="e#707142#707163#0" expanded="true" />
+            <element signature="e#707306#707976#0" expanded="true" />
+            <element signature="e#717811#717834#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/CMakeLists.txt">
+    <entry file="file://$PROJECT_DIR$/soapC.cpp">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="75">
-          <caret line="5" column="16" selection-start-line="5" selection-start-column="16" selection-end-line="5" selection-end-column="16" />
+        <state relative-caret-position="170490">
+          <caret line="11366" column="27" selection-start-line="11366" selection-start-column="27" selection-end-line="11366" selection-end-column="27" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/soapH.h">
+    <entry file="file://$PROJECT_DIR$/main.cpp">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="75">
-          <caret line="2458" column="4" selection-start-line="2458" selection-start-column="4" selection-end-line="2458" selection-end-column="4" />
+        <state relative-caret-position="200">
+          <caret line="154" column="11" selection-start-line="154" selection-start-column="11" selection-end-line="154" selection-end-column="11" />
+          <folding>
+            <element signature="e#464#648#0" />
+            <element signature="e#649#715#0" />
+            <element signature="e#717#966#0" />
+            <element signature="e#968#999#0" />
+            <element signature="e#5581#6601#0" />
+            <element signature="e#6603#7289#0" />
+            <element signature="e#7291#8323#0" />
+            <element signature="e#8326#10694#0" />
+            <element signature="e#12859#31996#0" />
+            <element signature="e#15761#15794#0" />
+            <element signature="e#24629#24656#0" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/soapcwmpService.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="336">
+          <caret line="145" column="39" selection-start-line="145" selection-start-column="39" selection-end-line="145" selection-end-column="39" />
+          <folding>
+            <element signature="e#0#612#0" />
+          </folding>
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/soapcwmpService.cpp">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1889">
-          <caret line="389" selection-start-line="389" selection-end-line="389" />
+        <state relative-caret-position="264">
+          <caret line="292" column="31" lean-forward="true" selection-start-line="292" selection-start-column="31" selection-end-line="292" selection-end-column="31" />
           <folding>
             <element signature="e#0#614#0" />
             <element signature="e#646#784#0" />
@@ -1008,58 +956,29 @@
             <element signature="e#4953#5424#0" />
             <element signature="e#5921#6035#0" />
             <element signature="e#6048#6106#0" />
-            <element signature="e#6243#7153#0" />
-            <element signature="e#7993#8053#0" />
-            <element signature="e#8055#9703#0" />
-            <element signature="e#9706#11724#0" />
-            <element signature="e#11726#13768#0" />
-            <element signature="e#13770#14578#0" />
-            <element signature="e#14580#16622#0" />
-            <element signature="e#16624#18762#0" />
-            <element signature="e#18764#20902#0" />
-            <element signature="e#20904#22706#0" />
-            <element signature="e#22708#24462#0" />
-            <element signature="e#24464#26290#0" />
-            <element signature="e#26292#28190#0" />
-            <element signature="e#28192#30114#0" />
-            <element signature="e#30116#31870#0" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/soapStub.h">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="64">
-          <caret line="1110" column="11" selection-start-line="1110" selection-start-column="11" selection-end-line="1110" selection-end-column="11" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/main.cpp">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-552">
-          <caret line="167" column="65" selection-start-line="167" selection-start-column="65" selection-end-line="167" selection-end-column="65" />
-          <folding>
-            <element signature="e#464#648#0" />
-            <element signature="e#649#715#0" />
-            <element signature="e#717#966#0" />
-            <element signature="e#968#999#0" />
-            <element signature="e#5581#6601#0" />
-            <element signature="e#6603#7289#0" />
-            <element signature="e#8326#10694#0" />
-            <element signature="e#12859#31996#0" />
-            <element signature="e#15761#15794#0" />
-            <element signature="e#24629#24656#0" />
+            <element signature="e#6243#7179#0" />
+            <element signature="e#8147#8207#0" />
+            <element signature="e#13297#15315#0" />
+            <element signature="e#15317#17359#0" />
+            <element signature="e#17361#18169#0" />
+            <element signature="e#18171#20213#0" />
+            <element signature="e#20215#22353#0" />
+            <element signature="e#22355#24493#0" />
+            <element signature="e#24495#26297#0" />
+            <element signature="e#26299#28053#0" />
+            <element signature="e#28055#29881#0" />
+            <element signature="e#29883#31781#0" />
+            <element signature="e#31783#33705#0" />
+            <element signature="e#33707#35461#0" />
+            <element signature="e#35463#37407#0" />
+            <element signature="e#37409#39387#0" />
+            <element signature="e#36241#36561#0" />
+            <element signature="e#36562#38307#0" />
+            <element signature="e#38309#39421#0" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/soapcwmpService.h">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="363">
-          <caret line="140" lean-forward="true" selection-start-line="140" selection-end-line="140" />
-        </state>
-      </provider>
-    </entry>
   </component>
   <component name="masterDetails">
     <states>

+ 2 - 2
cwmp.Download.res.xml

@@ -10,8 +10,8 @@
  <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
   <cwmp:DownloadResponse>
    <Status>0</Status>
-   <StartTime>2019-07-01T08:32:42Z</StartTime>
-   <CompleteTime>2019-07-01T08:32:42Z</CompleteTime>
+   <StartTime>2019-12-28T09:31:21Z</StartTime>
+   <CompleteTime>2019-12-28T09:31:21Z</CompleteTime>
   </cwmp:DownloadResponse>
  </SOAP-ENV:Body>
 </SOAP-ENV:Envelope>

+ 1 - 1
cwmp.Inform.req.xml

@@ -22,7 +22,7 @@
      </EventStruct>
     </Event>
     <MaxEnvelopes>0</MaxEnvelopes>
-    <CurrentTime>2019-07-01T08:32:42Z</CurrentTime>
+    <CurrentTime>2019-12-28T09:31:21Z</CurrentTime>
     <RetryCount>0</RetryCount>
     <ParameterList SOAP-ENC:arrayType="cwmp:ParameterValueStruct[1]">
      <ParameterValueStruct>

+ 2 - 2
cwmp.Upload.res.xml

@@ -10,8 +10,8 @@
  <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
   <cwmp:UploadResponse>
    <Status>0</Status>
-   <StartTime>2019-07-01T08:32:42Z</StartTime>
-   <CompleteTime>2019-07-01T08:32:42Z</CompleteTime>
+   <StartTime>2019-12-28T09:31:21Z</StartTime>
+   <CompleteTime>2019-12-28T09:31:21Z</CompleteTime>
   </cwmp:UploadResponse>
  </SOAP-ENV:Body>
 </SOAP-ENV:Envelope>

+ 46 - 2
cwmp.wsdl

@@ -978,6 +978,10 @@
     <element name="GetRPCMethodsResponse" type="cwmp:GetRPCMethodsResponse"/>
     <!-- operation response element -->
     <element name="InformResponse" type="cwmp:InformResponse"/>
+    <!-- operation response element -->
+    <element name="RebootResponse" type="cwmp:RebootResponse"/>
+    <!-- operation response element -->
+    <element name="FactoryResetResponse" type="cwmp:FactoryResetResponse"/>
     <element name="Fault-SetParameterValuesFault" type="cwmp:Fault-SetParameterValuesFault"/>
     <element name="GetRPCMethods" type="cwmp:GetRPCMethods"/>
     <element name="SetParameterValues" type="cwmp:SetParameterValues"/>
@@ -989,7 +993,6 @@
     <element name="DeleteObject" type="cwmp:DeleteObject"/>
     <element name="Download" type="cwmp:Download"/>
     <element name="Reboot" type="cwmp:Reboot"/>
-    <element name="RebootResponse" type="cwmp:RebootResponse"/>
     <element name="GetQueuedTransfers" type="cwmp:GetQueuedTransfers"/>
     <element name="GetQueuedTransfersResponse" type="cwmp:GetQueuedTransfersResponse"/>
     <element name="ScheduleInform" type="cwmp:ScheduleInform"/>
@@ -1000,7 +1003,6 @@
     <element name="GetOptionsResponse" type="cwmp:GetOptionsResponse"/>
     <element name="Upload" type="cwmp:Upload"/>
     <element name="FactoryReset" type="cwmp:FactoryReset"/>
-    <element name="FactoryResetResponse" type="cwmp:FactoryResetResponse"/>
     <element name="GetAllQueuedTransfers" type="cwmp:GetAllQueuedTransfers"/>
     <element name="GetAllQueuedTransfersResponse" type="cwmp:GetAllQueuedTransfersResponse"/>
     <element name="ScheduleDownload" type="cwmp:ScheduleDownload"/>
@@ -1127,6 +1129,20 @@
   <part name="MaxEnvelopes" type="xsd:unsignedInt"/><!-- __cwmp__Inform::MaxEnvelopes -->
 </message>
 
+<message name="Reboot">
+  <part name="Reboot" type="cwmp:Reboot"/><!-- __cwmp__Reboot::cwmp__Reboot -->
+</message>
+
+<message name="RebootResponse">
+</message>
+
+<message name="FactoryReset">
+  <part name="FactoryReset" type="cwmp:FactoryReset"/><!-- __cwmp__FactoryReset::cwmp__FactoryReset -->
+</message>
+
+<message name="FactoryResetResponse">
+</message>
+
 <message name="cwmpHeader">
   <part name="SupportedCWMPVersions" element="cwmp:SupportedCWMPVersions"/>
   <part name="UseCWMPVersion" element="cwmp:UseCWMPVersion"/>
@@ -1215,6 +1231,16 @@
     <output message="tns:InformResponse"/>
     <fault name="Fault" message="tns:FaultFault"/>
   </operation>
+  <operation name="Reboot">
+    <documentation>Service definition of function __cwmp__Reboot</documentation>
+    <input message="tns:Reboot"/>
+    <output message="tns:RebootResponse"/>
+  </operation>
+  <operation name="FactoryReset">
+    <documentation>Service definition of function __cwmp__FactoryReset</documentation>
+    <input message="tns:FactoryReset"/>
+    <output message="tns:FactoryResetResponse"/>
+  </operation>
 </portType>
 
 <binding name="cwmp" type="tns:cwmpPortType">
@@ -1358,6 +1384,24 @@
       <SOAP:fault use="literal" name="Fault"/>
     </fault>
   </operation>
+  <operation name="Reboot">
+    <SOAP:operation style="rpc" soapAction=""/>
+    <input>
+          <SOAP:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:dslforum-org:cwmp-1-2"/>
+    </input>
+    <output>
+          <SOAP:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:dslforum-org:cwmp-1-2"/>
+    </output>
+  </operation>
+  <operation name="FactoryReset">
+    <SOAP:operation style="rpc" soapAction=""/>
+    <input>
+          <SOAP:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:dslforum-org:cwmp-1-2"/>
+    </input>
+    <output>
+          <SOAP:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:dslforum-org:cwmp-1-2"/>
+    </output>
+  </operation>
 </binding>
 
 <service name="cwmp">

+ 4 - 2
cwmp.xsd

@@ -961,6 +961,10 @@
     <element name="GetRPCMethodsResponse" type="cwmp:GetRPCMethodsResponse"/>
     <!-- operation response element -->
     <element name="InformResponse" type="cwmp:InformResponse"/>
+    <!-- operation response element -->
+    <element name="RebootResponse" type="cwmp:RebootResponse"/>
+    <!-- operation response element -->
+    <element name="FactoryResetResponse" type="cwmp:FactoryResetResponse"/>
     <element name="Fault-SetParameterValuesFault" type="cwmp:Fault-SetParameterValuesFault"/>
     <element name="GetRPCMethods" type="cwmp:GetRPCMethods"/>
     <element name="SetParameterValues" type="cwmp:SetParameterValues"/>
@@ -972,7 +976,6 @@
     <element name="DeleteObject" type="cwmp:DeleteObject"/>
     <element name="Download" type="cwmp:Download"/>
     <element name="Reboot" type="cwmp:Reboot"/>
-    <element name="RebootResponse" type="cwmp:RebootResponse"/>
     <element name="GetQueuedTransfers" type="cwmp:GetQueuedTransfers"/>
     <element name="GetQueuedTransfersResponse" type="cwmp:GetQueuedTransfersResponse"/>
     <element name="ScheduleInform" type="cwmp:ScheduleInform"/>
@@ -983,7 +986,6 @@
     <element name="GetOptionsResponse" type="cwmp:GetOptionsResponse"/>
     <element name="Upload" type="cwmp:Upload"/>
     <element name="FactoryReset" type="cwmp:FactoryReset"/>
-    <element name="FactoryResetResponse" type="cwmp:FactoryResetResponse"/>
     <element name="GetAllQueuedTransfers" type="cwmp:GetAllQueuedTransfers"/>
     <element name="GetAllQueuedTransfersResponse" type="cwmp:GetAllQueuedTransfersResponse"/>
     <element name="ScheduleDownload" type="cwmp:ScheduleDownload"/>

+ 8 - 2
main.cpp

@@ -14,8 +14,8 @@
 
 using json = nlohmann::json;
 
-int port = 7547;
-//int port = 8001;
+//int port = 7547;
+int port = 8001;
 
 int POST_handler(struct soap *soap);
 
@@ -537,3 +537,9 @@ int cwmpService::Inform(struct _cwmp__Inform *cwmp__Inform,
 //    std::cerr<< "Size: "<<tr069.size()<<std::endl;
     return SOAP_OK;
 }
+
+int cwmpService::FactoryReset(struct _cwmp__FactoryReset *cwmp__factoryReset,
+                              struct _cwmp__FactoryResetResponse *cwmp__factoryResetResponse) {return SOAP_OK;}
+
+int cwmpService::Reboot(struct _cwmp__Reboot *cwmp__Reboot,
+                      struct _cwmp__RebootResponse *cwmp__RebootResponse) {return SOAP_OK;}

+ 441 - 1
soapC.cpp

@@ -18,7 +18,7 @@ A commercial use license is available from Genivia Inc., contact@genivia.com
 
 #include "soapH.h"
 
-SOAP_SOURCE_STAMP("@(#) soapC.cpp ver 2.8.83 2019-07-01 08:32:43 GMT")
+SOAP_SOURCE_STAMP("@(#) soapC.cpp ver 2.8.83 2019-12-28 09:31:21 GMT")
 
 
 #ifndef WITH_NOGLOBAL
@@ -307,6 +307,14 @@ SOAP_FMAC3 void * SOAP_FMAC4 soap_getelement(struct soap *soap, const char *tag,
 		return soap_in_cwmp__TransferCompleteFaultStruct(soap, tag, NULL, "cwmp:TransferCompleteFaultStruct");
 	case SOAP_TYPE_SOAP_ENC__base64:
 		return soap_in_SOAP_ENC__base64(soap, tag, NULL, "SOAP-ENC:base64");
+	case SOAP_TYPE_PointerTo_cwmp__FactoryResetResponse:
+		return soap_in_PointerTo_cwmp__FactoryResetResponse(soap, tag, NULL, "cwmp:FactoryResetResponse");
+	case SOAP_TYPE_PointerTo_cwmp__FactoryReset:
+		return soap_in_PointerTo_cwmp__FactoryReset(soap, tag, NULL, "cwmp:FactoryReset");
+	case SOAP_TYPE_PointerTo_cwmp__RebootResponse:
+		return soap_in_PointerTo_cwmp__RebootResponse(soap, tag, NULL, "cwmp:RebootResponse");
+	case SOAP_TYPE_PointerTo_cwmp__Reboot:
+		return soap_in_PointerTo_cwmp__Reboot(soap, tag, NULL, "cwmp:Reboot");
 	case SOAP_TYPE_PointerTo_cwmp__InformResponse:
 		return soap_in_PointerTo_cwmp__InformResponse(soap, tag, NULL, "cwmp:InformResponse");
 	case SOAP_TYPE_PointerTo_cwmp__Inform:
@@ -1404,6 +1412,14 @@ SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap *soap, const void *ptr, co
 		return soap_out_cwmp__TransferCompleteFaultStruct(soap, tag, id, (const struct cwmp__TransferCompleteFaultStruct *)ptr, "cwmp:TransferCompleteFaultStruct");
 	case SOAP_TYPE_SOAP_ENC__base64:
 		return soap_out_SOAP_ENC__base64(soap, tag, id, (const struct SOAP_ENC__base64 *)ptr, "SOAP-ENC:base64");
+	case SOAP_TYPE_PointerTo_cwmp__FactoryResetResponse:
+		return soap_out_PointerTo_cwmp__FactoryResetResponse(soap, tag, id, (struct _cwmp__FactoryResetResponse *const*)ptr, "cwmp:FactoryResetResponse");
+	case SOAP_TYPE_PointerTo_cwmp__FactoryReset:
+		return soap_out_PointerTo_cwmp__FactoryReset(soap, tag, id, (struct _cwmp__FactoryReset *const*)ptr, "cwmp:FactoryReset");
+	case SOAP_TYPE_PointerTo_cwmp__RebootResponse:
+		return soap_out_PointerTo_cwmp__RebootResponse(soap, tag, id, (struct _cwmp__RebootResponse *const*)ptr, "cwmp:RebootResponse");
+	case SOAP_TYPE_PointerTo_cwmp__Reboot:
+		return soap_out_PointerTo_cwmp__Reboot(soap, tag, id, (struct _cwmp__Reboot *const*)ptr, "cwmp:Reboot");
 	case SOAP_TYPE_PointerTo_cwmp__InformResponse:
 		return soap_out_PointerTo_cwmp__InformResponse(soap, tag, id, (struct _cwmp__InformResponse *const*)ptr, "cwmp:InformResponse");
 	case SOAP_TYPE_PointerTo_cwmp__Inform:
@@ -1855,6 +1871,10 @@ SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap *soap, int t, const ch
 		return (void*)soap_instantiate___cwmp__GetRPCMethods(soap, -1, type, arrayType, n);
 	case SOAP_TYPE___cwmp__Inform:
 		return (void*)soap_instantiate___cwmp__Inform(soap, -1, type, arrayType, n);
+	case SOAP_TYPE___cwmp__Reboot:
+		return (void*)soap_instantiate___cwmp__Reboot(soap, -1, type, arrayType, n);
+	case SOAP_TYPE___cwmp__FactoryReset:
+		return (void*)soap_instantiate___cwmp__FactoryReset(soap, -1, type, arrayType, n);
 #ifndef WITH_NOGLOBAL
 	case SOAP_TYPE_SOAP_ENV__Code:
 		return (void*)soap_instantiate_SOAP_ENV__Code(soap, -1, type, arrayType, n);
@@ -2536,6 +2556,18 @@ SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap *soap, struct soap_clist *p)
 		else
 			SOAP_DELETE_ARRAY(soap, static_cast<struct __cwmp__Inform*>(p->ptr), struct __cwmp__Inform);
 		break;
+	case SOAP_TYPE___cwmp__Reboot:
+		if (p->size < 0)
+			SOAP_DELETE(soap, static_cast<struct __cwmp__Reboot*>(p->ptr), struct __cwmp__Reboot);
+		else
+			SOAP_DELETE_ARRAY(soap, static_cast<struct __cwmp__Reboot*>(p->ptr), struct __cwmp__Reboot);
+		break;
+	case SOAP_TYPE___cwmp__FactoryReset:
+		if (p->size < 0)
+			SOAP_DELETE(soap, static_cast<struct __cwmp__FactoryReset*>(p->ptr), struct __cwmp__FactoryReset);
+		else
+			SOAP_DELETE_ARRAY(soap, static_cast<struct __cwmp__FactoryReset*>(p->ptr), struct __cwmp__FactoryReset);
+		break;
 #ifndef WITH_NOGLOBAL
 	case SOAP_TYPE_SOAP_ENV__Code:
 		if (p->size < 0)
@@ -3031,6 +3063,14 @@ SOAP_FMAC3 void SOAP_FMAC4 soap_finsert(struct soap *soap, int t, int tt, void *
 		DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __cwmp__Inform type=%d location=%p object=%p\n", t, p, q));
 		*(struct __cwmp__Inform*)p = *(struct __cwmp__Inform*)q;
 		break;
+	case SOAP_TYPE___cwmp__Reboot:
+		DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __cwmp__Reboot type=%d location=%p object=%p\n", t, p, q));
+		*(struct __cwmp__Reboot*)p = *(struct __cwmp__Reboot*)q;
+		break;
+	case SOAP_TYPE___cwmp__FactoryReset:
+		DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __cwmp__FactoryReset type=%d location=%p object=%p\n", t, p, q));
+		*(struct __cwmp__FactoryReset*)p = *(struct __cwmp__FactoryReset*)q;
+		break;
 #ifndef WITH_NOGLOBAL
 	case SOAP_TYPE_SOAP_ENV__Code:
 		DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct SOAP_ENV__Code type=%d location=%p object=%p\n", t, p, q));
@@ -5256,6 +5296,190 @@ SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soa
 
 #endif
 
+SOAP_FMAC3 void SOAP_FMAC4 soap_default___cwmp__FactoryReset(struct soap *soap, struct __cwmp__FactoryReset *a)
+{
+	(void)soap; (void)a; /* appease -Wall -Werror */
+	a->cwmp__FactoryReset = NULL;
+}
+
+SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___cwmp__FactoryReset(struct soap *soap, const struct __cwmp__FactoryReset *a)
+{
+	(void)soap; (void)a; /* appease -Wall -Werror */
+#ifndef WITH_NOIDREF
+	soap_serialize_PointerTo_cwmp__FactoryReset(soap, &a->cwmp__FactoryReset);
+#endif
+}
+
+SOAP_FMAC3 int SOAP_FMAC4 soap_out___cwmp__FactoryReset(struct soap *soap, const char *tag, int id, const struct __cwmp__FactoryReset *a, const char *type)
+{
+	(void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */
+	if (soap_out_PointerTo_cwmp__FactoryReset(soap, "cwmp:FactoryReset", -1, &a->cwmp__FactoryReset, ""))
+		return soap->error;
+	return SOAP_OK;
+}
+
+SOAP_FMAC3 struct __cwmp__FactoryReset * SOAP_FMAC4 soap_in___cwmp__FactoryReset(struct soap *soap, const char *tag, struct __cwmp__FactoryReset *a, const char *type)
+{
+	size_t soap_flag_cwmp__FactoryReset = 1;
+	short soap_flag;
+	(void)tag; (void)type; /* appease -Wall -Werror */
+	a = (struct __cwmp__FactoryReset*)soap_id_enter(soap, "", a, SOAP_TYPE___cwmp__FactoryReset, sizeof(struct __cwmp__FactoryReset), NULL, NULL, NULL, NULL);
+	if (!a)
+		return NULL;
+	soap_default___cwmp__FactoryReset(soap, a);
+		for (soap_flag = 0;; soap_flag = 1)
+		{	soap->error = SOAP_TAG_MISMATCH;
+			if (soap_flag_cwmp__FactoryReset && soap->error == SOAP_TAG_MISMATCH)
+			{	if (soap_in_PointerTo_cwmp__FactoryReset(soap, "cwmp:FactoryReset", &a->cwmp__FactoryReset, ""))
+				{	soap_flag_cwmp__FactoryReset--;
+					continue;
+				}
+			}
+			if (soap->error == SOAP_TAG_MISMATCH && soap_flag)
+			{	soap->error = SOAP_OK;
+				break;
+			}
+			if (soap_flag && soap->error == SOAP_NO_TAG)
+				break;
+			if (soap->error)
+				return NULL;
+		}
+	return a;
+}
+
+SOAP_FMAC1 struct __cwmp__FactoryReset * SOAP_FMAC2 soap_instantiate___cwmp__FactoryReset(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size)
+{
+	DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___cwmp__FactoryReset(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:""));
+	(void)type; (void)arrayType; /* appease -Wall -Werror */
+	struct __cwmp__FactoryReset *p;
+	size_t k = sizeof(struct __cwmp__FactoryReset);
+	struct soap_clist *cp = soap_link(soap, SOAP_TYPE___cwmp__FactoryReset, n, soap_fdelete);
+	if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE)
+		return NULL;
+	if (n < 0)
+	{	p = SOAP_NEW(soap, struct __cwmp__FactoryReset);
+	}
+	else
+	{	p = SOAP_NEW_ARRAY(soap, struct __cwmp__FactoryReset, n);
+		k *= n;
+	}
+	DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct __cwmp__FactoryReset location=%p n=%d\n", (void*)p, n));
+	if (size)
+		*size = k;
+	if (!p)
+		soap->error = SOAP_EOM;
+	else if (cp)
+		cp->ptr = (void*)p;
+	return p;
+}
+
+SOAP_FMAC3 int SOAP_FMAC4 soap_put___cwmp__FactoryReset(struct soap *soap, const struct __cwmp__FactoryReset *a, const char *tag, const char *type)
+{
+	if (soap_out___cwmp__FactoryReset(soap, tag ? tag : "-cwmp:FactoryReset", -2, a, type))
+		return soap->error;
+	return SOAP_OK;
+}
+
+SOAP_FMAC3 struct __cwmp__FactoryReset * SOAP_FMAC4 soap_get___cwmp__FactoryReset(struct soap *soap, struct __cwmp__FactoryReset *p, const char *tag, const char *type)
+{
+	if ((p = soap_in___cwmp__FactoryReset(soap, tag, p, type)))
+		if (soap_getindependent(soap))
+			return NULL;
+	return p;
+}
+
+SOAP_FMAC3 void SOAP_FMAC4 soap_default___cwmp__Reboot(struct soap *soap, struct __cwmp__Reboot *a)
+{
+	(void)soap; (void)a; /* appease -Wall -Werror */
+	a->cwmp__Reboot = NULL;
+}
+
+SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___cwmp__Reboot(struct soap *soap, const struct __cwmp__Reboot *a)
+{
+	(void)soap; (void)a; /* appease -Wall -Werror */
+#ifndef WITH_NOIDREF
+	soap_serialize_PointerTo_cwmp__Reboot(soap, &a->cwmp__Reboot);
+#endif
+}
+
+SOAP_FMAC3 int SOAP_FMAC4 soap_out___cwmp__Reboot(struct soap *soap, const char *tag, int id, const struct __cwmp__Reboot *a, const char *type)
+{
+	(void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */
+	if (soap_out_PointerTo_cwmp__Reboot(soap, "cwmp:Reboot", -1, &a->cwmp__Reboot, ""))
+		return soap->error;
+	return SOAP_OK;
+}
+
+SOAP_FMAC3 struct __cwmp__Reboot * SOAP_FMAC4 soap_in___cwmp__Reboot(struct soap *soap, const char *tag, struct __cwmp__Reboot *a, const char *type)
+{
+	size_t soap_flag_cwmp__Reboot = 1;
+	short soap_flag;
+	(void)tag; (void)type; /* appease -Wall -Werror */
+	a = (struct __cwmp__Reboot*)soap_id_enter(soap, "", a, SOAP_TYPE___cwmp__Reboot, sizeof(struct __cwmp__Reboot), NULL, NULL, NULL, NULL);
+	if (!a)
+		return NULL;
+	soap_default___cwmp__Reboot(soap, a);
+		for (soap_flag = 0;; soap_flag = 1)
+		{	soap->error = SOAP_TAG_MISMATCH;
+			if (soap_flag_cwmp__Reboot && soap->error == SOAP_TAG_MISMATCH)
+			{	if (soap_in_PointerTo_cwmp__Reboot(soap, "cwmp:Reboot", &a->cwmp__Reboot, ""))
+				{	soap_flag_cwmp__Reboot--;
+					continue;
+				}
+			}
+			if (soap->error == SOAP_TAG_MISMATCH && soap_flag)
+			{	soap->error = SOAP_OK;
+				break;
+			}
+			if (soap_flag && soap->error == SOAP_NO_TAG)
+				break;
+			if (soap->error)
+				return NULL;
+		}
+	return a;
+}
+
+SOAP_FMAC1 struct __cwmp__Reboot * SOAP_FMAC2 soap_instantiate___cwmp__Reboot(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size)
+{
+	DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___cwmp__Reboot(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:""));
+	(void)type; (void)arrayType; /* appease -Wall -Werror */
+	struct __cwmp__Reboot *p;
+	size_t k = sizeof(struct __cwmp__Reboot);
+	struct soap_clist *cp = soap_link(soap, SOAP_TYPE___cwmp__Reboot, n, soap_fdelete);
+	if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE)
+		return NULL;
+	if (n < 0)
+	{	p = SOAP_NEW(soap, struct __cwmp__Reboot);
+	}
+	else
+	{	p = SOAP_NEW_ARRAY(soap, struct __cwmp__Reboot, n);
+		k *= n;
+	}
+	DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct __cwmp__Reboot location=%p n=%d\n", (void*)p, n));
+	if (size)
+		*size = k;
+	if (!p)
+		soap->error = SOAP_EOM;
+	else if (cp)
+		cp->ptr = (void*)p;
+	return p;
+}
+
+SOAP_FMAC3 int SOAP_FMAC4 soap_put___cwmp__Reboot(struct soap *soap, const struct __cwmp__Reboot *a, const char *tag, const char *type)
+{
+	if (soap_out___cwmp__Reboot(soap, tag ? tag : "-cwmp:Reboot", -2, a, type))
+		return soap->error;
+	return SOAP_OK;
+}
+
+SOAP_FMAC3 struct __cwmp__Reboot * SOAP_FMAC4 soap_get___cwmp__Reboot(struct soap *soap, struct __cwmp__Reboot *p, const char *tag, const char *type)
+{
+	if ((p = soap_in___cwmp__Reboot(soap, tag, p, type)))
+		if (soap_getindependent(soap))
+			return NULL;
+	return p;
+}
+
 SOAP_FMAC3 void SOAP_FMAC4 soap_default___cwmp__Inform(struct soap *soap, struct __cwmp__Inform *a)
 {
 	(void)soap; (void)a; /* appease -Wall -Werror */
@@ -19286,6 +19510,222 @@ SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(
 
 #endif
 
+SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_cwmp__FactoryResetResponse(struct soap *soap, struct _cwmp__FactoryResetResponse *const*a)
+{
+	(void)soap; (void)a; /* appease -Wall -Werror */
+#ifndef WITH_NOIDREF
+	if (!soap_reference(soap, *a, SOAP_TYPE__cwmp__FactoryResetResponse))
+		soap_serialize__cwmp__FactoryResetResponse(soap, *a);
+#endif
+}
+
+SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_cwmp__FactoryResetResponse(struct soap *soap, const char *tag, int id, struct _cwmp__FactoryResetResponse *const*a, const char *type)
+{
+	id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__cwmp__FactoryResetResponse, NULL);
+	if (id < 0)
+		return soap->error;
+	return soap_out__cwmp__FactoryResetResponse(soap, tag, id, *a, type);
+}
+
+SOAP_FMAC3 struct _cwmp__FactoryResetResponse ** SOAP_FMAC4 soap_in_PointerTo_cwmp__FactoryResetResponse(struct soap *soap, const char *tag, struct _cwmp__FactoryResetResponse **a, const char *type)
+{
+	(void)type; /* appease -Wall -Werror */
+	if (soap_element_begin_in(soap, tag, 1, NULL))
+		return NULL;
+	if (!a)
+		if (!(a = (struct _cwmp__FactoryResetResponse **)soap_malloc(soap, sizeof(struct _cwmp__FactoryResetResponse *))))
+			return NULL;
+	*a = NULL;
+	if (!soap->null && *soap->href != '#')
+	{	soap_revert(soap);
+		if (!(*a = soap_in__cwmp__FactoryResetResponse(soap, tag, *a, type)))
+			return NULL;
+	}
+	else
+	{	a = (struct _cwmp__FactoryResetResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__cwmp__FactoryResetResponse, sizeof(struct _cwmp__FactoryResetResponse), 0, NULL);
+		if (soap->body && soap_element_end_in(soap, tag))
+			return NULL;
+	}
+	return a;
+}
+
+SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_cwmp__FactoryResetResponse(struct soap *soap, struct _cwmp__FactoryResetResponse *const*a, const char *tag, const char *type)
+{
+	if (soap_out_PointerTo_cwmp__FactoryResetResponse(soap, tag ? tag : "cwmp:FactoryResetResponse", -2, a, type))
+		return soap->error;
+	return soap_putindependent(soap);
+}
+
+SOAP_FMAC3 struct _cwmp__FactoryResetResponse ** SOAP_FMAC4 soap_get_PointerTo_cwmp__FactoryResetResponse(struct soap *soap, struct _cwmp__FactoryResetResponse **p, const char *tag, const char *type)
+{
+	if ((p = soap_in_PointerTo_cwmp__FactoryResetResponse(soap, tag, p, type)))
+		if (soap_getindependent(soap))
+			return NULL;
+	return p;
+}
+
+SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_cwmp__FactoryReset(struct soap *soap, struct _cwmp__FactoryReset *const*a)
+{
+	(void)soap; (void)a; /* appease -Wall -Werror */
+#ifndef WITH_NOIDREF
+	if (!soap_reference(soap, *a, SOAP_TYPE__cwmp__FactoryReset))
+		soap_serialize__cwmp__FactoryReset(soap, *a);
+#endif
+}
+
+SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_cwmp__FactoryReset(struct soap *soap, const char *tag, int id, struct _cwmp__FactoryReset *const*a, const char *type)
+{
+	id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__cwmp__FactoryReset, NULL);
+	if (id < 0)
+		return soap->error;
+	return soap_out__cwmp__FactoryReset(soap, tag, id, *a, type);
+}
+
+SOAP_FMAC3 struct _cwmp__FactoryReset ** SOAP_FMAC4 soap_in_PointerTo_cwmp__FactoryReset(struct soap *soap, const char *tag, struct _cwmp__FactoryReset **a, const char *type)
+{
+	(void)type; /* appease -Wall -Werror */
+	if (soap_element_begin_in(soap, tag, 1, NULL))
+		return NULL;
+	if (!a)
+		if (!(a = (struct _cwmp__FactoryReset **)soap_malloc(soap, sizeof(struct _cwmp__FactoryReset *))))
+			return NULL;
+	*a = NULL;
+	if (!soap->null && *soap->href != '#')
+	{	soap_revert(soap);
+		if (!(*a = soap_in__cwmp__FactoryReset(soap, tag, *a, type)))
+			return NULL;
+	}
+	else
+	{	a = (struct _cwmp__FactoryReset **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__cwmp__FactoryReset, sizeof(struct _cwmp__FactoryReset), 0, NULL);
+		if (soap->body && soap_element_end_in(soap, tag))
+			return NULL;
+	}
+	return a;
+}
+
+SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_cwmp__FactoryReset(struct soap *soap, struct _cwmp__FactoryReset *const*a, const char *tag, const char *type)
+{
+	if (soap_out_PointerTo_cwmp__FactoryReset(soap, tag ? tag : "cwmp:FactoryReset", -2, a, type))
+		return soap->error;
+	return soap_putindependent(soap);
+}
+
+SOAP_FMAC3 struct _cwmp__FactoryReset ** SOAP_FMAC4 soap_get_PointerTo_cwmp__FactoryReset(struct soap *soap, struct _cwmp__FactoryReset **p, const char *tag, const char *type)
+{
+	if ((p = soap_in_PointerTo_cwmp__FactoryReset(soap, tag, p, type)))
+		if (soap_getindependent(soap))
+			return NULL;
+	return p;
+}
+
+SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_cwmp__RebootResponse(struct soap *soap, struct _cwmp__RebootResponse *const*a)
+{
+	(void)soap; (void)a; /* appease -Wall -Werror */
+#ifndef WITH_NOIDREF
+	if (!soap_reference(soap, *a, SOAP_TYPE__cwmp__RebootResponse))
+		soap_serialize__cwmp__RebootResponse(soap, *a);
+#endif
+}
+
+SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_cwmp__RebootResponse(struct soap *soap, const char *tag, int id, struct _cwmp__RebootResponse *const*a, const char *type)
+{
+	id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__cwmp__RebootResponse, NULL);
+	if (id < 0)
+		return soap->error;
+	return soap_out__cwmp__RebootResponse(soap, tag, id, *a, type);
+}
+
+SOAP_FMAC3 struct _cwmp__RebootResponse ** SOAP_FMAC4 soap_in_PointerTo_cwmp__RebootResponse(struct soap *soap, const char *tag, struct _cwmp__RebootResponse **a, const char *type)
+{
+	(void)type; /* appease -Wall -Werror */
+	if (soap_element_begin_in(soap, tag, 1, NULL))
+		return NULL;
+	if (!a)
+		if (!(a = (struct _cwmp__RebootResponse **)soap_malloc(soap, sizeof(struct _cwmp__RebootResponse *))))
+			return NULL;
+	*a = NULL;
+	if (!soap->null && *soap->href != '#')
+	{	soap_revert(soap);
+		if (!(*a = soap_in__cwmp__RebootResponse(soap, tag, *a, type)))
+			return NULL;
+	}
+	else
+	{	a = (struct _cwmp__RebootResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__cwmp__RebootResponse, sizeof(struct _cwmp__RebootResponse), 0, NULL);
+		if (soap->body && soap_element_end_in(soap, tag))
+			return NULL;
+	}
+	return a;
+}
+
+SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_cwmp__RebootResponse(struct soap *soap, struct _cwmp__RebootResponse *const*a, const char *tag, const char *type)
+{
+	if (soap_out_PointerTo_cwmp__RebootResponse(soap, tag ? tag : "cwmp:RebootResponse", -2, a, type))
+		return soap->error;
+	return soap_putindependent(soap);
+}
+
+SOAP_FMAC3 struct _cwmp__RebootResponse ** SOAP_FMAC4 soap_get_PointerTo_cwmp__RebootResponse(struct soap *soap, struct _cwmp__RebootResponse **p, const char *tag, const char *type)
+{
+	if ((p = soap_in_PointerTo_cwmp__RebootResponse(soap, tag, p, type)))
+		if (soap_getindependent(soap))
+			return NULL;
+	return p;
+}
+
+SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_cwmp__Reboot(struct soap *soap, struct _cwmp__Reboot *const*a)
+{
+	(void)soap; (void)a; /* appease -Wall -Werror */
+#ifndef WITH_NOIDREF
+	if (!soap_reference(soap, *a, SOAP_TYPE__cwmp__Reboot))
+		soap_serialize__cwmp__Reboot(soap, *a);
+#endif
+}
+
+SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_cwmp__Reboot(struct soap *soap, const char *tag, int id, struct _cwmp__Reboot *const*a, const char *type)
+{
+	id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__cwmp__Reboot, NULL);
+	if (id < 0)
+		return soap->error;
+	return soap_out__cwmp__Reboot(soap, tag, id, *a, type);
+}
+
+SOAP_FMAC3 struct _cwmp__Reboot ** SOAP_FMAC4 soap_in_PointerTo_cwmp__Reboot(struct soap *soap, const char *tag, struct _cwmp__Reboot **a, const char *type)
+{
+	(void)type; /* appease -Wall -Werror */
+	if (soap_element_begin_in(soap, tag, 1, NULL))
+		return NULL;
+	if (!a)
+		if (!(a = (struct _cwmp__Reboot **)soap_malloc(soap, sizeof(struct _cwmp__Reboot *))))
+			return NULL;
+	*a = NULL;
+	if (!soap->null && *soap->href != '#')
+	{	soap_revert(soap);
+		if (!(*a = soap_in__cwmp__Reboot(soap, tag, *a, type)))
+			return NULL;
+	}
+	else
+	{	a = (struct _cwmp__Reboot **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__cwmp__Reboot, sizeof(struct _cwmp__Reboot), 0, NULL);
+		if (soap->body && soap_element_end_in(soap, tag))
+			return NULL;
+	}
+	return a;
+}
+
+SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_cwmp__Reboot(struct soap *soap, struct _cwmp__Reboot *const*a, const char *tag, const char *type)
+{
+	if (soap_out_PointerTo_cwmp__Reboot(soap, tag ? tag : "cwmp:Reboot", -2, a, type))
+		return soap->error;
+	return soap_putindependent(soap);
+}
+
+SOAP_FMAC3 struct _cwmp__Reboot ** SOAP_FMAC4 soap_get_PointerTo_cwmp__Reboot(struct soap *soap, struct _cwmp__Reboot **p, const char *tag, const char *type)
+{
+	if ((p = soap_in_PointerTo_cwmp__Reboot(soap, tag, p, type)))
+		if (soap_getindependent(soap))
+			return NULL;
+	return p;
+}
+
 SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_cwmp__InformResponse(struct soap *soap, struct _cwmp__InformResponse *const*a)
 {
 	(void)soap; (void)a; /* appease -Wall -Werror */

+ 224 - 0
soapH.h

@@ -2431,6 +2431,194 @@ inline int soap_POST_recv_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Cod
 
 #endif
 
+#ifndef SOAP_TYPE___cwmp__FactoryReset_DEFINED
+#define SOAP_TYPE___cwmp__FactoryReset_DEFINED
+SOAP_FMAC3 void SOAP_FMAC4 soap_default___cwmp__FactoryReset(struct soap*, struct __cwmp__FactoryReset *);
+SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___cwmp__FactoryReset(struct soap*, const struct __cwmp__FactoryReset *);
+SOAP_FMAC3 int SOAP_FMAC4 soap_out___cwmp__FactoryReset(struct soap*, const char*, int, const struct __cwmp__FactoryReset *, const char*);
+SOAP_FMAC3 struct __cwmp__FactoryReset * SOAP_FMAC4 soap_in___cwmp__FactoryReset(struct soap*, const char*, struct __cwmp__FactoryReset *, const char*);
+SOAP_FMAC1 struct __cwmp__FactoryReset * SOAP_FMAC2 soap_instantiate___cwmp__FactoryReset(struct soap*, int, const char*, const char*, size_t*);
+
+inline struct __cwmp__FactoryReset * soap_new___cwmp__FactoryReset(struct soap *soap, int n = -1)
+{
+	return soap_instantiate___cwmp__FactoryReset(soap, n, NULL, NULL, NULL);
+}
+
+inline struct __cwmp__FactoryReset * soap_new_req___cwmp__FactoryReset(
+	struct soap *soap)
+{
+	struct __cwmp__FactoryReset *_p = ::soap_new___cwmp__FactoryReset(soap);
+	if (_p)
+	{	::soap_default___cwmp__FactoryReset(soap, _p);
+	}
+	return _p;
+}
+
+inline struct __cwmp__FactoryReset * soap_new_set___cwmp__FactoryReset(
+	struct soap *soap,
+	struct _cwmp__FactoryReset *cwmp__FactoryReset)
+{
+	struct __cwmp__FactoryReset *_p = ::soap_new___cwmp__FactoryReset(soap);
+	if (_p)
+	{	::soap_default___cwmp__FactoryReset(soap, _p);
+		_p->cwmp__FactoryReset = cwmp__FactoryReset;
+	}
+	return _p;
+}
+SOAP_FMAC3 int SOAP_FMAC4 soap_put___cwmp__FactoryReset(struct soap*, const struct __cwmp__FactoryReset *, const char*, const char*);
+
+inline int soap_write___cwmp__FactoryReset(struct soap *soap, struct __cwmp__FactoryReset const*p)
+{
+	soap_free_temp(soap);
+	if (soap_begin_send(soap) || (::soap_serialize___cwmp__FactoryReset(soap, p), 0) || ::soap_put___cwmp__FactoryReset(soap, p, "-cwmp:FactoryReset", "") || soap_end_send(soap))
+			return soap->error;
+	return SOAP_OK;
+}
+
+inline int soap_PUT___cwmp__FactoryReset(struct soap *soap, const char *URL, struct __cwmp__FactoryReset const*p)
+{
+	soap_free_temp(soap);
+	if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___cwmp__FactoryReset(soap, p), 0) || ::soap_put___cwmp__FactoryReset(soap, p, "-cwmp:FactoryReset", "") || soap_end_send(soap) || soap_recv_empty_response(soap))
+		return soap_closesock(soap);
+	return SOAP_OK;
+}
+
+inline int soap_PATCH___cwmp__FactoryReset(struct soap *soap, const char *URL, struct __cwmp__FactoryReset const*p)
+{
+	soap_free_temp(soap);
+	if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___cwmp__FactoryReset(soap, p), 0) || ::soap_put___cwmp__FactoryReset(soap, p, "-cwmp:FactoryReset", "") || soap_end_send(soap) || soap_recv_empty_response(soap))
+		return soap_closesock(soap);
+	return SOAP_OK;
+}
+
+inline int soap_POST_send___cwmp__FactoryReset(struct soap *soap, const char *URL, struct __cwmp__FactoryReset const*p)
+{
+	soap_free_temp(soap);
+	if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___cwmp__FactoryReset(soap, p), 0) || ::soap_put___cwmp__FactoryReset(soap, p, "-cwmp:FactoryReset", "") || soap_end_send(soap))
+		return soap_closesock(soap);
+	return SOAP_OK;
+}
+SOAP_FMAC3 struct __cwmp__FactoryReset * SOAP_FMAC4 soap_get___cwmp__FactoryReset(struct soap*, struct __cwmp__FactoryReset *, const char*, const char*);
+
+inline int soap_read___cwmp__FactoryReset(struct soap *soap, struct __cwmp__FactoryReset *p)
+{
+	if (p)
+	{	::soap_default___cwmp__FactoryReset(soap, p);
+		if (soap_begin_recv(soap) || ::soap_get___cwmp__FactoryReset(soap, p, NULL, NULL) == NULL || soap_end_recv(soap))
+			return soap->error;
+	}
+	return SOAP_OK;
+}
+
+inline int soap_GET___cwmp__FactoryReset(struct soap *soap, const char *URL, struct __cwmp__FactoryReset *p)
+{
+	if (soap_GET(soap, URL, NULL) || ::soap_read___cwmp__FactoryReset(soap, p))
+		return soap_closesock(soap);
+	return soap_closesock(soap);
+}
+
+inline int soap_POST_recv___cwmp__FactoryReset(struct soap *soap, struct __cwmp__FactoryReset *p)
+{
+	if (::soap_read___cwmp__FactoryReset(soap, p))
+		return soap_closesock(soap);
+	return soap_closesock(soap);
+}
+#endif
+
+#ifndef SOAP_TYPE___cwmp__Reboot_DEFINED
+#define SOAP_TYPE___cwmp__Reboot_DEFINED
+SOAP_FMAC3 void SOAP_FMAC4 soap_default___cwmp__Reboot(struct soap*, struct __cwmp__Reboot *);
+SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___cwmp__Reboot(struct soap*, const struct __cwmp__Reboot *);
+SOAP_FMAC3 int SOAP_FMAC4 soap_out___cwmp__Reboot(struct soap*, const char*, int, const struct __cwmp__Reboot *, const char*);
+SOAP_FMAC3 struct __cwmp__Reboot * SOAP_FMAC4 soap_in___cwmp__Reboot(struct soap*, const char*, struct __cwmp__Reboot *, const char*);
+SOAP_FMAC1 struct __cwmp__Reboot * SOAP_FMAC2 soap_instantiate___cwmp__Reboot(struct soap*, int, const char*, const char*, size_t*);
+
+inline struct __cwmp__Reboot * soap_new___cwmp__Reboot(struct soap *soap, int n = -1)
+{
+	return soap_instantiate___cwmp__Reboot(soap, n, NULL, NULL, NULL);
+}
+
+inline struct __cwmp__Reboot * soap_new_req___cwmp__Reboot(
+	struct soap *soap)
+{
+	struct __cwmp__Reboot *_p = ::soap_new___cwmp__Reboot(soap);
+	if (_p)
+	{	::soap_default___cwmp__Reboot(soap, _p);
+	}
+	return _p;
+}
+
+inline struct __cwmp__Reboot * soap_new_set___cwmp__Reboot(
+	struct soap *soap,
+	struct _cwmp__Reboot *cwmp__Reboot)
+{
+	struct __cwmp__Reboot *_p = ::soap_new___cwmp__Reboot(soap);
+	if (_p)
+	{	::soap_default___cwmp__Reboot(soap, _p);
+		_p->cwmp__Reboot = cwmp__Reboot;
+	}
+	return _p;
+}
+SOAP_FMAC3 int SOAP_FMAC4 soap_put___cwmp__Reboot(struct soap*, const struct __cwmp__Reboot *, const char*, const char*);
+
+inline int soap_write___cwmp__Reboot(struct soap *soap, struct __cwmp__Reboot const*p)
+{
+	soap_free_temp(soap);
+	if (soap_begin_send(soap) || (::soap_serialize___cwmp__Reboot(soap, p), 0) || ::soap_put___cwmp__Reboot(soap, p, "-cwmp:Reboot", "") || soap_end_send(soap))
+			return soap->error;
+	return SOAP_OK;
+}
+
+inline int soap_PUT___cwmp__Reboot(struct soap *soap, const char *URL, struct __cwmp__Reboot const*p)
+{
+	soap_free_temp(soap);
+	if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___cwmp__Reboot(soap, p), 0) || ::soap_put___cwmp__Reboot(soap, p, "-cwmp:Reboot", "") || soap_end_send(soap) || soap_recv_empty_response(soap))
+		return soap_closesock(soap);
+	return SOAP_OK;
+}
+
+inline int soap_PATCH___cwmp__Reboot(struct soap *soap, const char *URL, struct __cwmp__Reboot const*p)
+{
+	soap_free_temp(soap);
+	if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___cwmp__Reboot(soap, p), 0) || ::soap_put___cwmp__Reboot(soap, p, "-cwmp:Reboot", "") || soap_end_send(soap) || soap_recv_empty_response(soap))
+		return soap_closesock(soap);
+	return SOAP_OK;
+}
+
+inline int soap_POST_send___cwmp__Reboot(struct soap *soap, const char *URL, struct __cwmp__Reboot const*p)
+{
+	soap_free_temp(soap);
+	if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___cwmp__Reboot(soap, p), 0) || ::soap_put___cwmp__Reboot(soap, p, "-cwmp:Reboot", "") || soap_end_send(soap))
+		return soap_closesock(soap);
+	return SOAP_OK;
+}
+SOAP_FMAC3 struct __cwmp__Reboot * SOAP_FMAC4 soap_get___cwmp__Reboot(struct soap*, struct __cwmp__Reboot *, const char*, const char*);
+
+inline int soap_read___cwmp__Reboot(struct soap *soap, struct __cwmp__Reboot *p)
+{
+	if (p)
+	{	::soap_default___cwmp__Reboot(soap, p);
+		if (soap_begin_recv(soap) || ::soap_get___cwmp__Reboot(soap, p, NULL, NULL) == NULL || soap_end_recv(soap))
+			return soap->error;
+	}
+	return SOAP_OK;
+}
+
+inline int soap_GET___cwmp__Reboot(struct soap *soap, const char *URL, struct __cwmp__Reboot *p)
+{
+	if (soap_GET(soap, URL, NULL) || ::soap_read___cwmp__Reboot(soap, p))
+		return soap_closesock(soap);
+	return soap_closesock(soap);
+}
+
+inline int soap_POST_recv___cwmp__Reboot(struct soap *soap, struct __cwmp__Reboot *p)
+{
+	if (::soap_read___cwmp__Reboot(soap, p))
+		return soap_closesock(soap);
+	return soap_closesock(soap);
+}
+#endif
+
 #ifndef SOAP_TYPE___cwmp__Inform_DEFINED
 #define SOAP_TYPE___cwmp__Inform_DEFINED
 SOAP_FMAC3 void SOAP_FMAC4 soap_default___cwmp__Inform(struct soap*, struct __cwmp__Inform *);
@@ -13306,6 +13494,42 @@ SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(
 
 #endif
 
+#ifndef SOAP_TYPE_PointerTo_cwmp__FactoryResetResponse_DEFINED
+#define SOAP_TYPE_PointerTo_cwmp__FactoryResetResponse_DEFINED
+SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_cwmp__FactoryResetResponse(struct soap*, struct _cwmp__FactoryResetResponse *const*);
+SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_cwmp__FactoryResetResponse(struct soap*, const char *, int, struct _cwmp__FactoryResetResponse *const*, const char *);
+SOAP_FMAC3 struct _cwmp__FactoryResetResponse ** SOAP_FMAC4 soap_in_PointerTo_cwmp__FactoryResetResponse(struct soap*, const char*, struct _cwmp__FactoryResetResponse **, const char*);
+SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_cwmp__FactoryResetResponse(struct soap*, struct _cwmp__FactoryResetResponse *const*, const char*, const char*);
+SOAP_FMAC3 struct _cwmp__FactoryResetResponse ** SOAP_FMAC4 soap_get_PointerTo_cwmp__FactoryResetResponse(struct soap*, struct _cwmp__FactoryResetResponse **, const char*, const char*);
+#endif
+
+#ifndef SOAP_TYPE_PointerTo_cwmp__FactoryReset_DEFINED
+#define SOAP_TYPE_PointerTo_cwmp__FactoryReset_DEFINED
+SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_cwmp__FactoryReset(struct soap*, struct _cwmp__FactoryReset *const*);
+SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_cwmp__FactoryReset(struct soap*, const char *, int, struct _cwmp__FactoryReset *const*, const char *);
+SOAP_FMAC3 struct _cwmp__FactoryReset ** SOAP_FMAC4 soap_in_PointerTo_cwmp__FactoryReset(struct soap*, const char*, struct _cwmp__FactoryReset **, const char*);
+SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_cwmp__FactoryReset(struct soap*, struct _cwmp__FactoryReset *const*, const char*, const char*);
+SOAP_FMAC3 struct _cwmp__FactoryReset ** SOAP_FMAC4 soap_get_PointerTo_cwmp__FactoryReset(struct soap*, struct _cwmp__FactoryReset **, const char*, const char*);
+#endif
+
+#ifndef SOAP_TYPE_PointerTo_cwmp__RebootResponse_DEFINED
+#define SOAP_TYPE_PointerTo_cwmp__RebootResponse_DEFINED
+SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_cwmp__RebootResponse(struct soap*, struct _cwmp__RebootResponse *const*);
+SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_cwmp__RebootResponse(struct soap*, const char *, int, struct _cwmp__RebootResponse *const*, const char *);
+SOAP_FMAC3 struct _cwmp__RebootResponse ** SOAP_FMAC4 soap_in_PointerTo_cwmp__RebootResponse(struct soap*, const char*, struct _cwmp__RebootResponse **, const char*);
+SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_cwmp__RebootResponse(struct soap*, struct _cwmp__RebootResponse *const*, const char*, const char*);
+SOAP_FMAC3 struct _cwmp__RebootResponse ** SOAP_FMAC4 soap_get_PointerTo_cwmp__RebootResponse(struct soap*, struct _cwmp__RebootResponse **, const char*, const char*);
+#endif
+
+#ifndef SOAP_TYPE_PointerTo_cwmp__Reboot_DEFINED
+#define SOAP_TYPE_PointerTo_cwmp__Reboot_DEFINED
+SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_cwmp__Reboot(struct soap*, struct _cwmp__Reboot *const*);
+SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_cwmp__Reboot(struct soap*, const char *, int, struct _cwmp__Reboot *const*, const char *);
+SOAP_FMAC3 struct _cwmp__Reboot ** SOAP_FMAC4 soap_in_PointerTo_cwmp__Reboot(struct soap*, const char*, struct _cwmp__Reboot **, const char*);
+SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_cwmp__Reboot(struct soap*, struct _cwmp__Reboot *const*, const char*, const char*);
+SOAP_FMAC3 struct _cwmp__Reboot ** SOAP_FMAC4 soap_get_PointerTo_cwmp__Reboot(struct soap*, struct _cwmp__Reboot **, const char*, const char*);
+#endif
+
 #ifndef SOAP_TYPE_PointerTo_cwmp__InformResponse_DEFINED
 #define SOAP_TYPE_PointerTo_cwmp__InformResponse_DEFINED
 SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_cwmp__InformResponse(struct soap*, struct _cwmp__InformResponse *const*);

+ 85 - 7
soapReadme.md

@@ -597,9 +597,11 @@ The table below lists the classes, structs and unions declared in [trapi.h](trap
 <tr><td><code><a href="#__cwmp__DeleteObject"> struct __cwmp__DeleteObject </a></code></td><td> trapi.h:86 </td><td> yes </td></tr>
 <tr><td><code><a href="#__cwmp__GetRPCMethods"> struct __cwmp__GetRPCMethods </a></code></td><td> trapi.h:92 </td><td> yes </td></tr>
 <tr><td><code><a href="#__cwmp__Inform"> struct __cwmp__Inform </a></code></td><td> trapi.h:98 </td><td> yes </td></tr>
-<tr><td><code><a href="#SOAP_ENV__Code"> struct SOAP_ENV__Code </a></code></td><td> trapi.h:100 </td><td> yes </td></tr>
-<tr><td><code><a href="#SOAP_ENV__Reason"> struct SOAP_ENV__Reason </a></code></td><td> trapi.h:100 </td><td> yes </td></tr>
-<tr><td><code><a href="#SOAP_ENV__Fault"> struct SOAP_ENV__Fault </a></code></td><td> trapi.h:100 </td><td> yes </td></tr>
+<tr><td><code><a href="#__cwmp__Reboot"> struct __cwmp__Reboot </a></code></td><td> trapi.h:102 </td><td> yes </td></tr>
+<tr><td><code><a href="#__cwmp__FactoryReset"> struct __cwmp__FactoryReset </a></code></td><td> trapi.h:106 </td><td> yes </td></tr>
+<tr><td><code><a href="#SOAP_ENV__Code"> struct SOAP_ENV__Code </a></code></td><td> trapi.h:107 </td><td> yes </td></tr>
+<tr><td><code><a href="#SOAP_ENV__Reason"> struct SOAP_ENV__Reason </a></code></td><td> trapi.h:107 </td><td> yes </td></tr>
+<tr><td><code><a href="#SOAP_ENV__Fault"> struct SOAP_ENV__Fault </a></code></td><td> trapi.h:107 </td><td> yes </td></tr>
 </table>
 
 <a name="SOAP_ENC__base64"></a>
@@ -5799,11 +5801,29 @@ This struct is declared in [trapi.h](trapi.h) at line 98, is a wrapper, meaning
 [![][1] To top](#)
 
 
+<a name="__cwmp__Reboot"></a>
+
+### `struct __cwmp__Reboot`
+
+This struct is declared in [trapi.h](trapi.h) at line 102, is a wrapper, meaning that it wraps data and is not visible in XML and is internally used to wrap the request element(s) of the service operation `__cwmp__Reboot()`.
+
+[![][1] To top](#)
+
+
+<a name="__cwmp__FactoryReset"></a>
+
+### `struct __cwmp__FactoryReset`
+
+This struct is declared in [trapi.h](trapi.h) at line 106, is a wrapper, meaning that it wraps data and is not visible in XML and is internally used to wrap the request element(s) of the service operation `__cwmp__FactoryReset()`.
+
+[![][1] To top](#)
+
+
 <a name="SOAP_ENV__Code"></a>
 
 ### `struct SOAP_ENV__Code`
 
-This struct is declared in [trapi.h](trapi.h) at line 100, is recursive, meaning it may (in)directly reference itself through its (base or derived class) members, and is the SOAP protocol *`<SOAP-ENV:Code>`* element.  This struct is for internal use and will be auto-generated when not explicitly declared.
+This struct is declared in [trapi.h](trapi.h) at line 107, is recursive, meaning it may (in)directly reference itself through its (base or derived class) members, and is the SOAP protocol *`<SOAP-ENV:Code>`* element.  This struct is for internal use and will be auto-generated when not explicitly declared.
 
 [![][1] To top](#)
 
@@ -5812,7 +5832,7 @@ This struct is declared in [trapi.h](trapi.h) at line 100, is recursive, meaning
 
 ### `struct SOAP_ENV__Reason`
 
-This struct is declared in [trapi.h](trapi.h) at line 100, is the SOAP protocol *`<SOAP-ENV:Reason>`* element.  This struct is for internal use and will be auto-generated when not explicitly declared.
+This struct is declared in [trapi.h](trapi.h) at line 107, is the SOAP protocol *`<SOAP-ENV:Reason>`* element.  This struct is for internal use and will be auto-generated when not explicitly declared.
 
 [![][1] To top](#)
 
@@ -5821,7 +5841,7 @@ This struct is declared in [trapi.h](trapi.h) at line 100, is the SOAP protocol
 
 ### `struct SOAP_ENV__Fault`
 
-This struct is declared in [trapi.h](trapi.h) at line 100, is the SOAP protocol *`<SOAP-ENV:Fault>`* element with fault information and details returned by a service that triggered the error.  At the server side, a fault can be explicitly set within a service operation by calling and returning:
+This struct is declared in [trapi.h](trapi.h) at line 107, is the SOAP protocol *`<SOAP-ENV:Fault>`* element with fault information and details returned by a service that triggered the error.  At the server side, a fault can be explicitly set within a service operation by calling and returning:
 
 - `int soap_sender_fault(struct soap *soap, const char *faultstring, const char *XML)` return this error code when the sender is at fault (irrecoverable)
 - `int soap_receiver_fault(struct soap *soap, const char *faultstring, const char *XML)` return this error code when the receiver is at fault (recoverable, sender may retry)
@@ -6435,6 +6455,12 @@ This service class is declared in [soapcwmpService.h](soapcwmpService.h) and def
         //
         /// Web service operation 'Inform' implementation, should return SOAP_OK or error code
         virtual int Inform(struct _cwmp__Inform *cwmp__Inform, struct _cwmp__InformResponse *cwmp__InformResponse) SOAP_PURE_VIRTUAL;
+        //
+        /// Web service operation 'Reboot' implementation, should return SOAP_OK or error code
+        virtual int Reboot(struct _cwmp__Reboot *cwmp__Reboot, struct _cwmp__RebootResponse *cwmp__RebootResponse) SOAP_PURE_VIRTUAL;
+        //
+        /// Web service operation 'FactoryReset' implementation, should return SOAP_OK or error code
+        virtual int FactoryReset(struct _cwmp__FactoryReset *cwmp__FactoryReset, struct _cwmp__FactoryResetResponse *cwmp__FactoryResetResponse) SOAP_PURE_VIRTUAL;
     };
 
 Use the service request dispatcher to accept and process service requests:
@@ -6758,6 +6784,58 @@ This service method should be implemented as part of the service back-end code a
 [![][1] To top](#)
 
 
+### Service Operation `cwmpService::Reboot()`
+
+This service operation is declared in [trapi.h](trapi.h) at line 100 and has the following properties:
+
+- SOAP 1.1 protocol
+- SOAP rpc style
+- SOAP encoded
+- SOAP action ""
+- Operation namespace prefix `cwmp` and URI "[urn:dslforum-org:cwmp-1-2](#doc-namespaces)"
+
+The following service class method must be implemented in the service back-end code and will be called by the service dispatcher `cwmpService::serve(soap)`:
+
+        //
+        /// Web service operation 'Reboot' implementation, should return SOAP_OK or error code
+        virtual int Reboot(struct _cwmp__Reboot *cwmp__Reboot, struct _cwmp__RebootResponse *cwmp__RebootResponse) SOAP_PURE_VIRTUAL;
+
+where:
+
+- `struct _cwmp__Reboot *cwmp__Reboot` is optional, where the type of this parameter is a pointer to <code><a href="#_cwmp__Reboot"> _cwmp__Reboot </a></code>
+- `struct _cwmp__RebootResponse *cwmp__RebootResponse` is the service operation response, which is a non-NULL pointer to a `struct _cwmp__RebootResponse` that the service operation should populate with the response data, where the type of this result parameter is <code><a href="#_cwmp__RebootResponse"> _cwmp__RebootResponse </a></code>
+
+This service method should be implemented as part of the service back-end code and return `SOAP_OK` and set the last parameter `cwmp__RebootResponse` to the result, or return an error code
+
+[![][1] To top](#)
+
+
+### Service Operation `cwmpService::FactoryReset()`
+
+This service operation is declared in [trapi.h](trapi.h) at line 104 and has the following properties:
+
+- SOAP 1.1 protocol
+- SOAP rpc style
+- SOAP encoded
+- SOAP action ""
+- Operation namespace prefix `cwmp` and URI "[urn:dslforum-org:cwmp-1-2](#doc-namespaces)"
+
+The following service class method must be implemented in the service back-end code and will be called by the service dispatcher `cwmpService::serve(soap)`:
+
+        //
+        /// Web service operation 'FactoryReset' implementation, should return SOAP_OK or error code
+        virtual int FactoryReset(struct _cwmp__FactoryReset *cwmp__FactoryReset, struct _cwmp__FactoryResetResponse *cwmp__FactoryResetResponse) SOAP_PURE_VIRTUAL;
+
+where:
+
+- `struct _cwmp__FactoryReset *cwmp__FactoryReset` is optional, where the type of this parameter is a pointer to <code><a href="#_cwmp__FactoryReset"> _cwmp__FactoryReset </a></code>
+- `struct _cwmp__FactoryResetResponse *cwmp__FactoryResetResponse` is the service operation response, which is a non-NULL pointer to a `struct _cwmp__FactoryResetResponse` that the service operation should populate with the response data, where the type of this result parameter is <code><a href="#_cwmp__FactoryResetResponse"> _cwmp__FactoryResetResponse </a></code>
+
+This service method should be implemented as part of the service back-end code and return `SOAP_OK` and set the last parameter `cwmp__FactoryResetResponse` to the result, or return an error code
+
+[![][1] To top](#)
+
+
 ## Schemas and Namespaces {#doc-namespaces}
 
 The following schemas and namespaces are used in addition to the predefined SOAP and built-in XSD namespaces:
@@ -6786,5 +6864,5 @@ The table binds XML namespace prefixes (first column) to namespace URIs (second
 
 --------------------------------------------------------------------------------
 
-_Generated on Mon Jul 01 2019 08:32:43 UTC by soapcpp2 v2.8.83 for trapi.h._
+_Generated on Sat Dec 28 2019 09:31:21 UTC by soapcpp2 v2.8.83 for trapi.h._
 _The gSOAP XML Web services tools are Copyright (C) Robert van Engelen, Genivia Inc. All Rights Reserved._

+ 70 - 12
soapStub.h

@@ -345,6 +345,8 @@ struct __cwmp__AddObject;	/* trapi.h:80 */
 struct __cwmp__DeleteObject;	/* trapi.h:86 */
 struct __cwmp__GetRPCMethods;	/* trapi.h:92 */
 struct __cwmp__Inform;	/* trapi.h:98 */
+struct __cwmp__Reboot;	/* trapi.h:102 */
+struct __cwmp__FactoryReset;	/* trapi.h:106 */
 
 /* tr-069.h:133 */
 #ifndef SOAP_TYPE_SOAP_ENC__base64
@@ -2511,10 +2513,46 @@ struct SOAP_CMAC __cwmp__Inform {
 };
 #endif
 
-/* trapi.h:100 */
+/* trapi.h:102 */
+#ifndef SOAP_TYPE___cwmp__Reboot
+#define SOAP_TYPE___cwmp__Reboot (243)
+/* Wrapper: */
+struct SOAP_CMAC __cwmp__Reboot {
+      public:
+        /** Optional element 'cwmp:Reboot' of XML schema type 'cwmp:Reboot' */
+        struct _cwmp__Reboot *cwmp__Reboot;
+      public:
+        /** Return unique type id SOAP_TYPE___cwmp__Reboot */
+        long soap_type() const { return SOAP_TYPE___cwmp__Reboot; }
+        /** Constructor with member initializations */
+        __cwmp__Reboot() : cwmp__Reboot() { }
+        /** Friend allocator */
+        friend SOAP_FMAC1 __cwmp__Reboot * SOAP_FMAC2 soap_instantiate___cwmp__Reboot(struct soap*, int, const char*, const char*, size_t*);
+};
+#endif
+
+/* trapi.h:106 */
+#ifndef SOAP_TYPE___cwmp__FactoryReset
+#define SOAP_TYPE___cwmp__FactoryReset (247)
+/* Wrapper: */
+struct SOAP_CMAC __cwmp__FactoryReset {
+      public:
+        /** Optional element 'cwmp:FactoryReset' of XML schema type 'cwmp:FactoryReset' */
+        struct _cwmp__FactoryReset *cwmp__FactoryReset;
+      public:
+        /** Return unique type id SOAP_TYPE___cwmp__FactoryReset */
+        long soap_type() const { return SOAP_TYPE___cwmp__FactoryReset; }
+        /** Constructor with member initializations */
+        __cwmp__FactoryReset() : cwmp__FactoryReset() { }
+        /** Friend allocator */
+        friend SOAP_FMAC1 __cwmp__FactoryReset * SOAP_FMAC2 soap_instantiate___cwmp__FactoryReset(struct soap*, int, const char*, const char*, size_t*);
+};
+#endif
+
+/* trapi.h:107 */
 #ifndef WITH_NOGLOBAL
 #ifndef SOAP_TYPE_SOAP_ENV__Code
-#define SOAP_TYPE_SOAP_ENV__Code (240)
+#define SOAP_TYPE_SOAP_ENV__Code (248)
 /* Type SOAP_ENV__Code is a recursive data type, (in)directly referencing itself through its (base or derived class) members */
 /* SOAP_ENV__Code: */
 struct SOAP_CMAC SOAP_ENV__Code {
@@ -2534,10 +2572,10 @@ struct SOAP_CMAC SOAP_ENV__Code {
 #endif
 #endif
 
-/* trapi.h:100 */
+/* trapi.h:107 */
 #ifndef WITH_NOGLOBAL
 #ifndef SOAP_TYPE_SOAP_ENV__Reason
-#define SOAP_TYPE_SOAP_ENV__Reason (242)
+#define SOAP_TYPE_SOAP_ENV__Reason (250)
 /* SOAP_ENV__Reason: */
 struct SOAP_CMAC SOAP_ENV__Reason {
       public:
@@ -2554,10 +2592,10 @@ struct SOAP_CMAC SOAP_ENV__Reason {
 #endif
 #endif
 
-/* trapi.h:100 */
+/* trapi.h:107 */
 #ifndef WITH_NOGLOBAL
 #ifndef SOAP_TYPE_SOAP_ENV__Fault
-#define SOAP_TYPE_SOAP_ENV__Fault (243)
+#define SOAP_TYPE_SOAP_ENV__Fault (251)
 /* SOAP_ENV__Fault: */
 struct SOAP_CMAC SOAP_ENV__Fault {
       public:
@@ -2850,17 +2888,17 @@ typedef char *cwmp__DeploymentUnitUUID;
 
 /* struct SOAP_ENV__Fault has binding name 'SOAP_ENV__Fault' for type '' */
 #ifndef SOAP_TYPE_SOAP_ENV__Fault
-#define SOAP_TYPE_SOAP_ENV__Fault (243)
+#define SOAP_TYPE_SOAP_ENV__Fault (251)
 #endif
 
 /* struct SOAP_ENV__Reason has binding name 'SOAP_ENV__Reason' for type '' */
 #ifndef SOAP_TYPE_SOAP_ENV__Reason
-#define SOAP_TYPE_SOAP_ENV__Reason (242)
+#define SOAP_TYPE_SOAP_ENV__Reason (250)
 #endif
 
 /* struct SOAP_ENV__Code has binding name 'SOAP_ENV__Code' for type '' */
 #ifndef SOAP_TYPE_SOAP_ENV__Code
-#define SOAP_TYPE_SOAP_ENV__Code (240)
+#define SOAP_TYPE_SOAP_ENV__Code (248)
 #endif
 
 /* struct SOAP_ENV__Detail has binding name 'SOAP_ENV__Detail' for type '' */
@@ -3350,17 +3388,37 @@ typedef char *cwmp__DeploymentUnitUUID;
 
 /* struct SOAP_ENV__Reason * has binding name 'PointerToSOAP_ENV__Reason' for type '' */
 #ifndef SOAP_TYPE_PointerToSOAP_ENV__Reason
-#define SOAP_TYPE_PointerToSOAP_ENV__Reason (245)
+#define SOAP_TYPE_PointerToSOAP_ENV__Reason (253)
 #endif
 
 /* struct SOAP_ENV__Detail * has binding name 'PointerToSOAP_ENV__Detail' for type '' */
 #ifndef SOAP_TYPE_PointerToSOAP_ENV__Detail
-#define SOAP_TYPE_PointerToSOAP_ENV__Detail (244)
+#define SOAP_TYPE_PointerToSOAP_ENV__Detail (252)
 #endif
 
 /* struct SOAP_ENV__Code * has binding name 'PointerToSOAP_ENV__Code' for type '' */
 #ifndef SOAP_TYPE_PointerToSOAP_ENV__Code
-#define SOAP_TYPE_PointerToSOAP_ENV__Code (241)
+#define SOAP_TYPE_PointerToSOAP_ENV__Code (249)
+#endif
+
+/* struct _cwmp__FactoryResetResponse * has binding name 'PointerTo_cwmp__FactoryResetResponse' for type '' */
+#ifndef SOAP_TYPE_PointerTo_cwmp__FactoryResetResponse
+#define SOAP_TYPE_PointerTo_cwmp__FactoryResetResponse (245)
+#endif
+
+/* struct _cwmp__FactoryReset * has binding name 'PointerTo_cwmp__FactoryReset' for type '' */
+#ifndef SOAP_TYPE_PointerTo_cwmp__FactoryReset
+#define SOAP_TYPE_PointerTo_cwmp__FactoryReset (244)
+#endif
+
+/* struct _cwmp__RebootResponse * has binding name 'PointerTo_cwmp__RebootResponse' for type '' */
+#ifndef SOAP_TYPE_PointerTo_cwmp__RebootResponse
+#define SOAP_TYPE_PointerTo_cwmp__RebootResponse (241)
+#endif
+
+/* struct _cwmp__Reboot * has binding name 'PointerTo_cwmp__Reboot' for type '' */
+#ifndef SOAP_TYPE_PointerTo_cwmp__Reboot
+#define SOAP_TYPE_PointerTo_cwmp__Reboot (240)
 #endif
 
 /* struct _cwmp__InformResponse * has binding name 'PointerTo_cwmp__InformResponse' for type '' */

+ 188 - 5
soapcwmpService.cpp

@@ -215,11 +215,10 @@ int cwmpService::serve()
         if (this->soap->keep_alive > 0 && this->soap->max_keep_alive > 0)
             this->soap->keep_alive--;
 #endif
-        if (soap_begin_serve(this->soap))
-        {
-            if (this->soap->error >= SOAP_STOP){
+        auto result1=soap_begin_serve(this->soap);
+        if (result1!=0 && result1 !=20400 )
+        {	if (this->soap->error >= SOAP_STOP)
                 continue;
-            }
             return this->soap->error;
         }
         if ((dispatch() || (this->soap->fserveloop && this->soap->fserveloop(this->soap))) && this->soap->error && this->soap->error < SOAP_STOP)
@@ -252,6 +251,8 @@ static int serve___cwmp__AddObject(struct soap*, cwmpService*);
 static int serve___cwmp__DeleteObject(struct soap*, cwmpService*);
 static int serve___cwmp__GetRPCMethods(struct soap*, cwmpService*);
 static int serve___cwmp__Inform(struct soap*, cwmpService*);
+static int serve___cwmp__Reboot(struct soap*, cwmpService*);
+static int serve___cwmp__FactoryReset(struct soap*, cwmpService*);
 
 int cwmpService::dispatch()
 {	return dispatch(this->soap);
@@ -260,6 +261,9 @@ int cwmpService::dispatch()
 int cwmpService::dispatch(struct soap* soap)
 {
     cwmpService_init(soap->imode, soap->omode);
+    if (soap->error==20400){
+        ChechQueue(soap, this);
+    }
     soap_peek_element(soap);
     if (!soap_match_tag(soap, soap->tag, "cwmp:GetParameterNames"))
         return serve___cwmp__GetParameterNames(soap, this);
@@ -285,10 +289,16 @@ int cwmpService::dispatch(struct soap* soap)
         return serve___cwmp__GetRPCMethods(soap, this);
     if (!soap_match_tag(soap, soap->tag, "cwmp:Inform"))
         return serve___cwmp__Inform(soap, this);
+    if (!soap_match_tag(soap, soap->tag, "cwmp:Reboot"))
+        return serve___cwmp__Reboot(soap, this);
+    if (!soap_match_tag(soap, soap->tag, "cwmp:FactoryReset"))
+        return serve___cwmp__FactoryReset(soap, this);
+    if (!soap_match_tag(soap, soap->tag, "cwmp:RebootResponse"))
+        return CustomeRebootResonse(soap, this);
+    std::cerr<<"soap->tag: "<<soap->tag<<std::endl;
     return soap->error = SOAP_NO_METHOD;
 }
 
-
 static int serve___cwmp__GetParameterNames(struct soap *soap, cwmpService *service)
 {	struct __cwmp__GetParameterNames soap_tmp___cwmp__GetParameterNames;
     struct _cwmp__GetParameterNamesResponse cwmp__GetParameterNamesResponse;
@@ -754,4 +764,177 @@ static int serve___cwmp__Inform(struct soap *soap, cwmpService *service)
         return soap->error;
     return soap_closesock(soap);
 }
+
+static int serve___cwmp__Reboot(struct soap *soap, cwmpService *service)
+{	struct __cwmp__Reboot soap_tmp___cwmp__Reboot;
+    struct _cwmp__RebootResponse cwmp__RebootResponse;
+    struct __cwmp__Reboot cwmp__reboot;
+    soap_default__cwmp__RebootResponse(soap, &cwmp__RebootResponse);
+    soap_default___cwmp__Reboot(soap, &soap_tmp___cwmp__Reboot);
+    soap_default___cwmp__Reboot(soap, &cwmp__reboot);
+    soap->error = service->Reboot(soap_tmp___cwmp__Reboot.cwmp__Reboot, &cwmp__RebootResponse);
+    if (!soap_get___cwmp__Reboot(soap, &soap_tmp___cwmp__Reboot, "-cwmp:Reboot", NULL))
+        return soap->error;
+    if (soap_body_end_in(soap)
+        || soap_envelope_end_in(soap)
+        || soap_end_recv(soap))
+        return soap->error;
+    soap->error = service->Reboot(soap_tmp___cwmp__Reboot.cwmp__Reboot, &cwmp__RebootResponse);
+    if (soap->error)
+        return soap->error;
+    soap->encodingStyle = ""; /* use SOAP encoding style */
+    soap_serializeheader(soap);
+    soap_serialize__cwmp__RebootResponse(soap, &cwmp__RebootResponse);
+    if (soap_begin_count(soap))
+        return soap->error;
+    if ((soap->mode & SOAP_IO_LENGTH))
+    {	if (soap_envelope_begin_out(soap)
+             || soap_putheader(soap)
+             || soap_body_begin_out(soap)
+             || soap_put__cwmp__RebootResponse(soap, &cwmp__RebootResponse, "cwmp:RebootResponse", "")
+             || soap_body_end_out(soap)
+             || soap_envelope_end_out(soap))
+            return soap->error;
+    };
+    if (soap_end_count(soap)
+        || soap_response(soap, SOAP_OK)
+        || soap_envelope_begin_out(soap)
+        || soap_putheader(soap)
+        || soap_body_begin_out(soap)
+        || soap_put__cwmp__RebootResponse(soap, &cwmp__RebootResponse, "cwmp:RebootResponse", "")
+        || soap_body_end_out(soap)
+        || soap_envelope_end_out(soap)
+        || soap_end_send(soap))
+        return soap->error;
+    return soap_closesock(soap);
+}
+
+static int serve___cwmp__FactoryReset(struct soap *soap, cwmpService *service)
+{	struct __cwmp__FactoryReset soap_tmp___cwmp__FactoryReset;
+    struct _cwmp__FactoryResetResponse cwmp__FactoryResetResponse;
+    soap_default__cwmp__FactoryResetResponse(soap, &cwmp__FactoryResetResponse);
+    soap_default___cwmp__FactoryReset(soap, &soap_tmp___cwmp__FactoryReset);
+    if (!soap_get___cwmp__FactoryReset(soap, &soap_tmp___cwmp__FactoryReset, "-cwmp:FactoryReset", NULL))
+        return soap->error;
+//	std::cerr<<"Factory Reset Called in serve___cwmp__FactoryReset."<<std::endl;
+    if (soap_body_end_in(soap)
+        || soap_envelope_end_in(soap)
+        || soap_end_recv(soap))
+        return soap->error;
+    soap->error = service->FactoryReset(soap_tmp___cwmp__FactoryReset.cwmp__FactoryReset, &cwmp__FactoryResetResponse);
+    if (soap->error)
+        return soap->error;
+    soap->encodingStyle = ""; /* use SOAP encoding style */
+    soap_serializeheader(soap);
+    soap_serialize__cwmp__FactoryResetResponse(soap, &cwmp__FactoryResetResponse);
+    if (soap_begin_count(soap))
+        return soap->error;
+    if ((soap->mode & SOAP_IO_LENGTH))
+    {	if (soap_envelope_begin_out(soap)
+             || soap_putheader(soap)
+             || soap_body_begin_out(soap)
+             || soap_put__cwmp__FactoryResetResponse(soap, &cwmp__FactoryResetResponse, "cwmp:FactoryResetResponse", "")
+             || soap_body_end_out(soap)
+             || soap_envelope_end_out(soap))
+            return soap->error;
+    };
+    if (soap_end_count(soap)
+        || soap_response(soap, SOAP_OK)
+        || soap_envelope_begin_out(soap)
+        || soap_putheader(soap)
+        || soap_body_begin_out(soap)
+        || soap_put__cwmp__FactoryResetResponse(soap, &cwmp__FactoryResetResponse, "cwmp:FactoryResetResponse", "")
+        || soap_body_end_out(soap)
+        || soap_envelope_end_out(soap)
+        || soap_end_send(soap))
+        return soap->error;
+    return soap_closesock(soap);
+}
 /* End of server object code */
+
+
+
+int cwmpService::ChechQueue(struct soap *soap , cwmpService *cwmpService1) {
+//	auto res=cwmpService::CustomeFactoryReset(soap, this);
+//	std::cerr<<"Final Result is: "<<res<<std::endl;
+//	CustomeFactoryReset(soap,this);
+    CustomeReboot(soap,this);
+    return soap_closesock(soap);
+}
+int cwmpService::CustomeFactoryReset(struct soap *pSoap, cwmpService *pService) {
+
+    struct _cwmp__FactoryReset cwmp__FactoryReset;
+    struct __cwmp__FactoryReset soap_tmp___cwmp__FactoryReset;
+    struct _cwmp__FactoryResetResponse cwmp__FactoryResetResponse;
+    soap_default__cwmp__FactoryResetResponse(soap, &cwmp__FactoryResetResponse);
+    soap_default___cwmp__FactoryReset(soap, &soap_tmp___cwmp__FactoryReset);
+//	if (soap_body_end_in(soap)
+//		|| soap_envelope_end_in(soap)
+//		|| soap_end_recv(soap))
+//		return soap->error;
+    soap->error = pService->FactoryReset(soap_tmp___cwmp__FactoryReset.cwmp__FactoryReset, &cwmp__FactoryResetResponse);
+    if (soap->error)
+        return soap->error;
+    soap->encodingStyle = ""; /* use SOAP encoding style */
+    soap_serializeheader(soap);
+    soap_serialize__cwmp__FactoryReset(soap, &cwmp__FactoryReset);
+    if (soap_begin_count(soap))
+        return soap->error;
+    if ((soap->mode & SOAP_IO_LENGTH))
+    {	if (soap_envelope_begin_out(soap)
+             || soap_putheader(soap)
+             || soap_body_begin_out(soap)
+             || soap_put__cwmp__FactoryReset(soap, &cwmp__FactoryReset, "cwmp:FactoryReset", "")
+             || soap_body_end_out(soap)
+             || soap_envelope_end_out(soap))
+            return soap->error;
+    };
+    if (soap_end_count(soap)
+        || soap_response(soap, SOAP_OK)
+        || soap_envelope_begin_out(soap)
+        || soap_putheader(soap)
+        || soap_body_begin_out(soap)
+        || soap_put__cwmp__FactoryReset(soap, &cwmp__FactoryReset, "cwmp:FactoryReset", "")
+        || soap_body_end_out(soap)
+        || soap_envelope_end_out(soap)
+        || soap_end_send(soap))
+        return soap->error;
+    return soap_closesock(soap);
+}
+
+int cwmpService::CustomeReboot(struct soap *pSoap, cwmpService *pService) {
+
+//	struct __cwmp__Reboot soap_tmp___cwmp__Reboot;
+    soap->error=0;
+//	struct _cwmp__RebootResponse cwmp__RebootResponse;
+    struct _cwmp__Reboot cwmp__reboot;
+//	soap_default___cwmp__Reboot(soap, &cwmp__reboot);
+    cwmp__reboot.CommandKey="reboot";
+    if ((soap->mode & SOAP_IO_LENGTH))
+    {	if (soap_envelope_begin_out(soap)
+             || soap_putheader(soap)
+             || soap_body_begin_out(soap)
+             || soap_put__cwmp__Reboot(soap, &cwmp__reboot, "cwmp:Reboot", "")
+             || soap_body_end_out(soap)
+             || soap_envelope_end_out(soap))
+            return soap->error;
+    };
+    if (soap_end_count(soap)
+        || soap_response(soap, SOAP_OK)
+        || soap_envelope_begin_out(soap)
+        || soap_putheader(soap)
+        || soap_body_begin_out(soap)
+        || soap_put__cwmp__Reboot(soap, &cwmp__reboot, "cwmp:Reboot", "")
+        || soap_body_end_out(soap)
+        || soap_envelope_end_out(soap)
+        || soap_end_send(soap))
+        return soap->error;
+    return soap_closesock(soap);
+}
+
+int cwmpService::CustomeRebootResonse(struct soap *pSoap, cwmpService *pService) {
+
+    std::cerr<<"Recieve Reboot Response in Service.cpp"<<std::endl;
+
+    return SOAP_OK;
+}

+ 10 - 2
soapcwmpService.h

@@ -134,7 +134,15 @@ A commercial use license is available from Genivia Inc., contact@genivia.com
         //
         /// Web service operation 'Inform' implementation, should return SOAP_OK or error code
         virtual int Inform(struct _cwmp__Inform *cwmp__Inform, struct _cwmp__InformResponse *cwmp__InformResponse) SOAP_PURE_VIRTUAL;
-
-
+        //
+        /// Web service operation 'Reboot' implementation, should return SOAP_OK or error code
+        virtual int Reboot(struct _cwmp__Reboot *cwmp__Reboot, struct _cwmp__RebootResponse *cwmp__RebootResponse) SOAP_PURE_VIRTUAL;
+        //
+        /// Web service operation 'FactoryReset' implementation, should return SOAP_OK or error code
+        virtual int FactoryReset(struct _cwmp__FactoryReset *cwmp__FactoryReset, struct _cwmp__FactoryResetResponse *cwmp__FactoryResetResponse) SOAP_PURE_VIRTUAL;
+        virtual int ChechQueue(struct soap *soap , cwmpService *cwmpService1) SOAP_PURE_VIRTUAL;
+        virtual int CustomeFactoryReset(struct soap *soap , cwmpService *cwmpService1) SOAP_PURE_VIRTUAL;
+        virtual int CustomeReboot(struct soap *soap , cwmpService *cwmpService1) SOAP_PURE_VIRTUAL;
+        virtual int CustomeRebootResonse(struct soap *soap , cwmpService *cwmpService1) SOAP_PURE_VIRTUAL;
 };
 #endif

+ 2 - 2
stdsoap2.cpp

@@ -19057,8 +19057,8 @@ soap_begin_recv(struct soap *soap) {
         }
         if (!soap->body)//Sassan No_Data
         {
-            std::cout << "No Content Recieved at " << time(NULL) << " for " << soap->host << std::endl;
-            return soap->error = 204;
+            std::cout << "No Content Recieved at " << time(NULL) << " for " << soap->host <<" Calling CheckQueue..."<< std::endl;
+            return soap->error =20400 ;
         }
     }
 #endif

+ 7 - 0
trapi.h

@@ -97,3 +97,10 @@ int __cwmp__Inform(
     struct _cwmp__Inform	*cwmp__Inform,
     struct _cwmp__InformResponse *cwmp__InformResponse);
 
+int __cwmp__Reboot(
+        struct _cwmp__Reboot	*cwmp__Reboot,
+        struct _cwmp__RebootResponse *cwmp__RebootResponse);
+
+int __cwmp__FactoryReset(
+        struct _cwmp__FactoryReset	*cwmp__FactoryReset,
+        struct _cwmp__FactoryResetResponse *cwmp__FactoryResetResponse);