--- a/controls/DebugVariablePanel/DebugVariableItem.py Tue Sep 13 16:51:54 2022 +0200
+++ b/controls/DebugVariablePanel/DebugVariableItem.py Tue Sep 13 16:53:15 2022 +0200
@@ -144,7 +144,7 @@
"""
# Return immediately if data empty or none
if self.Data is None or self.Data.count == 0:
- return []
+ return None
# Find nearest data outside given range indexes
start_idx = (self.GetNearestData(start_tick, -1)
@@ -187,6 +187,9 @@
# Get data in given tick range
data = self.GetData(start_tick, end_tick)
+ if data is None:
+ return None, None, None
+
# Value range is calculated on whole data
if full_range:
return data, self.MinValue, self.MaxValue
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/exemples/svghmi_jumps/beremiz.xml Tue Sep 13 16:53:15 2022 +0200
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='utf-8'?>
+<BeremizRoot xmlns:xsd="http://www.w3.org/2001/XMLSchema" URI_location="LOCAL://">
+ <TargetType/>
+ <Libraries Enable_SVGHMI_Library="true"/>
+</BeremizRoot>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/exemples/svghmi_jumps/plc.xml Tue Sep 13 16:53:15 2022 +0200
@@ -0,0 +1,660 @@
+<?xml version='1.0' encoding='utf-8'?>
+<project xmlns:ns1="http://www.plcopen.org/xml/tc6_0201" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.plcopen.org/xml/tc6_0201">
+ <fileHeader companyName="Unknown" productName="Unnamed" productVersion="1" creationDateTime="2022-09-05T09:02:48"/>
+ <contentHeader name="Unnamed" modificationDateTime="2022-09-09T09:39:37">
+ <coordinateInfo>
+ <fbd>
+ <scaling x="5" y="5"/>
+ </fbd>
+ <ld>
+ <scaling x="0" y="0"/>
+ </ld>
+ <sfc>
+ <scaling x="0" y="0"/>
+ </sfc>
+ </coordinateInfo>
+ </contentHeader>
+ <types>
+ <dataTypes/>
+ <pous>
+ <pou name="program0" pouType="program">
+ <interface>
+ <localVars>
+ <variable name="LOGGER0">
+ <type>
+ <derived name="LOGGER"/>
+ </type>
+ </variable>
+ <variable name="ENTERING_PAGE">
+ <type>
+ <derived name="HMI_BOOL"/>
+ </type>
+ </variable>
+ <variable name="LEVEL">
+ <type>
+ <derived name="LOGLEVEL"/>
+ </type>
+ <initialValue>
+ <simpleValue value="DEBUG"/>
+ </initialValue>
+ </variable>
+ </localVars>
+ <externalVars>
+ <variable name="CURRENT_PAGE_0">
+ <type>
+ <derived name="HMI_STRING"/>
+ </type>
+ </variable>
+ </externalVars>
+ <localVars>
+ <variable name="R_TRIG0">
+ <type>
+ <derived name="R_TRIG"/>
+ </type>
+ </variable>
+ <variable name="ENABLE_JUMP">
+ <type>
+ <derived name="HMI_BOOL"/>
+ </type>
+ </variable>
+ <variable name="FB_ZERO">
+ <type>
+ <derived name="my_functionBlock"/>
+ </type>
+ </variable>
+ <variable name="FB_ONE">
+ <type>
+ <derived name="my_functionBlock"/>
+ </type>
+ </variable>
+ <variable name="FB_TWO">
+ <type>
+ <derived name="my_functionBlock"/>
+ </type>
+ </variable>
+ <variable name="FB_THREE">
+ <type>
+ <derived name="my_functionBlock"/>
+ </type>
+ </variable>
+ <variable name="FB_FOUR">
+ <type>
+ <derived name="my_functionBlock"/>
+ </type>
+ </variable>
+ <variable name="FB_FIVE">
+ <type>
+ <derived name="my_functionBlock"/>
+ </type>
+ </variable>
+ <variable name="Enable0">
+ <type>
+ <derived name="HMI_BOOL"/>
+ </type>
+ <initialValue>
+ <simpleValue value="TRUE"/>
+ </initialValue>
+ </variable>
+ <variable name="Enable1">
+ <type>
+ <derived name="HMI_BOOL"/>
+ </type>
+ </variable>
+ <variable name="Enable2">
+ <type>
+ <derived name="HMI_BOOL"/>
+ </type>
+ <initialValue>
+ <simpleValue value="TRUE"/>
+ </initialValue>
+ </variable>
+ <variable name="Enable3">
+ <type>
+ <derived name="HMI_BOOL"/>
+ </type>
+ <initialValue>
+ <simpleValue value="TRUE"/>
+ </initialValue>
+ </variable>
+ <variable name="Enable4">
+ <type>
+ <derived name="HMI_BOOL"/>
+ </type>
+ </variable>
+ <variable name="Enable5">
+ <type>
+ <derived name="HMI_BOOL"/>
+ </type>
+ <initialValue>
+ <simpleValue value="TRUE"/>
+ </initialValue>
+ </variable>
+ </localVars>
+ </interface>
+ <body>
+ <FBD>
+ <block localId="1" typeName="LOGGER" instanceName="LOGGER0" executionOrderId="0" height="105" width="58">
+ <position x="280" y="275"/>
+ <inputVariables>
+ <variable formalParameter="TRIG">
+ <connectionPointIn>
+ <relPosition x="0" y="35"/>
+ <connection refLocalId="7">
+ <position x="280" y="310"/>
+ <position x="189" y="310"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ <variable formalParameter="MSG">
+ <connectionPointIn>
+ <relPosition x="0" y="60"/>
+ <connection refLocalId="11">
+ <position x="280" y="335"/>
+ <position x="212" y="335"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ <variable formalParameter="LEVEL">
+ <connectionPointIn>
+ <relPosition x="0" y="90"/>
+ <connection refLocalId="8">
+ <position x="280" y="365"/>
+ <position x="190" y="365"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ </inputVariables>
+ <inOutVariables/>
+ <outputVariables/>
+ </block>
+ <inVariable localId="2" executionOrderId="0" height="24" width="114" negated="false">
+ <position x="25" y="550"/>
+ <connectionPointOut>
+ <relPosition x="114" y="10"/>
+ </connectionPointOut>
+ <expression>ENTERING_PAGE</expression>
+ </inVariable>
+ <inVariable localId="4" executionOrderId="0" height="25" width="90" negated="false">
+ <position x="160" y="575"/>
+ <connectionPointOut>
+ <relPosition x="90" y="10"/>
+ </connectionPointOut>
+ <expression>BOOL#FALSE</expression>
+ </inVariable>
+ <block localId="6" typeName="MOVE" executionOrderId="0" height="70" width="55">
+ <position x="295" y="530"/>
+ <inputVariables>
+ <variable formalParameter="EN" edge="falling">
+ <connectionPointIn>
+ <relPosition x="0" y="30"/>
+ <connection refLocalId="13" formalParameter="Q">
+ <position x="295" y="560"/>
+ <position x="250" y="560"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ <variable formalParameter="IN">
+ <connectionPointIn>
+ <relPosition x="0" y="55"/>
+ <connection refLocalId="4">
+ <position x="295" y="585"/>
+ <position x="250" y="585"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ </inputVariables>
+ <inOutVariables/>
+ <outputVariables>
+ <variable formalParameter="ENO">
+ <connectionPointOut>
+ <relPosition x="55" y="30"/>
+ </connectionPointOut>
+ </variable>
+ <variable formalParameter="OUT">
+ <connectionPointOut>
+ <relPosition x="55" y="55"/>
+ </connectionPointOut>
+ </variable>
+ </outputVariables>
+ </block>
+ <inVariable localId="7" executionOrderId="0" height="24" width="114" negated="false">
+ <position x="75" y="300"/>
+ <connectionPointOut>
+ <relPosition x="114" y="10"/>
+ </connectionPointOut>
+ <expression>ENTERING_PAGE</expression>
+ </inVariable>
+ <inVariable localId="8" executionOrderId="0" height="25" width="50" negated="false">
+ <position x="140" y="355"/>
+ <connectionPointOut>
+ <relPosition x="50" y="10"/>
+ </connectionPointOut>
+ <expression>LEVEL</expression>
+ </inVariable>
+ <comment localId="9" height="40" width="640">
+ <position x="15" y="210"/>
+ <content>
+ <xhtml:p><![CDATA[Acknowledge page jump being notified by HMI by setting ENTERING_PAGE to True]]></xhtml:p>
+ </content>
+ </comment>
+ <inVariable localId="11" executionOrderId="0" height="25" width="122" negated="false">
+ <position x="90" y="325"/>
+ <connectionPointOut>
+ <relPosition x="122" y="10"/>
+ </connectionPointOut>
+ <expression>CURRENT_PAGE_0</expression>
+ </inVariable>
+ <outVariable localId="12" executionOrderId="0" height="25" width="115" negated="false">
+ <position x="385" y="575"/>
+ <connectionPointIn>
+ <relPosition x="0" y="10"/>
+ <connection refLocalId="6" formalParameter="OUT">
+ <position x="385" y="585"/>
+ <position x="350" y="585"/>
+ </connection>
+ </connectionPointIn>
+ <expression>ENTERING_PAGE</expression>
+ </outVariable>
+ <block localId="13" typeName="R_TRIG" instanceName="R_TRIG0" executionOrderId="0" height="40" width="60">
+ <position x="190" y="530"/>
+ <inputVariables>
+ <variable formalParameter="CLK">
+ <connectionPointIn>
+ <relPosition x="0" y="30"/>
+ <connection refLocalId="2">
+ <position x="190" y="560"/>
+ <position x="139" y="560"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ </inputVariables>
+ <inOutVariables/>
+ <outputVariables>
+ <variable formalParameter="Q">
+ <connectionPointOut>
+ <relPosition x="60" y="30"/>
+ </connectionPointOut>
+ </variable>
+ </outputVariables>
+ </block>
+ <comment localId="3" height="60" width="640">
+ <position x="15" y="440"/>
+ <content>
+ <xhtml:p><![CDATA[Reset ENTERING_PAGE 1 cycle after being set.
+Use EN pin of MOVE to ensure that variable is only assigned when being reset.]]></xhtml:p>
+ </content>
+ </comment>
+ <block localId="14" typeName="my_functionBlock" instanceName="FB_ZERO" executionOrderId="0" height="70" width="191">
+ <position x="170" y="16"/>
+ <inputVariables>
+ <variable formalParameter="SOME_STRING">
+ <connectionPointIn>
+ <relPosition x="0" y="30"/>
+ <connection refLocalId="24">
+ <position x="170" y="46"/>
+ <position x="125" y="46"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ <variable formalParameter="SOME_INPUT">
+ <connectionPointIn>
+ <relPosition x="0" y="55"/>
+ <connection refLocalId="18">
+ <position x="170" y="71"/>
+ <position x="125" y="71"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ </inputVariables>
+ <inOutVariables/>
+ <outputVariables>
+ <variable formalParameter="SOME_OUTPUT">
+ <connectionPointOut>
+ <relPosition x="191" y="30"/>
+ </connectionPointOut>
+ </variable>
+ </outputVariables>
+ </block>
+ <block localId="5" typeName="my_functionBlock" instanceName="FB_ONE" executionOrderId="0" height="70" width="191">
+ <position x="170" y="110"/>
+ <inputVariables>
+ <variable formalParameter="SOME_STRING">
+ <connectionPointIn>
+ <relPosition x="0" y="30"/>
+ <connection refLocalId="25">
+ <position x="170" y="140"/>
+ <position x="125" y="140"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ <variable formalParameter="SOME_INPUT">
+ <connectionPointIn>
+ <relPosition x="0" y="55"/>
+ <connection refLocalId="19">
+ <position x="170" y="165"/>
+ <position x="125" y="165"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ </inputVariables>
+ <inOutVariables/>
+ <outputVariables>
+ <variable formalParameter="SOME_OUTPUT">
+ <connectionPointOut>
+ <relPosition x="191" y="30"/>
+ </connectionPointOut>
+ </variable>
+ </outputVariables>
+ </block>
+ <block localId="10" typeName="my_functionBlock" instanceName="FB_THREE" executionOrderId="0" height="70" width="191">
+ <position x="515" y="110"/>
+ <inputVariables>
+ <variable formalParameter="SOME_STRING">
+ <connectionPointIn>
+ <relPosition x="0" y="30"/>
+ <connection refLocalId="27">
+ <position x="515" y="140"/>
+ <position x="475" y="140"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ <variable formalParameter="SOME_INPUT">
+ <connectionPointIn>
+ <relPosition x="0" y="55"/>
+ <connection refLocalId="21">
+ <position x="515" y="165"/>
+ <position x="475" y="165"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ </inputVariables>
+ <inOutVariables/>
+ <outputVariables>
+ <variable formalParameter="SOME_OUTPUT">
+ <connectionPointOut>
+ <relPosition x="191" y="30"/>
+ </connectionPointOut>
+ </variable>
+ </outputVariables>
+ </block>
+ <block localId="15" typeName="my_functionBlock" instanceName="FB_TWO" executionOrderId="0" height="70" width="191">
+ <position x="515" y="16"/>
+ <inputVariables>
+ <variable formalParameter="SOME_STRING">
+ <connectionPointIn>
+ <relPosition x="0" y="30"/>
+ <connection refLocalId="26">
+ <position x="515" y="46"/>
+ <position x="475" y="46"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ <variable formalParameter="SOME_INPUT">
+ <connectionPointIn>
+ <relPosition x="0" y="55"/>
+ <connection refLocalId="20">
+ <position x="515" y="71"/>
+ <position x="475" y="71"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ </inputVariables>
+ <inOutVariables/>
+ <outputVariables>
+ <variable formalParameter="SOME_OUTPUT">
+ <connectionPointOut>
+ <relPosition x="191" y="30"/>
+ </connectionPointOut>
+ </variable>
+ </outputVariables>
+ </block>
+ <block localId="16" typeName="my_functionBlock" instanceName="FB_FIVE" executionOrderId="0" height="75" width="191">
+ <position x="860" y="111"/>
+ <inputVariables>
+ <variable formalParameter="SOME_STRING">
+ <connectionPointIn>
+ <relPosition x="0" y="34"/>
+ <connection refLocalId="29">
+ <position x="860" y="145"/>
+ <position x="815" y="145"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ <variable formalParameter="SOME_INPUT">
+ <connectionPointIn>
+ <relPosition x="0" y="59"/>
+ <connection refLocalId="23">
+ <position x="860" y="170"/>
+ <position x="815" y="170"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ </inputVariables>
+ <inOutVariables/>
+ <outputVariables>
+ <variable formalParameter="SOME_OUTPUT">
+ <connectionPointOut>
+ <relPosition x="191" y="34"/>
+ </connectionPointOut>
+ </variable>
+ </outputVariables>
+ </block>
+ <block localId="17" typeName="my_functionBlock" instanceName="FB_FOUR" executionOrderId="0" height="70" width="191">
+ <position x="860" y="17"/>
+ <inputVariables>
+ <variable formalParameter="SOME_STRING">
+ <connectionPointIn>
+ <relPosition x="0" y="34"/>
+ <connection refLocalId="28">
+ <position x="860" y="51"/>
+ <position x="815" y="51"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ <variable formalParameter="SOME_INPUT">
+ <connectionPointIn>
+ <relPosition x="0" y="59"/>
+ <connection refLocalId="22">
+ <position x="860" y="76"/>
+ <position x="815" y="76"/>
+ </connection>
+ </connectionPointIn>
+ </variable>
+ </inputVariables>
+ <inOutVariables/>
+ <outputVariables>
+ <variable formalParameter="SOME_OUTPUT">
+ <connectionPointOut>
+ <relPosition x="191" y="34"/>
+ </connectionPointOut>
+ </variable>
+ </outputVariables>
+ </block>
+ <inVariable localId="18" executionOrderId="0" height="25" width="70" negated="false">
+ <position x="55" y="61"/>
+ <connectionPointOut>
+ <relPosition x="70" y="10"/>
+ </connectionPointOut>
+ <expression>Enable0</expression>
+ </inVariable>
+ <inVariable localId="19" executionOrderId="0" height="25" width="70" negated="false">
+ <position x="55" y="155"/>
+ <connectionPointOut>
+ <relPosition x="70" y="10"/>
+ </connectionPointOut>
+ <expression>Enable1</expression>
+ </inVariable>
+ <inVariable localId="20" executionOrderId="0" height="25" width="70" negated="false">
+ <position x="405" y="61"/>
+ <connectionPointOut>
+ <relPosition x="70" y="10"/>
+ </connectionPointOut>
+ <expression>Enable2</expression>
+ </inVariable>
+ <inVariable localId="21" executionOrderId="0" height="25" width="70" negated="false">
+ <position x="405" y="155"/>
+ <connectionPointOut>
+ <relPosition x="70" y="10"/>
+ </connectionPointOut>
+ <expression>Enable3</expression>
+ </inVariable>
+ <inVariable localId="22" executionOrderId="0" height="25" width="70" negated="false">
+ <position x="745" y="66"/>
+ <connectionPointOut>
+ <relPosition x="70" y="10"/>
+ </connectionPointOut>
+ <expression>Enable4</expression>
+ </inVariable>
+ <inVariable localId="23" executionOrderId="0" height="25" width="70" negated="false">
+ <position x="745" y="160"/>
+ <connectionPointOut>
+ <relPosition x="70" y="10"/>
+ </connectionPointOut>
+ <expression>Enable5</expression>
+ </inVariable>
+ <inVariable localId="24" executionOrderId="0" height="25" width="70" negated="false">
+ <position x="55" y="36"/>
+ <connectionPointOut>
+ <relPosition x="70" y="10"/>
+ </connectionPointOut>
+ <expression>'VENUS'</expression>
+ </inVariable>
+ <inVariable localId="25" executionOrderId="0" height="25" width="75" negated="false">
+ <position x="50" y="130"/>
+ <connectionPointOut>
+ <relPosition x="75" y="10"/>
+ </connectionPointOut>
+ <expression>'URANUS'</expression>
+ </inVariable>
+ <inVariable localId="26" executionOrderId="0" height="25" width="85" negated="false">
+ <position x="390" y="36"/>
+ <connectionPointOut>
+ <relPosition x="85" y="10"/>
+ </connectionPointOut>
+ <expression>'JUPITER'</expression>
+ </inVariable>
+ <inVariable localId="27" executionOrderId="0" height="25" width="60" negated="false">
+ <position x="415" y="130"/>
+ <connectionPointOut>
+ <relPosition x="60" y="10"/>
+ </connectionPointOut>
+ <expression>'MARS'</expression>
+ </inVariable>
+ <inVariable localId="28" executionOrderId="0" height="25" width="85" negated="false">
+ <position x="730" y="41"/>
+ <connectionPointOut>
+ <relPosition x="85" y="10"/>
+ </connectionPointOut>
+ <expression>'NEPTUNE'</expression>
+ </inVariable>
+ <inVariable localId="29" executionOrderId="0" height="25" width="70" negated="false">
+ <position x="745" y="135"/>
+ <connectionPointOut>
+ <relPosition x="70" y="10"/>
+ </connectionPointOut>
+ <expression>'EARTH'</expression>
+ </inVariable>
+ </FBD>
+ </body>
+ </pou>
+ <pou name="my_functionBlock" pouType="functionBlock">
+ <interface>
+ <localVars>
+ <variable name="MYNODE">
+ <type>
+ <derived name="HMI_NODE"/>
+ </type>
+ <documentation>
+ <xhtml:p><![CDATA[Using HMI_NODE creates node un HMI tree]]></xhtml:p>
+ </documentation>
+ </variable>
+ <variable name="SOME_INT">
+ <type>
+ <derived name="HMI_INT"/>
+ </type>
+ </variable>
+ </localVars>
+ <inputVars>
+ <variable name="SOME_STRING">
+ <type>
+ <derived name="HMI_STRING"/>
+ </type>
+ </variable>
+ </inputVars>
+ <localVars>
+ <variable name="SOME_BOOL">
+ <type>
+ <derived name="HMI_BOOL"/>
+ </type>
+ </variable>
+ <variable name="SOME_REAL">
+ <type>
+ <derived name="HMI_REAL"/>
+ </type>
+ </variable>
+ </localVars>
+ <inputVars>
+ <variable name="SOME_INPUT">
+ <type>
+ <BOOL/>
+ </type>
+ </variable>
+ </inputVars>
+ <outputVars>
+ <variable name="SOME_OUTPUT">
+ <type>
+ <BOOL/>
+ </type>
+ </variable>
+ </outputVars>
+ </interface>
+ <body>
+ <FBD>
+ <inVariable localId="1" executionOrderId="0" height="25" width="90" negated="false">
+ <position x="100" y="70"/>
+ <connectionPointOut>
+ <relPosition x="90" y="10"/>
+ </connectionPointOut>
+ <expression>SOME_INPUT</expression>
+ </inVariable>
+ <outVariable localId="2" executionOrderId="0" height="25" width="100" negated="false">
+ <position x="250" y="70"/>
+ <connectionPointIn>
+ <relPosition x="0" y="10"/>
+ <connection refLocalId="1">
+ <position x="250" y="80"/>
+ <position x="190" y="80"/>
+ </connection>
+ </connectionPointIn>
+ <expression>SOME_OUTPUT</expression>
+ </outVariable>
+ <outVariable localId="4" executionOrderId="0" height="25" width="85" negated="false">
+ <position x="250" y="105"/>
+ <connectionPointIn>
+ <relPosition x="0" y="10"/>
+ <connection refLocalId="1">
+ <position x="250" y="115"/>
+ <position x="225" y="115"/>
+ <position x="225" y="80"/>
+ <position x="190" y="80"/>
+ </connection>
+ </connectionPointIn>
+ <expression>SOME_BOOL</expression>
+ </outVariable>
+ </FBD>
+ </body>
+ </pou>
+ </pous>
+ </types>
+ <instances>
+ <configurations>
+ <configuration name="config">
+ <resource name="resource1">
+ <task name="task0" priority="0" interval="T#20ms">
+ <pouInstance name="instance0" typeName="program0"/>
+ </task>
+ </resource>
+ </configuration>
+ </configurations>
+ </instances>
+</project>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/exemples/svghmi_jumps/svghmi_0@svghmi/baseconfnode.xml Tue Sep 13 16:53:15 2022 +0200
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<BaseParams xmlns:xsd="http://www.w3.org/2001/XMLSchema" IEC_Channel="0" Name="svghmi_0"/>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/exemples/svghmi_jumps/svghmi_0@svghmi/confnode.xml Tue Sep 13 16:53:15 2022 +0200
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='utf-8'?>
+<SVGHMI xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/exemples/svghmi_jumps/svghmi_0@svghmi/svghmi.svg Tue Sep 13 16:53:15 2022 +0200
@@ -0,0 +1,1818 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
+ sodipodi:docname="svghmi.svg"
+ id="hmi0"
+ version="1.1"
+ viewBox="0 0 1280 720"
+ height="720"
+ width="1280">
+ <metadata
+ id="metadata8">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs6" />
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1600"
+ inkscape:window-height="836"
+ id="namedview4"
+ showgrid="false"
+ inkscape:zoom="0.23177389"
+ inkscape:cx="1999.5317"
+ inkscape:cy="-682.74047"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="hmi0"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ borderlayer="true"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+ <use
+ sodipodi:insensitive="true"
+ x="0"
+ y="0"
+ xlink:href="#g2496"
+ id="use192"
+ transform="translate(1320,1520)"
+ width="100%"
+ height="100%"
+ inkscape:label="HMI:Page:RelativePage@/FB_ZERO" />
+ <use
+ sodipodi:insensitive="true"
+ x="0"
+ y="0"
+ xlink:href="#g2496"
+ id="use147"
+ transform="translate(2640,759.99998)"
+ width="100%"
+ height="100%"
+ inkscape:label="HMI:Page:Relative" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g2496"
+ id="use2504"
+ transform="translate(3940,-2.1367187e-5)"
+ width="100%"
+ height="100%"
+ inkscape:label="HMI:Page:Conditional"
+ sodipodi:insensitive="true" />
+ <use
+ inkscape:label="HMI:Page:Unconditional"
+ height="100%"
+ width="100%"
+ transform="translate(2640,-2.1367187e-5)"
+ id="use2502"
+ xlink:href="#g2496"
+ y="0"
+ x="0"
+ sodipodi:insensitive="true" />
+ <use
+ inkscape:label="HMI:Page:AbsolutePage"
+ height="100%"
+ width="100%"
+ transform="translate(1320,759.99998)"
+ id="use2500"
+ xlink:href="#g2496"
+ y="0"
+ x="0"
+ sodipodi:insensitive="true" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#g2496"
+ id="use2498"
+ transform="translate(1320,-2.1367187e-5)"
+ width="100%"
+ height="100%"
+ inkscape:label="HMI:Page:Home"
+ sodipodi:insensitive="true" />
+ <text
+ id="text837"
+ y="1114.9857"
+ x="639.54431"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="1114.9857"
+ x="639.54431"
+ id="tspan835"
+ sodipodi:role="line">HMI:Back</tspan></text>
+ <g
+ inkscape:label="HMI:Back"
+ id="g845"
+ transform="translate(0,660.00004)">
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect839"
+ width="244.72002"
+ height="70.089722"
+ x="517.64001"
+ y="324.95514"
+ ry="21.355932"
+ rx="21.355932" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="642.12891"
+ y="370.41992"
+ id="text843"><tspan
+ sodipodi:role="line"
+ id="tspan841"
+ x="642.12891"
+ y="370.41992">Back</tspan></text>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="639.74609"
+ y="853.55939"
+ id="text863"><tspan
+ sodipodi:role="line"
+ id="tspan861"
+ x="639.74609"
+ y="853.55939">Absolute Page</tspan></text>
+ <text
+ id="text867"
+ y="73.559319"
+ x="639.74609"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="73.559319"
+ x="639.74609"
+ id="tspan865"
+ sodipodi:role="line">Home Page</tspan></text>
+ <g
+ inkscape:label="HMI:PushButton@/ENTERING_PAGE"
+ id="g857-3"
+ transform="translate(-2.2461,129.42912)">
+ <rect
+ rx="21.355932"
+ ry="21.355932"
+ y="1078.0054"
+ x="518.36066"
+ height="125.00497"
+ width="247.77087"
+ id="rect148"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ inkscape:label="active" />
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect851-6"
+ width="247.77087"
+ height="125.00497"
+ x="518.36066"
+ y="1078.0054"
+ ry="21.355932"
+ rx="21.355932"
+ inkscape:label="inactive" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="642.12891"
+ y="1130.4199"
+ id="text855-7"><tspan
+ sodipodi:role="line"
+ x="642.12891"
+ y="1130.4199"
+ id="tspan62">Notification</tspan><tspan
+ sodipodi:role="line"
+ x="642.12891"
+ y="1180.4199"
+ id="tspan66">Test Button</tspan></text>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="639.54431"
+ y="1394.9857"
+ id="text70"><tspan
+ sodipodi:role="line"
+ x="639.54431"
+ y="1394.9857"
+ id="tspan72">HMI:PushButton@/ENTERING_PAGE</tspan></text>
+ <text
+ id="text80"
+ y="364"
+ x="1959.5443"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="364"
+ x="1959.5443"
+ id="tspan78"
+ sodipodi:role="line">HMI:Jump:AbsolutePage</tspan></text>
+ <g
+ transform="translate(1320,-79.999979)"
+ inkscape:label="HMI:Jump:AbsolutePage"
+ id="g88">
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect82"
+ width="295.15112"
+ height="84.580795"
+ x="495.42249"
+ y="317.09436"
+ ry="21.355932"
+ rx="21.355932" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="642.12891"
+ y="370.41992"
+ id="text86"><tspan
+ sodipodi:role="line"
+ id="tspan84"
+ x="642.12891"
+ y="370.41992">Normal jump</tspan></text>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1959.5443"
+ y="690.00006"
+ id="text92"><tspan
+ sodipodi:role="line"
+ id="tspan90"
+ x="1959.5443"
+ y="690.00006">HMI:Jump:AbsolutePage:notify=true@notify=/ENTERING_PAGE</tspan></text>
+ <g
+ transform="translate(1320,200.00002)"
+ id="g102"
+ inkscape:label="HMI:Jump:AbsolutePage:notify=true@notify=/ENTERING_PAGE">
+ <rect
+ rx="21.355932"
+ ry="21.355932"
+ y="318.00534"
+ x="518.36066"
+ height="125.00497"
+ width="247.77087"
+ id="rect94"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ id="text100"
+ y="370.41992"
+ x="642.12891"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="370.41992"
+ x="648.48633"
+ id="tspan96"
+ sodipodi:role="line">Jump with </tspan><tspan
+ id="tspan98"
+ y="420.41992"
+ x="642.12891"
+ sodipodi:role="line">notification</tspan></text>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1959.7461"
+ y="73.559319"
+ id="text106"><tspan
+ sodipodi:role="line"
+ id="tspan104"
+ x="1959.7461"
+ y="73.559319">Unconditional Jumps</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="3259.5444"
+ y="684.00006"
+ id="text112"><tspan
+ sodipodi:role="line"
+ x="3259.5444"
+ y="684.00006"
+ id="tspan2796">HMI:Jump:AbsolutePage@enable=/ENABLE_JUMP@level=user_level#enable && level>2</tspan></text>
+ <g
+ id="g120"
+ inkscape:label="HMI:Jump:AbsolutePage@enable=/ENABLE_JUMP@level=user_level#enable && level>2"
+ transform="translate(2620,240.00002)">
+ <g
+ id="g2786"
+ inkscape:label="disabled"
+ style="display:inline">
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#c8b7b7;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect114"
+ width="295.15112"
+ height="84.580795"
+ x="495.42249"
+ y="317.09436"
+ ry="21.355932"
+ rx="21.355932" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="642.12891"
+ y="370.41992"
+ id="text118"><tspan
+ sodipodi:role="line"
+ id="tspan116"
+ x="642.12891"
+ y="370.41992">Jump</tspan></text>
+ </g>
+ <g
+ id="g2794">
+ <rect
+ rx="21.355932"
+ ry="21.355932"
+ y="317.09436"
+ x="495.42249"
+ height="84.580795"
+ width="295.15112"
+ id="rect2788"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ id="text2792"
+ y="370.41992"
+ x="642.12891"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="370.41992"
+ x="642.12891"
+ id="tspan2790"
+ sodipodi:role="line">Jump</tspan></text>
+ </g>
+ </g>
+ <text
+ id="text138"
+ y="73.559319"
+ x="3259.7461"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="73.559319"
+ x="3259.7461"
+ id="tspan136"
+ sodipodi:role="line">Conditional Jumps</tspan></text>
+ <text
+ id="text142"
+ y="193.55931"
+ x="639.88281"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;text-decoration: underline;text-decoration-line: underline;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"
+ inkscape:label="HMI:Jump:Unconditional"><tspan
+ y="193.55931"
+ x="639.88281"
+ id="tspan140"
+ sodipodi:role="line">Unconditional Jumps ></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;text-decoration: underline;text-decoration-line: underline;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="639.88281"
+ y="293.55933"
+ id="text146"
+ inkscape:label="HMI:Jump:Conditional"><tspan
+ sodipodi:role="line"
+ id="tspan144"
+ x="639.88281"
+ y="293.55933">Conditional Jumps ></tspan></text>
+ <g
+ id="g2496"
+ inkscape:label="page_template"
+ transform="translate(0,2.1367187e-5)">
+ <rect
+ y="0"
+ x="-1320"
+ height="720"
+ width="1280"
+ id="rect1420"
+ style="color:#000000;opacity:1;fill:#d6d6d6;fill-opacity:1" />
+ <g
+ inkscape:label="HMI:Jump:Home"
+ id="g2455">
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect2313"
+ id="use2435"
+ transform="translate(400,-2.1367187e-5)"
+ width="100%"
+ height="100%"
+ inkscape:label="active" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect2311"
+ id="use2437"
+ transform="translate(400,-2.1367187e-5)"
+ width="100%"
+ height="100%"
+ inkscape:label="inactive" />
+ <text
+ id="text855-7-1"
+ y="70.251053"
+ x="-1166.8177"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ id="tspan66-3"
+ y="70.251053"
+ x="-1166.8177"
+ sodipodi:role="line">Home</tspan></text>
+ </g>
+ <g
+ inkscape:label="HMI:Jump:Conditional"
+ id="g2461"
+ transform="translate(0,20)">
+ <use
+ height="100%"
+ width="100%"
+ transform="translate(400,99.999979)"
+ id="use2439"
+ xlink:href="#rect2313"
+ y="0"
+ x="0"
+ inkscape:label="active" />
+ <use
+ height="100%"
+ width="100%"
+ transform="translate(400,99.999979)"
+ id="use2441"
+ xlink:href="#rect2311"
+ y="0"
+ x="0"
+ inkscape:label="inactive" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="-1165.1674"
+ y="170.25105"
+ id="text2349"><tspan
+ sodipodi:role="line"
+ x="-1165.1674"
+ y="170.25105"
+ id="tspan2347">Conditional</tspan></text>
+ </g>
+ <g
+ inkscape:label="HMI:Jump:Unconditional"
+ id="g2467"
+ transform="translate(0,40)">
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect2313"
+ id="use2443"
+ transform="translate(400,199.99998)"
+ width="100%"
+ height="100%"
+ inkscape:label="active" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect2311"
+ id="use2445"
+ transform="translate(400,199.99998)"
+ width="100%"
+ height="100%"
+ inkscape:label="inactive" />
+ <text
+ id="text2357"
+ y="270.25104"
+ x="-1165.7826"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ id="tspan2355"
+ y="270.25104"
+ x="-1165.7826"
+ sodipodi:role="line">Unconditional</tspan></text>
+ </g>
+ <g
+ inkscape:label="HMI:Jump:AbsolutePage"
+ id="g2473"
+ transform="translate(0,60)">
+ <use
+ height="100%"
+ width="100%"
+ transform="translate(400,299.99998)"
+ id="use2447"
+ xlink:href="#rect2313"
+ y="0"
+ x="0"
+ inkscape:label="active" />
+ <use
+ height="100%"
+ width="100%"
+ transform="translate(400,299.99998)"
+ id="use2449"
+ xlink:href="#rect2311"
+ y="0"
+ x="0"
+ inkscape:label="inactive" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="-1165.0111"
+ y="370.25104"
+ id="text2365"><tspan
+ sodipodi:role="line"
+ x="-1165.0111"
+ y="370.25104"
+ id="tspan2363">Absolute</tspan></text>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.66666603px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="-1166.3386"
+ y="118.98305"
+ id="text133"><tspan
+ sodipodi:role="line"
+ id="tspan131"
+ x="-1166.3386"
+ y="118.98305">HMI:Jump:Home</tspan></text>
+ <text
+ id="text137"
+ y="238.98305"
+ x="-1166.3386"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.66666603px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="238.98305"
+ x="-1166.3386"
+ id="tspan135"
+ sodipodi:role="line">HMI:Jump:Conditional</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.66666603px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="-1166.3386"
+ y="358.98303"
+ id="text141"><tspan
+ sodipodi:role="line"
+ id="tspan139"
+ x="-1166.3386"
+ y="358.98303">HMI:Jump:Unconditional</tspan></text>
+ <text
+ id="text145"
+ y="478.98303"
+ x="-1166.3386"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.66666603px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="478.98303"
+ x="-1166.3386"
+ id="tspan143"
+ sodipodi:role="line">HMI:Jump:AbsolutePage</tspan></text>
+ <g
+ transform="translate(0,180)"
+ id="g1847"
+ inkscape:label="HMI:Jump:RelativePage">
+ <use
+ inkscape:label="active"
+ x="0"
+ y="0"
+ xlink:href="#rect2313"
+ id="use1839"
+ transform="translate(400,299.99998)"
+ width="100%"
+ height="100%" />
+ <use
+ inkscape:label="inactive"
+ x="0"
+ y="0"
+ xlink:href="#rect2311"
+ id="use1841"
+ transform="translate(400,299.99998)"
+ width="100%"
+ height="100%" />
+ <text
+ id="text1845"
+ y="370.25104"
+ x="-1165.0111"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="370.25104"
+ x="-1165.0111"
+ sodipodi:role="line"
+ id="tspan1853">Relative</tspan></text>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.66666603px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="-1166.3386"
+ y="598.98303"
+ id="text1851"><tspan
+ sodipodi:role="line"
+ id="tspan1849"
+ x="-1166.3386"
+ y="598.98303">HMI:Jump:RelativePage</tspan></text>
+ </g>
+ <g
+ id="g2585"
+ inkscape:label="HMI:Input@user_level"
+ transform="translate(-20,126.00002)">
+ <g
+ id="g2763"
+ inkscape:label="=1">
+ <rect
+ rx="21.355932"
+ ry="21.355932"
+ y="93.088097"
+ x="3489.5898"
+ height="84.580788"
+ width="96.681831"
+ id="rect114-6"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ id="text118-3"
+ y="149.95857"
+ x="3537.5791"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="149.95857"
+ x="3537.5791"
+ id="tspan116-1"
+ sodipodi:role="line">1</tspan></text>
+ </g>
+ <g
+ id="g2758"
+ inkscape:label="=2">
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect2531"
+ width="96.681831"
+ height="84.580788"
+ x="3589.5898"
+ y="93.088097"
+ ry="21.355932"
+ rx="21.355932" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="3637.5791"
+ y="149.95857"
+ id="text2557"><tspan
+ sodipodi:role="line"
+ id="tspan2555"
+ x="3637.5791"
+ y="149.95857">2</tspan></text>
+ </g>
+ <g
+ id="g2753"
+ inkscape:label="=3">
+ <rect
+ rx="21.355932"
+ ry="21.355932"
+ y="93.088097"
+ x="3689.5898"
+ height="84.580788"
+ width="96.681831"
+ id="rect2533"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ id="text2561"
+ y="149.95857"
+ x="3737.5791"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="149.95857"
+ x="3737.5791"
+ id="tspan2559"
+ sodipodi:role="line">3</tspan></text>
+ </g>
+ <g
+ id="g2748"
+ inkscape:label="=4">
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect2535"
+ width="96.681831"
+ height="84.580788"
+ x="3789.5898"
+ y="93.088097"
+ ry="21.355932"
+ rx="21.355932" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="3837.5791"
+ y="149.95857"
+ id="text2565"><tspan
+ sodipodi:role="line"
+ id="tspan2563"
+ x="3837.5791"
+ y="149.95857">4</tspan></text>
+ </g>
+ <text
+ id="text2569"
+ y="56.031158"
+ x="3687.7056"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:85.33333588px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"
+ inkscape:label="value"><tspan
+ y="56.031158"
+ x="3687.7056"
+ id="tspan2567"
+ sodipodi:role="line">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="3687.7056"
+ y="216.03116"
+ id="text2820"><tspan
+ sodipodi:role="line"
+ id="tspan2818"
+ x="3687.7056"
+ y="216.03116">User Level</tspan></text>
+ </g>
+ <g
+ id="g2590"
+ inkscape:label="HMI:VarInit:1@user_level"
+ transform="translate(0,2.1367187e-5)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.66666603px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="3726.6924"
+ y="-108.39357"
+ id="text2743"><tspan
+ sodipodi:role="line"
+ id="tspan2741"
+ x="3726.6924"
+ y="-108.39357">declaration of user_level HMI local variable</tspan><tspan
+ sodipodi:role="line"
+ x="3726.6924"
+ y="-85.060234"
+ id="tspan2765">(not a PLC variable)</tspan></text>
+ </g>
+ <g
+ inkscape:label="HMI:ToggleButton@/ENABLE_JUMP"
+ id="g2775"
+ transform="translate(2498.5763,-99.999979)">
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect2767"
+ width="320.99121"
+ height="125.00497"
+ x="518.36066"
+ y="318.00534"
+ ry="21.355932"
+ rx="21.355932"
+ inkscape:label="inactive" />
+ <rect
+ inkscape:label="active"
+ rx="21.355932"
+ ry="21.355932"
+ y="318.00534"
+ x="518.36066"
+ height="125.00497"
+ width="320.99121"
+ id="rect2781"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="677.57697"
+ y="365.98633"
+ id="text2773"><tspan
+ sodipodi:role="line"
+ x="677.57697"
+ y="365.98633"
+ id="tspan2771">Toggle</tspan><tspan
+ sodipodi:role="line"
+ x="677.57697"
+ y="415.98633"
+ id="tspan2779">ENABLE_JUMP</tspan></text>
+ </g>
+ <text
+ id="text2569-5"
+ y="181.74046"
+ x="3175.9531"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:85.33333588px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"
+ inkscape:label="HMI:Display@/ENABLE_JUMP"><tspan
+ y="181.74046"
+ x="3175.9531"
+ id="tspan2567-9"
+ sodipodi:role="line">0</tspan></text>
+ <text
+ id="text151"
+ y="853.55939"
+ x="1979.7461"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="853.55939"
+ x="1979.7461"
+ id="tspan149"
+ sodipodi:role="line">Relative Jumps</tspan></text>
+ <g
+ id="g120-3"
+ inkscape:label="HMI:Jump:RelativePage@/FB_ZERO"
+ transform="translate(1172.2562,635.19155)">
+ <rect
+ rx="21.355932"
+ ry="21.355932"
+ y="337.09436"
+ x="660.90063"
+ height="84.580795"
+ width="295.15112"
+ id="rect1861"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ id="text1865"
+ y="390.41992"
+ x="807.60706"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="390.41992"
+ x="807.60706"
+ id="tspan1863"
+ sodipodi:role="line">Jump FB0</tspan></text>
+ </g>
+ <g
+ id="g2865"
+ inkscape:label="HMI:Display@page_node"
+ transform="translate(1132.5298,1563.4227)">
+ <text
+ inkscape:label="format"
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="-492.78372"
+ y="50.136646"
+ id="text196"><tspan
+ sodipodi:role="line"
+ id="tspan194"
+ x="-492.78372"
+ y="50.136646">Relative Page (%s)</tspan></text>
+ </g>
+ <g
+ id="g2585-1"
+ inkscape:label="HMI:Input@/FB_ZERO/SOME_INT"
+ transform="matrix(0.699363,0,0,0.699363,-1722.1388,1658.2417)"
+ style="stroke-width:1.42987263">
+ <g
+ id="g2763-2"
+ inkscape:label="=1"
+ style="stroke-width:1.42987263">
+ <rect
+ rx="30.536263"
+ ry="30.536263"
+ y="93.088097"
+ x="3489.5898"
+ height="84.580788"
+ width="96.681831"
+ id="rect114-6-7"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.40424299;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ id="text118-3-0"
+ y="149.95857"
+ x="3537.5791"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.42987263px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="149.95857"
+ x="3537.5791"
+ id="tspan116-1-9"
+ sodipodi:role="line"
+ style="stroke-width:1.42987263px">1</tspan></text>
+ </g>
+ <g
+ id="g2758-3"
+ inkscape:label="=2"
+ style="stroke-width:1.42987263">
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.40424299;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect2531-6"
+ width="96.681831"
+ height="84.580788"
+ x="3589.5898"
+ y="93.088097"
+ ry="30.536263"
+ rx="30.536263" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.42987263px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="3637.5791"
+ y="149.95857"
+ id="text2557-0"><tspan
+ sodipodi:role="line"
+ id="tspan2555-6"
+ x="3637.5791"
+ y="149.95857"
+ style="stroke-width:1.42987263px">2</tspan></text>
+ </g>
+ <g
+ id="g2753-2"
+ inkscape:label="=3"
+ style="stroke-width:1.42987263">
+ <rect
+ rx="30.536263"
+ ry="30.536263"
+ y="93.088097"
+ x="3689.5898"
+ height="84.580788"
+ width="96.681831"
+ id="rect2533-6"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.40424299;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ id="text2561-1"
+ y="149.95857"
+ x="3737.5791"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.42987263px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="149.95857"
+ x="3737.5791"
+ id="tspan2559-8"
+ sodipodi:role="line"
+ style="stroke-width:1.42987263px">3</tspan></text>
+ </g>
+ <g
+ id="g2748-7"
+ inkscape:label="=4"
+ style="stroke-width:1.42987263">
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.40424299;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect2535-9"
+ width="96.681831"
+ height="84.580788"
+ x="3789.5898"
+ y="93.088097"
+ ry="30.536263"
+ rx="30.536263" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.42987263px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="3837.5791"
+ y="149.95857"
+ id="text2565-2"><tspan
+ sodipodi:role="line"
+ id="tspan2563-0"
+ x="3837.5791"
+ y="149.95857"
+ style="stroke-width:1.42987263px">4</tspan></text>
+ </g>
+ <text
+ id="text2569-2"
+ y="56.031158"
+ x="3687.7056"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:85.33333588px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.42987263px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"
+ inkscape:label="value"><tspan
+ y="56.031158"
+ x="3687.7056"
+ id="tspan2567-3"
+ sodipodi:role="line"
+ style="stroke-width:1.42987263px">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.42987263px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="3687.7056"
+ y="216.03116"
+ id="text2820-7"><tspan
+ sodipodi:role="line"
+ id="tspan2818-5"
+ x="3687.7056"
+ y="216.03116"
+ style="stroke-width:1.42987263px">SOME_INT</tspan></text>
+ </g>
+ <text
+ id="text307"
+ y="1757.4279"
+ x="525.4079"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:59.67897797px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"
+ inkscape:label="HMI:Display@/FB_ZERO/SOME_BOOL"><tspan
+ style="stroke-width:1px"
+ y="1757.4279"
+ x="525.4079"
+ id="tspan305"
+ sodipodi:role="line">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:27.97451973px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="533.80023"
+ y="1809.3259"
+ id="text311"><tspan
+ style="stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan309"
+ x="533.80023"
+ y="1809.3259">SOME_BOOL</tspan></text>
+ <text
+ inkscape:label="HMI:Display@/FB_ZERO/SOME_STRING"
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:59.67897797px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="525.4079"
+ y="1967.2367"
+ id="text375"><tspan
+ style="stroke-width:1px"
+ sodipodi:role="line"
+ id="tspan373"
+ x="525.4079"
+ y="1967.2367">?</tspan></text>
+ <text
+ id="text379"
+ y="2019.1349"
+ x="533.80023"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:27.97451973px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="stroke-width:1px"
+ y="2019.1349"
+ x="533.80023"
+ id="tspan377"
+ sodipodi:role="line">SOME_STRING</tspan></text>
+ <g
+ transform="matrix(0.699363,0,0,0.699363,-1722.1388,1868.0506)"
+ inkscape:label="HMI:Input@/FB_ZERO/SOME_REAL"
+ id="g355"
+ style="stroke-width:1.42987263">
+ <g
+ inkscape:label="-1"
+ id="g321"
+ transform="translate(-46)"
+ style="stroke-width:1.42987263">
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.40424299;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect315"
+ width="96.681831"
+ height="84.580788"
+ x="3489.5898"
+ y="93.088097"
+ ry="30.536263"
+ rx="30.536263" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.42987263px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="3537.5791"
+ y="149.95857"
+ id="text319"><tspan
+ sodipodi:role="line"
+ id="tspan317"
+ x="3537.5791"
+ y="149.95857"
+ style="stroke-width:1.42987263px">-1</tspan></text>
+ </g>
+ <g
+ inkscape:label="-0.1"
+ id="g329"
+ transform="translate(-46)"
+ style="stroke-width:1.42987263">
+ <rect
+ rx="30.536263"
+ ry="30.536263"
+ y="93.088097"
+ x="3589.5898"
+ height="84.580788"
+ width="96.681831"
+ id="rect323"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.40424299;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ id="text327"
+ y="149.95857"
+ x="3637.5791"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.42987263px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="149.95857"
+ x="3637.5791"
+ id="tspan325"
+ sodipodi:role="line"
+ style="stroke-width:1.42987263px">-.1</tspan></text>
+ </g>
+ <g
+ inkscape:label="=3.14"
+ id="g337"
+ transform="translate(-46)"
+ style="stroke-width:1.42987263">
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.40424299;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect331"
+ width="96.681831"
+ height="84.580788"
+ x="3689.5898"
+ y="93.088097"
+ ry="30.536263"
+ rx="30.536263" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.42987263px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="3737.5791"
+ y="149.95857"
+ id="text335"><tspan
+ sodipodi:role="line"
+ id="tspan333"
+ x="3737.5791"
+ y="149.95857"
+ style="stroke-width:1.42987263px">PI</tspan></text>
+ </g>
+ <g
+ inkscape:label="+0.1"
+ id="g345"
+ transform="translate(-46)"
+ style="stroke-width:1.42987263">
+ <rect
+ rx="30.536263"
+ ry="30.536263"
+ y="93.088097"
+ x="3789.5898"
+ height="84.580788"
+ width="96.681831"
+ id="rect339"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.40424299;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ id="text343"
+ y="149.95857"
+ x="3837.5791"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.42987263px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="149.95857"
+ x="3837.5791"
+ id="tspan341"
+ sodipodi:role="line"
+ style="stroke-width:1.42987263px">+.1</tspan></text>
+ </g>
+ <text
+ inkscape:label="value"
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:85.33333588px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.42987263px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="3687.7056"
+ y="56.031158"
+ id="text349"><tspan
+ sodipodi:role="line"
+ id="tspan347"
+ x="3687.7056"
+ y="56.031158"
+ style="stroke-width:1.42987263px">0</tspan></text>
+ <text
+ id="text353"
+ y="216.03116"
+ x="3687.7056"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.42987263px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="216.03116"
+ x="3687.7056"
+ id="tspan351"
+ sodipodi:role="line"
+ style="stroke-width:1.42987263px">SOME_REAL</tspan></text>
+ <g
+ id="g395"
+ inkscape:label="+1"
+ transform="translate(54)"
+ style="stroke-width:1.42987263">
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5.40424299;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect389"
+ width="96.681831"
+ height="84.580788"
+ x="3789.5898"
+ y="93.088097"
+ ry="30.536263"
+ rx="30.536263" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.42987263px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="3837.5791"
+ y="149.95857"
+ id="text393"><tspan
+ sodipodi:role="line"
+ id="tspan391"
+ x="3837.5791"
+ y="149.95857"
+ style="stroke-width:1.42987263px">+1</tspan></text>
+ </g>
+ </g>
+ <g
+ id="g1708"
+ inkscape:label="HMI:ForEach:MYNODE@/"
+ transform="translate(4,38.000021)">
+ <g
+ id="g1711"
+ inkscape:label="MYNODE:+1"
+ transform="matrix(1.3729714,0,0,1.3729714,-299.47126,-800.64485)"
+ style="stroke-width:0.7283473">
+ <rect
+ rx="15.554536"
+ ry="15.554536"
+ y="2117.0894"
+ x="1053.1199"
+ height="59.152672"
+ width="67.615692"
+ id="rect389-2"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.75280857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ id="text393-2"
+ y="2156.8623"
+ x="1086.6819"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:27.97451973px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.7283473px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="stroke-width:0.7283473px"
+ y="2156.8623"
+ x="1086.6819"
+ id="tspan391-8"
+ sodipodi:role="line">>></tspan></text>
+ </g>
+ <g
+ inkscape:label="MYNODE:3"
+ id="g1837"
+ transform="translate(665.54481,-11.353461)">
+ <g
+ transform="translate(1466.6549,2099.2529)"
+ inkscape:label="HMI:Jump:RelativePage@/FB_TWO@enable=/FB_TWO/SOME_BOOL#enable"
+ id="g1835">
+ <g
+ id="g2922"
+ inkscape:label="disabled">
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect1807"
+ id="use1825"
+ transform="translate(400,-2.1367187e-5)"
+ width="100%"
+ height="100%" />
+ <text
+ id="text1833-3"
+ y="70.251053"
+ x="-1166.8177"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#333333;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"
+ inkscape:label="HMI:Display@/FB_TWO/SOME_STRING"><tspan
+ id="tspan1831-6"
+ y="70.251053"
+ x="-1166.8177"
+ sodipodi:role="line">?</tspan></text>
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect2313"
+ id="use1827"
+ transform="translate(400,-2.1367187e-5)"
+ width="100%"
+ height="100%"
+ inkscape:label="active" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect2311"
+ id="use1829"
+ transform="translate(400,-2.1367187e-5)"
+ width="100%"
+ height="100%"
+ inkscape:label="inactive" />
+ <text
+ id="text1833"
+ y="70.251053"
+ x="-1166.8177"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"
+ inkscape:label="HMI:Display@/FB_TWO/SOME_STRING"><tspan
+ id="tspan1831"
+ y="70.251053"
+ x="-1166.8177"
+ sodipodi:role="line">?</tspan></text>
+ </g>
+ </g>
+ <g
+ transform="translate(342.39289,-11.353461)"
+ id="g1823"
+ inkscape:label="MYNODE:2">
+ <g
+ id="g1821"
+ inkscape:label="HMI:Jump:RelativePage@/FB_ONE@enable=/FB_ONE/SOME_BOOL#enable"
+ transform="translate(1466.6549,2099.2529)">
+ <g
+ id="g2893"
+ inkscape:label="disabled">
+ <use
+ height="100%"
+ width="100%"
+ transform="translate(400,-2.1367187e-5)"
+ id="use1811"
+ xlink:href="#rect1807"
+ y="0"
+ x="0" />
+ <text
+ inkscape:label="HMI:Display@/FB_ONE/SOME_STRING"
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#333333;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="-1166.8177"
+ y="70.251053"
+ id="text1819-5"><tspan
+ sodipodi:role="line"
+ x="-1166.8177"
+ y="70.251053"
+ id="tspan1817-0">?</tspan></text>
+ </g>
+ <use
+ inkscape:label="active"
+ height="100%"
+ width="100%"
+ transform="translate(400,-2.1367187e-5)"
+ id="use1813"
+ xlink:href="#rect2313"
+ y="0"
+ x="0" />
+ <use
+ inkscape:label="inactive"
+ height="100%"
+ width="100%"
+ transform="translate(400,-2.1367187e-5)"
+ id="use1815"
+ xlink:href="#rect2311"
+ y="0"
+ x="0" />
+ <text
+ inkscape:label="HMI:Display@/FB_ONE/SOME_STRING"
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="-1166.8177"
+ y="70.251053"
+ id="text1819"><tspan
+ sodipodi:role="line"
+ x="-1166.8177"
+ y="70.251053"
+ id="tspan1817">?</tspan></text>
+ </g>
+ </g>
+ <g
+ inkscape:label="MYNODE:1"
+ id="g1717"
+ transform="translate(19.240974,-11.353461)">
+ <g
+ transform="translate(1466.6549,2099.2529)"
+ inkscape:label="HMI:Jump:RelativePage@/FB_ZERO@enable=/FB_ZERO/SOME_BOOL#enable"
+ id="g2455-9">
+ <g
+ id="g2890"
+ inkscape:label="disabled">
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect1807"
+ id="use1809"
+ transform="translate(400,-2.1367187e-5)"
+ width="100%"
+ height="100%" />
+ <text
+ id="text2885"
+ y="70.251053"
+ x="-1166.8177"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#333333;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"
+ inkscape:label="HMI:Display@/FB_ZERO/SOME_STRING"><tspan
+ id="tspan2883"
+ y="70.251053"
+ x="-1166.8177"
+ sodipodi:role="line">?</tspan></text>
+ </g>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect2313"
+ id="use2435-7"
+ transform="translate(400,-2.1367187e-5)"
+ width="100%"
+ height="100%"
+ inkscape:label="active" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#rect2311"
+ id="use2437-3"
+ transform="translate(400,-2.1367187e-5)"
+ width="100%"
+ height="100%"
+ inkscape:label="inactive" />
+ <text
+ id="text855-7-1-6"
+ y="70.251053"
+ x="-1166.8177"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"
+ inkscape:label="HMI:Display@/FB_ZERO/SOME_STRING"><tspan
+ id="tspan66-3-1"
+ y="70.251053"
+ x="-1166.8177"
+ sodipodi:role="line">?</tspan></text>
+ </g>
+ </g>
+ <g
+ id="g1719"
+ inkscape:label="MYNODE:-1"
+ transform="matrix(1.3729714,0,0,1.3729714,-1398.9133,-800.64485)"
+ style="stroke-width:0.7283473">
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.75280857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect1757"
+ width="67.615692"
+ height="59.152672"
+ x="1053.1199"
+ y="2117.0894"
+ ry="15.554536"
+ rx="15.554536" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:27.97451973px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.7283473px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1086.6819"
+ y="2156.8623"
+ id="text1761"><tspan
+ sodipodi:role="line"
+ id="tspan1759"
+ x="1086.6819"
+ y="2156.8623"
+ style="stroke-width:0.7283473px"><<</tspan></text>
+ </g>
+ </g>
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect1807"
+ width="280"
+ height="81.859505"
+ x="-1705.9194"
+ y="17.83654"
+ ry="21.355932"
+ rx="21.355932"
+ inkscape:label="disabled_template" />
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect2311"
+ width="280"
+ height="81.859505"
+ x="-1705.9194"
+ y="17.83654"
+ ry="21.355932"
+ rx="21.355932"
+ inkscape:label="inactive_template" />
+ <rect
+ inkscape:label="active_template"
+ rx="21.355932"
+ ry="21.355932"
+ y="17.83654"
+ x="-1705.9194"
+ height="81.859505"
+ width="280"
+ id="rect2313"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ inkscape:label="HMI:Jump:Relative"
+ id="text1859"
+ y="393.55933"
+ x="639.88281"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;text-decoration: underline;text-decoration-line: underline;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="393.55933"
+ x="639.88281"
+ id="tspan1857"
+ sodipodi:role="line">Relative Jumps ></tspan></text>
+ <g
+ transform="translate(1172.2562,775.19155)"
+ inkscape:label="HMI:Jump:RelativePage@/FB_TWO"
+ id="g1886">
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect1880"
+ width="295.15112"
+ height="84.580795"
+ x="660.90063"
+ y="337.09436"
+ ry="21.355932"
+ rx="21.355932" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="807.60706"
+ y="390.41992"
+ id="text1884"><tspan
+ sodipodi:role="line"
+ id="tspan1882"
+ x="807.60706"
+ y="390.41992">Jump FB2</tspan></text>
+ </g>
+ <g
+ id="g1894"
+ inkscape:label="HMI:Jump:RelativePage@/FB_FOUR"
+ transform="translate(1172.2562,915.19155)">
+ <rect
+ rx="21.355932"
+ ry="21.355932"
+ y="337.09436"
+ x="660.90063"
+ height="84.580795"
+ width="295.15112"
+ id="rect1888"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ id="text1892"
+ y="390.41992"
+ x="807.60706"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="390.41992"
+ x="807.60706"
+ id="tspan1890"
+ sodipodi:role="line">Jump FB4</tspan></text>
+ </g>
+ <g
+ inkscape:label="HMI:ToggleButton@/ENABLE0"
+ id="g857-3-2"
+ transform="translate(533.4687,483.39042)">
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect851-6-3"
+ width="86.838715"
+ height="71.615021"
+ x="599.0611"
+ y="1080.0323"
+ ry="21.355932"
+ rx="21.355932"
+ inkscape:label="inactive" />
+ <rect
+ inkscape:label="active"
+ rx="21.355932"
+ ry="21.355932"
+ y="1080.0323"
+ x="599.0611"
+ height="71.615021"
+ width="86.838715"
+ id="rect2733"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="642.12891"
+ y="1130.4199"
+ id="text855-7-19"><tspan
+ sodipodi:role="line"
+ x="642.12891"
+ y="1130.4199"
+ id="tspan66-7">0</tspan></text>
+ </g>
+ <g
+ transform="translate(533.4687,563.39042)"
+ id="g2746"
+ inkscape:label="HMI:ToggleButton@/ENABLE1">
+ <rect
+ inkscape:label="inactive"
+ rx="21.355932"
+ ry="21.355932"
+ y="1080.0323"
+ x="599.0611"
+ height="71.615021"
+ width="86.838715"
+ id="rect2737"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect2739"
+ width="86.838715"
+ height="71.615021"
+ x="599.0611"
+ y="1080.0323"
+ ry="21.355932"
+ rx="21.355932"
+ inkscape:label="active" />
+ <text
+ id="text2744"
+ y="1130.4199"
+ x="642.12891"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ id="tspan2742"
+ y="1130.4199"
+ x="642.12891"
+ sodipodi:role="line">1</tspan></text>
+ </g>
+ <g
+ inkscape:label="HMI:ToggleButton@/ENABLE2"
+ id="g2756"
+ transform="translate(533.4687,643.39042)">
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect2748"
+ width="86.838715"
+ height="71.615021"
+ x="599.0611"
+ y="1080.0323"
+ ry="21.355932"
+ rx="21.355932"
+ inkscape:label="inactive" />
+ <rect
+ inkscape:label="active"
+ rx="21.355932"
+ ry="21.355932"
+ y="1080.0323"
+ x="599.0611"
+ height="71.615021"
+ width="86.838715"
+ id="rect2750"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="642.12891"
+ y="1130.4199"
+ id="text2754"><tspan
+ sodipodi:role="line"
+ x="642.12891"
+ y="1130.4199"
+ id="tspan2752">2</tspan></text>
+ </g>
+ <g
+ transform="translate(533.4687,723.39042)"
+ id="g2766"
+ inkscape:label="HMI:ToggleButton@/ENABLE3">
+ <rect
+ inkscape:label="inactive"
+ rx="21.355932"
+ ry="21.355932"
+ y="1080.0323"
+ x="599.0611"
+ height="71.615021"
+ width="86.838715"
+ id="rect2758"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect2760"
+ width="86.838715"
+ height="71.615021"
+ x="599.0611"
+ y="1080.0323"
+ ry="21.355932"
+ rx="21.355932"
+ inkscape:label="active" />
+ <text
+ id="text2764"
+ y="1130.4199"
+ x="642.12891"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="1130.4199"
+ x="642.12891"
+ sodipodi:role="line"
+ id="tspan2789">3</tspan></text>
+ </g>
+ <g
+ inkscape:label="HMI:ToggleButton@/ENABLE4"
+ id="g2776"
+ transform="translate(533.4687,803.39042)">
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect2768"
+ width="86.838715"
+ height="71.615021"
+ x="599.0611"
+ y="1080.0323"
+ ry="21.355932"
+ rx="21.355932"
+ inkscape:label="inactive" />
+ <rect
+ inkscape:label="active"
+ rx="21.355932"
+ ry="21.355932"
+ y="1080.0323"
+ x="599.0611"
+ height="71.615021"
+ width="86.838715"
+ id="rect2770"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="642.12891"
+ y="1130.4199"
+ id="text2774"><tspan
+ sodipodi:role="line"
+ x="642.12891"
+ y="1130.4199"
+ id="tspan2772">4</tspan></text>
+ </g>
+ <g
+ transform="translate(533.4687,883.39042)"
+ id="g2787"
+ inkscape:label="HMI:ToggleButton@/ENABLE5">
+ <rect
+ inkscape:label="inactive"
+ rx="21.355932"
+ ry="21.355932"
+ y="1080.0323"
+ x="599.0611"
+ height="71.615021"
+ width="86.838715"
+ id="rect2778"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.77952766;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <rect
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffa32a;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect2780"
+ width="86.838715"
+ height="71.615021"
+ x="599.0611"
+ y="1080.0323"
+ ry="21.355932"
+ rx="21.355932"
+ inkscape:label="active" />
+ <text
+ id="text2784"
+ y="1130.4199"
+ x="642.12891"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ id="tspan2782"
+ y="1130.4199"
+ x="642.12891"
+ sodipodi:role="line">5</tspan></text>
+ </g>
+ <text
+ id="text2869"
+ y="1366.9857"
+ x="1979.5443"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="1366.9857"
+ x="1979.5443"
+ sodipodi:role="line"
+ id="tspan2871">HMI:Jump:RelativePage@/FB_FOUR</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1979.5443"
+ y="1226.9857"
+ id="text2877"><tspan
+ id="tspan2875"
+ sodipodi:role="line"
+ x="1979.5443"
+ y="1226.9857">HMI:Jump:RelativePage@/FB_TWO</tspan></text>
+ <text
+ id="text2881"
+ y="1086.9857"
+ x="1979.5443"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ y="1086.9857"
+ x="1979.5443"
+ sodipodi:role="line"
+ id="tspan2879">HMI:Jump:RelativePage@/FB_ZERO</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.66666603px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="640.67114"
+ y="2120.4246"
+ id="text2944"><tspan
+ sodipodi:role="line"
+ id="tspan2942"
+ x="640.67114"
+ y="2120.4246">HMI:ForEach:MYNODE@/</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="703.23212"
+ y="588.7594"
+ id="text2948"><tspan
+ sodipodi:role="line"
+ id="tspan2946"
+ x="703.23212"
+ y="624.15002" /></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="44.283585"
+ y="-289.18591"
+ id="text2952"><tspan
+ sodipodi:role="line"
+ id="tspan2950"
+ x="44.283585"
+ y="-289.18591">Notes: </tspan><tspan
+ sodipodi:role="line"
+ x="44.283585"
+ y="-239.18593"
+ id="tspan2954">- Widget roles are described in objects labels.</tspan><tspan
+ sodipodi:role="line"
+ x="44.283585"
+ y="-189.18593"
+ id="tspan2956">- Press Ctrl+O to open object properties panel</tspan><tspan
+ sodipodi:role="line"
+ x="44.283585"
+ y="-139.18593"
+ id="tspan2962">- To see objects in a tree, select Object->Objects in menu</tspan><tspan
+ sodipodi:role="line"
+ x="44.283585"
+ y="-89.185921"
+ id="tspan2960">- Inkscape's "objects" are SVG elements</tspan><tspan
+ sodipodi:role="line"
+ x="44.283585"
+ y="-39.185921"
+ id="tspan2966">- Press Ctrl+X to edit SVG elements directly with XML editor</tspan></text>
+</svg>
--- a/svghmi/gen_index_xhtml.ysl2 Tue Sep 13 16:51:54 2022 +0200
+++ b/svghmi/gen_index_xhtml.ysl2 Tue Sep 13 16:53:15 2022 +0200
@@ -84,6 +84,8 @@
// Inline SVG
copy "$result_svg";
script{
+ include text pythonic.js
+
| \n//\n//\n// Early independent declarations \n//\n//
apply "document('')/*/preamble:*";
@@ -98,8 +100,6 @@
include text sprintf.js
- include text pythonic.js
-
include text svghmi.js
| \n//\n//\n// Declarations from SVG scripts (inkscape document properties) \n//\n//
--- a/svghmi/parse_labels.ysl2 Tue Sep 13 16:51:54 2022 +0200
+++ b/svghmi/parse_labels.ysl2 Tue Sep 13 16:53:15 2022 +0200
@@ -2,7 +2,7 @@
// Parses:
-// "HMI:WidgetType|freq:param1:param2@path1,path1min,path1max@path2"
+// "HMI:WidgetType|freq:param1:param2@a=path1,path1min,path1max@b=path2#a+b>3"
//
// Into:
// widget type="WidgetType" id="blah456" {
@@ -13,39 +13,39 @@
// path value="path4" index="path4" type="HMI_LOCAL";
// }
//
-const "pathregex",!"'^([^\[,]+)(\[[^\]]+\])?([-.\d,]*)$'"!;
+const "pathregex",!"'^(\w+=)?([^,=]+)([-.\d,]*)$'"!;
const "newline" |
const "twonewlines", "concat($newline,$newline)";
template "*", mode="parselabel"
{
- const "part","@inkscape:label";
+ const "label","@inkscape:label";
const "desc", "svg:desc";
// add svg:desc field if continuation "\" marker is found at the end of label
- const "len","string-length($part)";
- const "has_continuation", "substring($part,$len,1)='\\'";
- const "label" choose{
+ const "len","string-length($label)";
+ const "has_continuation", "substring($label,$len,1)='\\'";
+ const "full_decl" choose{
when "$has_continuation" {
const "_continuation", "substring-before($desc, $twonewlines)";
const "continuation" choose {
when "$_continuation" value "$_continuation";
otherwise value "$desc";
}
- value "concat(substring($part,1,$len - 1),translate($continuation,$newline,''))";
+ value "concat(substring($label,1,$len - 1),translate($continuation,$newline,''))";
}
- otherwise value "$part";
+ otherwise value "$label";
}
const "id","@id";
- const "description", "substring-after($label,'HMI:')";
+ const "declaration", "substring-after($full_decl,'HMI:')";
- const "_args", "substring-before($description,'@')";
+ const "_args", "substring-before($declaration,'@')";
const "args" choose {
when "$_args" value "$_args";
- otherwise value "$description";
+ otherwise value "$declaration";
}
const "_typefreq", "substring-before($args,':')";
@@ -66,37 +66,59 @@
attrib "type" > «$type»
if "$freq" {
if "not(regexp:test($freq,'^[0-9]*(\.[0-9]+)?[smh]?'))" {
- error > Widget id:«$id» label:«$label» has wrong syntax of frequency forcing «$freq»
+ error > Widget id:«$id» label:«$full_decl» has wrong syntax of frequency forcing «$freq»
}
attrib "freq" > «$freq»
}
+
+ // find "#" + JS expr at the end
+ const "tail", "substring-after($declaration,'@')";
+ const "taillen","string-length($tail)";
+ const "has_enable", "contains($tail, '#')";
+ const "paths" choose{
+ when "$has_enable" {
+ value "substring-before($tail,'#')";
+ }
+ otherwise value "$tail";
+ }
+ if "$has_enable" {
+ const "enable_expr", "substring-after($tail,'#')";
+ attrib "enable_expr" value "$enable_expr";
+ }
+
foreach "str:split(substring-after($args, ':'), ':')" {
arg {
attrib "value" > «.»
}
}
- const "paths", "substring-after($description,'@')";
+
+ // for stricter syntax checking, this should make error
+ // if $paths contains "@@" or ends with "@" (empty paths)
+
foreach "str:split($paths, '@')" {
if "string-length(.) > 0" path {
// 1 : global match
+ // 2 : assign=
// 2 : /path
- // 3 : [accepts]
- // 4 : min,max
+ // 3 : min,max
const "path_match", "regexp:match(.,$pathregex)";
+ const "pathassign", "substring-before($path_match[2],'=')";
const "pathminmax", "str:split($path_match[4],',')";
- const "path", "$path_match[2]";
- const "path_accepts", "$path_match[3]";
+ const "path", "$path_match[3]";
const "pathminmaxcount", "count($pathminmax)";
- attrib "value" > «$path»
- if "string-length($path_accepts)"
- attrib "accepts" > «$path_accepts»
+ if "not($path)"
+ error > Widget id:«$id» label:«$full_decl» has wrong syntax
+
+ attrib "value" value "$path";
+ if "$pathassign"
+ attrib "assign" value "$pathassign";
choose {
when "$pathminmaxcount = 2" {
attrib "min" > «$pathminmax[1]»
attrib "max" > «$pathminmax[2]»
}
when "$pathminmaxcount = 1 or $pathminmaxcount > 2" {
- error > Widget id:«$id» label:«$label» has wrong syntax of path section «$pathminmax»
+ error > Widget id:«$id» label:«$full_decl» has wrong syntax of path section «$pathminmax»
}
}
if "$indexed_hmitree" choose {
@@ -110,7 +132,7 @@
const "item", "$indexed_hmitree/*[@hmipath = $path]";
const "pathtype", "local-name($item)";
if "$pathminmaxcount = 3 and not($pathtype = 'HMI_INT' or $pathtype = 'HMI_REAL')" {
- error > Widget id:«$id» label:«$label» path section «$pathminmax» use min and max on non mumeric value
+ error > Widget id:«$id» label:«$full_decl» path section «$pathminmax» use min and max on non mumeric value
}
if "count($item) = 1" {
attrib "index" > «$item/@index»
--- a/svghmi/pythonic.js Tue Sep 13 16:51:54 2022 +0200
+++ b/svghmi/pythonic.js Tue Sep 13 16:53:15 2022 +0200
@@ -165,8 +165,11 @@
}
const _zip = longest => (...iterables) => {
- if (iterables.length < 2) {
- throw new TypeError("zip takes 2 iterables at least, "+iterables.length+" given");
+ if (iterables.length == 0) {
+ // works starting with 1 iterable
+ // [a,b,c] -> [[a],[b],[c]]
+ // [a,b,c],[d,e,f] -> [[a,d],[b,e],[c,f]]
+ throw new TypeError("zip takes 1 iterables at least, "+iterables.length+" given");
}
return new Iterator(function * () {
--- a/svghmi/svghmi.js Tue Sep 13 16:51:54 2022 +0200
+++ b/svghmi/svghmi.js Tue Sep 13 16:53:15 2022 +0200
@@ -1,7 +1,5 @@
// svghmi.js
-var need_cache_apply = [];
-
function dispatch_value(index, value) {
let widgets = subscribers(index);
@@ -86,13 +84,8 @@
}
}
- while(widget = need_cache_apply.pop()){
- widget.apply_cache();
- }
-
if(jumps_need_update) update_jumps();
- apply_updates();
pending_widget_animates.forEach(widget => widget._animate());
pending_widget_animates = [];
@@ -139,8 +132,9 @@
throw new Error("Unknown index "+index);
}
};
+
+ apply_updates();
// register for rendering on next frame, since there are updates
- requestHMIAnimation();
} catch(err) {
// 1003 is for "Unsupported Data"
// ws.close(1003, err.message);
@@ -348,14 +342,13 @@
function send_hmi_value(index, value) {
if(index > last_remote_index){
- updates.set(index, value);
+ dispatch_value(index, value);
if(persistent_indexes.has(index)){
let varname = persistent_indexes.get(index);
document.cookie = varname+"="+value+"; max-age=3153600000";
}
- requestHMIAnimation();
return;
}
--- a/svghmi/ui.py Tue Sep 13 16:51:54 2022 +0200
+++ b/svghmi/ui.py Tue Sep 13 16:53:15 2022 +0200
@@ -662,14 +662,6 @@
for path in paths:
self.AddPathToSignature(path)
- # # TODO DEAD CODE ?
- # for widget in widgets:
- # widget_type = widget.get("type")
- # for path in widget.iterchildren("path"):
- # path_value = path.get("value")
- # path_accepts = map(
- # str.strip, path.get("accepts", '')[1:-1].split(','))
-
self.main_panel.SetupScrolling(scroll_x=False)
def GetWidgetParams(self, _context):
--- a/svghmi/widget_button.ysl2 Tue Sep 13 16:51:54 2022 +0200
+++ b/svghmi/widget_button.ysl2 Tue Sep 13 16:53:15 2022 +0200
@@ -151,7 +151,7 @@
| }
}
template "show", mode="actions" {
- | this.display = "«@eltname»";
+ | this.activity_state = «@eltname = 'active'»;
| this.request_animate();
}
template "hmi-value", mode="actions" {
@@ -164,7 +164,6 @@
function "generated_button_class" {
param "fsm";
- | display = "inactive";
| state = "init";
| dispatch(value) {
@@ -182,14 +181,10 @@
apply "$fsm", mode="actions";
- | animate(){
- | this.set_activation_state(this.display == "active");
- | }
-
| init() {
| this.bound_onmouseup = this.onmouseup.bind(this);
| this.element.addEventListener("pointerdown", this.onmousedown.bind(this));
- | this.set_activation_state(undefined);
+ | this.activity_state = undefined;
| }
}
--- a/svghmi/widget_foreach.ysl2 Tue Sep 13 16:51:54 2022 +0200
+++ b/svghmi/widget_foreach.ysl2 Tue Sep 13 16:53:15 2022 +0200
@@ -140,7 +140,7 @@
this.unsub_items();
this.sub_items();
update_subscriptions();
- need_cache_apply.push(this);
+ this.apply_cache();
jumps_need_update = true;
requestHMIAnimation();
}
--- a/svghmi/widget_jump.ysl2 Tue Sep 13 16:51:54 2022 +0200
+++ b/svghmi/widget_jump.ysl2 Tue Sep 13 16:53:15 2022 +0200
@@ -3,17 +3,42 @@
widget_desc("Jump") {
longdesc
||
- Jump widget brings focus to a different page. Mandatory single argument
+ Jump widget brings focus to a different page. Mandatory first argument
gives name of the page.
- Optional single path is used as new reference when jumping to a relative
- page, it must point to a HMI_NODE.
+ If first path is pointint to HMI_NODE variable is used as new reference
+ when jumping to a relative page.
+
+ Additional arguments are unordered options:
+
+ - Absolute: force page jump to be not relative even if first path is of type HMI_NODE
+
+ - name=value: Notify PLC about jump by setting variable with path having same name assigned
"active"+"inactive" labeled elements can be provided and reflect current
page being shown.
- "disabled" labeled element, if provided, is shown instead of "active" or
- "inactive" widget when pointed HMI_NODE is null.
+ Exemples:
+
+ Relative jump:
+
+ HMI:Jump:RelativePage@/PUMP9
+ HMI:Jump:RelativePage@/PUMP9@role=.userrole#role=="admin"
+
+ Absolute jump:
+
+ HMI:Jump:AbsolutePage
+ HMI:Jump:AbsolutePage@role=.userrole#role=="admin"
+
+ Forced absolute jump:
+
+ HMI:Jump:AbsolutePage:Absolute@/PUMP9
+ HMI:Jump:AbsolutePage:Absolute:notify=1@notify=/PUMP9
+
+ Jump with feedback
+
+ HMI:Jump:AbsolutePage:notify=1@notify=.did_jump
+
||
shortdesc > Jump to given page
@@ -26,110 +51,85 @@
widget_class("Jump") {
||
activable = false;
- active = false;
- disabled = false;
frequency = 2;
- update_activity() {
- if(this.active) {
- /* show active */
- this.active_elt.style.display = "";
- /* hide inactive */
- this.inactive_elt.style.display = "none";
- } else {
- /* show inactive */
- this.inactive_elt.style.display = "";
- /* hide active */
- this.active_elt.style.display = "none";
- }
- }
-
- update_disability() {
- if(this.disabled) {
- /* show disabled */
- this.disabled_elt.style.display = "";
- /* hide inactive */
- this.inactive_elt.style.display = "none";
- /* hide active */
- this.active_elt.style.display = "none";
- } else {
- /* hide disabled */
- this.disabled_elt.style.display = "none";
- this.update_activity();
- }
- }
-
make_on_click() {
let that = this;
const name = this.args[0];
return function(evt){
- /* TODO: in order to allow jumps to page selected through for exemple a dropdown,
- support path pointing to local variable whom value
- would be an HMI_TREE index and then jump to a relative page not hard-coded in advance */
- if(!that.disabled) {
- const index = that.indexes.length > 0 ? that.indexes[0] + that.offset : undefined;
+ /* TODO: in order to allow jumps to page selected through
+ for exemple a dropdown, support path pointing to local
+ variable whom value would be an HMI_TREE index and then
+ jump to a relative page not hard-coded in advance
+ */
+ if(that.enable_state) {
+ const index =
+ (that.is_relative && that.indexes.length > 0) ?
+ that.indexes[0] + that.offset : undefined;
fading_page_switch(name, index);
+ that.notify();
}
}
}
notify_page_change(page_name, index) {
+ // called from animate()
if(this.activable) {
const ref_index = this.indexes.length > 0 ? this.indexes[0] + this.offset : undefined;
const ref_name = this.args[0];
- this.active = ((ref_name == undefined || ref_name == page_name) && index == ref_index);
- this.update_state();
+ this.activity_state = ((ref_name == undefined || ref_name == page_name) && index == ref_index);
+ // Since called from animate, update activity directly
+ if(this.enable_displayed_state && this.has_activity) {
+ this.animate_activity();
+ }
}
}
-
- dispatch(value) {
- this.disabled = !Number(value);
-
- // TODO : use RequestAnimate and animate()
-
- this.update_state();
- }
||
}
+def "func:is_relative_jump" {
+ param "widget";
+ result "$widget/path and $widget/path[1]/@type='HMI_NODE' and not($widget/arg[position()>1 and @value = 'Absolute'])";
+}
+
widget_defs("Jump") {
- // TODO: ensure both active and inactive are provided
- const "activity" optional_labels("active inactive");
- const "have_activity","string-length($activity)>0";
- value "$activity";
+ optional_activable();
- const "disability" optional_labels("disabled");
- const "have_disability","$have_activity and string-length($disability)>0";
- value "$disability";
+ const "jump_disability","$has_activity and $has_disability";
| init: function() {
| this.element.onclick = this.make_on_click();
- if "$have_activity" {
+ if "$has_activity" {
| this.activable = true;
}
- if "not($have_disability)" {
- | this.unsubscribable = true;
- }
- > this.update_state =
- choose {
- when "$have_disability" {
- > this.update_disability
- }
- when "$have_activity" {
- > this.update_activity
- }
- otherwise > null
+
+ > this.is_relative =
+ choose{
+ when "func:is_relative_jump(.)" > true
+ otherwise > false
}
> ;\n
| },
+ | notify: function() {
+ const "paths","path";
+ foreach "arg[position()>1 and contains(@value,'=')]"{
+ const "name","substring-before(@value,'=')";
+ const "value","substring-after(@value,'=')";
+ const "index" foreach "$paths" if "@assign = $name" value "position()-1";
+ | // «@value»
+ | this.apply_hmi_value(«$index», «$value»);
+ }
+ | },
}
widget_page("Jump"){
param "page_desc";
- /* check that given path is compatible with page's reference path */
- if "path" {
- /* TODO: suport local variable containing an HMI_TREE index to jump to a relative page */
+ /* jump is considered relative jump if first path points to HMI_NODE
+ but a jump can be forced Absolute by adding a "Absolute" argument */
+ if "func:is_relative_jump(.)" {
+ /* if relative check that given path is compatible with page's reference path */
+
/* when no page name provided, check for same page */
const "target_page_name" choose {
when "arg" value "arg[1]/@value";
@@ -142,9 +142,12 @@
if "not(func:same_class_paths($target_page_path, path[1]/@value))"
error > Jump id="«@id»" to page "«$target_page_name»" with incompatible path "«path[1]/@value» (must be same class as "«$target_page_path»")
+
}
}
+
+
/* TODO: move to detachable pages ysl2 */
emit "cssdefs:jump"
||
@@ -165,6 +168,7 @@
var jump_history = [[default_page, undefined]];
function update_jumps() {
+ // called from animate()
page_desc[current_visible_page].jumps.map(w=>w.notify_page_change(current_visible_page,current_page_index));
jumps_need_update = false;
};
--- a/svghmi/widget_keypad.ysl2 Tue Sep 13 16:51:54 2022 +0200
+++ b/svghmi/widget_keypad.ysl2 Tue Sep 13 16:53:15 2022 +0200
@@ -118,11 +118,11 @@
}
if(this.Shift_sub && this.shift != this._shift){
this._shift = this.shift;
- set_activation_state(this.Shift_sub, this.shift);
+ set_activity_state(this.Shift_sub, this.shift);
}
if(this.CapsLock_sub && this.caps != this._caps){
this._caps = this.caps;
- set_activation_state(this.CapsLock_sub, this.caps);
+ set_activity_state(this.CapsLock_sub, this.caps);
}
}
||
--- a/svghmi/widget_tooglebutton.ysl2 Tue Sep 13 16:51:54 2022 +0200
+++ b/svghmi/widget_tooglebutton.ysl2 Tue Sep 13 16:53:15 2022 +0200
@@ -18,33 +18,27 @@
widget_class("ToggleButton") {
||
frequency = 5;
- state = 0;
active_style = undefined;
inactive_style = undefined;
dispatch(value) {
- this.state = value;
+ this.activity_state = Boolean(value);
//redraw toggle button
this.request_animate();
}
on_click(evt) {
//toggle state and apply
- this.state = this.state ? false : true;
- this.apply_hmi_value(0, this.state);
+ this.activity_state = this.activity_state ? false : true;
+ this.apply_hmi_value(0, this.activity_state);
//redraw toggle button
this.request_animate();
}
- animate(){
- // redraw toggle button on screen refresh
- this.set_activation_state(this.state);
- }
-
init() {
this.element.onclick = (evt) => this.on_click(evt);
- this.set_activation_state(undefined);
+ this.activity_state = undefined;
}
||
}
--- a/svghmi/widgets_common.ysl2 Tue Sep 13 16:51:54 2022 +0200
+++ b/svghmi/widgets_common.ysl2 Tue Sep 13 16:53:15 2022 +0200
@@ -21,13 +21,25 @@
}
};
+decl _activable(*level) alias - {
+ | activable_sub:{
+ const "activity" labels("/active /inactive") {
+ with "mandatory"{text *level};
+ content;
+ }
+ value "$activity";
+ const "has_activity","string-length($activity)>0";
+ | },
+ | has_activity: «$has_activity»,
+};
+
decl activable() alias - {
- | activable_sub:{
- warning_labels("/active /inactive") {
- content;
- }
- | }
-};
+ _activable("warn")
+};
+decl optional_activable() alias - {
+ _activable("no")
+};
+
decl activable_labels(*ptr) alias - {
optional_labels(*ptr) {
with "subelements","'active inactive'";
@@ -48,6 +60,10 @@
in xsl decl widget_defs(%name, match="widget[@type='%name']", mode="widget_defs") alias template {
param "hmi_element";
+ // all widget potentially has a "disabled" labeled element
+ const "disability" optional_labels("/disabled");
+ value "$disability";
+ const "has_disability","string-length($disability)>0";
content;
};
@@ -65,6 +81,11 @@
const "eltid","@id";
const "args" foreach "$widget/arg" > "«func:escape_quotes(@value)»"`if "position()!=last()" > ,`
const "indexes" foreach "$widget/path" {
+ if "position()!=last()" > ,
+ }
+
+ const "variables" foreach "$widget/path" {
+ > [
choose {
when "not(@index)" {
choose {
@@ -84,16 +105,15 @@
> «@index»
}
}
- if "position()!=last()" > ,
- }
-
- const "minmaxes" foreach "$widget/path" {
- choose {
- when "@min and @max"
- > [«@min»,«@max»]
- otherwise
- > undefined
- }
+ > , {
+ if "@min and @max"{
+ > minmax:[«@min», «@max»]
+ if "@assign"
+ > ,
+ }
+ if "@assign"
+ > assign:"«@assign»"
+ > }]
if "position()!=last()" > ,
}
@@ -104,7 +124,34 @@
> undefined
}
- | "«@id»": new «$widget/@type»Widget ("«@id»",«$freq»,[«$args»],[«$indexes»],[«$minmaxes»],{
+ const "enable_expr" choose{
+ when "$widget/@enable_expr"
+ > true
+ otherwise
+ > false
+ }
+
+ | "«@id»": new «$widget/@type»Widget ("«@id»",«$freq»,[«$args»],[«$variables»],«$enable_expr»,{
+ if "$widget/@enable_expr" {
+
+ | assignments: [],
+ | compute_enable: function(value, oldval, varnum) {
+ | let result = false;
+ | do {
+ foreach "$widget/path" {
+ const "varid","generate-id()";
+ const "varnum","position()-1";
+ if "@assign" foreach "$widget/path[@assign]" if "$varid = generate-id()" {
+ | if(varnum == «$varnum») this.assignments[«position()-1»] = value;
+ | let «@assign» = this.assignments[«position()-1»];
+ | if(«@assign» == undefined) break;
+ }
+ }
+ | result = «$widget/@enable_expr»;
+ | } while(0);
+ | this.enable(result);
+ | },
+ }
apply "$widget", mode="widget_defs" with "hmi_element",".";
| })`if "position()!=last()" > ,`
}
@@ -187,7 +234,7 @@
placeholder.parentNode.insertBefore(elt, placeholder);
}
- function set_activation_state(eltsub, state){
+ function set_activity_state(eltsub, state){
if(eltsub.active_elt != undefined){
if(eltsub.active_elt_placeholder == undefined){
eltsub.active_elt_placeholder = document.createComment("");
@@ -204,35 +251,34 @@
}
}
- function activate_activable(eltsub) {
- set_activation_state(eltsub, true);
- }
-
- function inactivate_activable(eltsub) {
- set_activation_state(eltsub, false);
- }
-
class Widget {
offset = 0;
frequency = 10; /* FIXME arbitrary default max freq. Obtain from config ? */
unsubscribable = false;
pending_animate = false;
- constructor(elt_id, freq, args, indexes, minmaxes, members){
+ constructor(elt_id, freq, args, variables, enable_expr, members){
this.element_id = elt_id;
this.element = id(elt_id);
this.args = args;
- this.indexes = indexes;
- this.minmaxes = minmaxes;
+
+ [this.indexes, this.variables_options] = (variables.length>0) ? zip(...variables) : [[],[]];
+ this.indexes_length = this.indexes.length;
+
+ this.enable_expr = enable_expr;
+ this.enable_state = true;
+ this.enable_displayed_state = true;
+ this.enabled_elts = [];
+
Object.keys(members).forEach(prop => this[prop]=members[prop]);
- this.lastapply = indexes.map(() => undefined);
- this.inhibit = indexes.map(() => undefined);
- this.pending = indexes.map(() => undefined);
+ this.lastapply = this.indexes.map(() => undefined);
+ this.inhibit = this.indexes.map(() => undefined);
+ this.pending = this.indexes.map(() => undefined);
this.bound_uninhibit = this.uninhibit.bind(this);
- this.lastdispatch = indexes.map(() => undefined);
- this.deafen = indexes.map(() => undefined);
- this.incoming = indexes.map(() => undefined);
+ this.lastdispatch = this.indexes.map(() => undefined);
+ this.deafen = this.indexes.map(() => undefined);
+ this.incoming = this.indexes.map(() => undefined);
this.bound_undeafen = this.undeafen.bind(this);
this.forced_frequency = freq;
@@ -267,30 +313,39 @@
console.log(err);
}
}
+
+ if(this.enable_expr){
+ this.enable_state = false;
+ this.enable_displayed_state = false;
+ for(let child of Array.from(this.element.children)){
+ let label = child.getAttribute("inkscape:label");
+ if(label!="disabled"){
+ this.enabled_elts.push(child);
+ this.element.removeChild(child);
+ }
+ }
+ }
}
unsub(){
/* remove subsribers */
- if(!this.unsubscribable)
- for(let i = 0; i < this.indexes.length; i++) {
- /* flush updates pending because of inhibition */
- let inhibition = this.inhibit[i];
- if(inhibition != undefined){
- clearTimeout(inhibition);
- this.lastapply[i] = undefined;
- this.uninhibit(i);
- }
- let deafened = this.deafen[i];
- if(deafened != undefined){
- clearTimeout(deafened);
- this.lastdispatch[i] = undefined;
- this.undeafen(i);
- }
- let index = this.indexes[i];
- if(this.relativeness[i])
- index += this.offset;
- subscribers(index).delete(this);
- }
+ for(let i = 0; i < this.indexes_length; i++) {
+ /* flush updates pending because of inhibition */
+ let inhibition = this.inhibit[i];
+ if(inhibition != undefined){
+ clearTimeout(inhibition);
+ this.lastapply[i] = undefined;
+ this.uninhibit(i);
+ }
+ let deafened = this.deafen[i];
+ if(deafened != undefined){
+ clearTimeout(deafened);
+ this.lastdispatch[i] = undefined;
+ this.undeafen(i);
+ }
+ let index = this.get_variable_index(i);
+ subscribers(index).delete(this);
+ }
this.offset = 0;
this.relativeness = undefined;
}
@@ -300,23 +355,22 @@
this.relativeness = relativeness;
this.container_id = container_id ;
/* add this's subsribers */
- if(!this.unsubscribable)
- for(let i = 0; i < this.indexes.length; i++) {
- let index = this.get_variable_index(i);
- if(index == undefined) continue;
- subscribers(index).add(this);
- }
- need_cache_apply.push(this);
+ for(let i = 0; i < this.indexes_length; i++) {
+ let index = this.get_variable_index(i);
+ if(index == undefined) continue;
+ subscribers(index).add(this);
+ }
+ this.apply_cache();
}
apply_cache() {
- if(!this.unsubscribable) for(let index in this.indexes){
+ for(let i = 0; i < this.indexes_length; i++) {
/* dispatch current cache in newly opened page widgets */
- let realindex = this.get_variable_index(index);
+ let realindex = this.get_variable_index(i);
if(realindex == undefined) continue;
let cached_val = cache[realindex];
if(cached_val != undefined)
- this._dispatch(cached_val, cached_val, index);
+ this.feed_data_for_dispatch(cached_val, cached_val, i);
}
}
@@ -339,7 +393,7 @@
}
clip_min_max(index, new_val) {
- let minmax = this.minmaxes[index];
+ let minmax = this.variables_options[index].minmax;
if(minmax !== undefined && typeof new_val == "number") {
let [min,max] = minmax;
if(new_val < min){
@@ -402,12 +456,12 @@
new_hmi_value(index, value, oldval) {
// TODO avoid searching, store index at sub()
- for(let i = 0; i < this.indexes.length; i++) {
+ for(let i = 0; i < this.indexes_length; i++) {
let refindex = this.get_variable_index(i);
if(refindex == undefined) continue;
if(index == refindex) {
- this._dispatch(value, oldval, i);
+ this.feed_data_for_dispatch(value, oldval, i);
break;
}
}
@@ -417,23 +471,57 @@
this.deafen[index] = undefined;
let [new_val, old_val] = this.incoming[index];
this.incoming[index] = undefined;
- this.dispatch(new_val, old_val, index);
- }
-
- _dispatch(value, oldval, varnum) {
- let dispatch = this.dispatch;
- if(dispatch != undefined){
+ this.do_dispatch(new_val, old_val, index);
+ }
+
+ enable(enabled){
+ if(this.enable_state != enabled){
+ this.enable_state = enabled;
+ this.request_animate();
+ }
+ }
+
+ animate_enable(){
+ if(this.enable_state && !this.enable_displayed_state){
+ //show widget
+ for(let child of this.enabled_elts){
+ this.element.appendChild(child);
+ }
+
+ //hide disabled content
+ if(this.disabled_elt && this.disabled_elt.parentNode != null)
+ this.element.removeChild(this.disabled_elt);
+
+ this.enable_displayed_state = true;
+
+ }else if(!this.enable_state && this.enable_displayed_state){
+
+ //hide widget
+ for(let child of this.enabled_elts){
+ if(child.parentNode != null)
+ this.element.removeChild(child);
+ }
+
+ //show disabled content
+ if(this.disabled_elt)
+ this.element.appendChild(this.disabled_elt);
+
+ this.enable_displayed_state = false;
+
+ // once disabled activity display is lost
+ this.activity_displayed_state = undefined;
+ }
+ }
+
+ feed_data_for_dispatch(value, oldval, varnum) {
+ if(this.dispatch || this.enable_expr){
if(this.deafen[varnum] == undefined){
let now = Date.now();
let min_interval = 1000/this.frequency;
let lastdispatch = this.lastdispatch[varnum];
if(lastdispatch == undefined || now > lastdispatch + min_interval){
this.lastdispatch[varnum] = now;
- try {
- dispatch.call(this, value, oldval, varnum);
- } catch(err) {
- console.log(err);
- }
+ this.do_dispatch(value, oldval, varnum)
}
else {
let elapsed = now - lastdispatch;
@@ -447,8 +535,29 @@
}
}
+ do_dispatch(value, oldval, varnum) {
+ if(this.dispatch) try {
+ this.dispatch(value, oldval, varnum);
+ } catch(err) {
+ console.log(err);
+ }
+ if(this.enable_expr) try {
+ this.compute_enable(value, oldval, varnum);
+ } catch(err) {
+ console.log(err);
+ }
+ }
+
_animate(){
- this.animate();
+ if(this.enable_expr)
+ this.animate_enable();
+ // inhibit widget animation when disabled
+ if(!this.enable_expr || this.enable_state){
+ if(this.has_activity)
+ this.animate_activity();
+ if(this.animate != undefined)
+ this.animate();
+ }
this.pending_animate = false;
}
@@ -460,8 +569,11 @@
}
}
- set_activation_state(state){
- set_activation_state(this.activable_sub, state);
+ animate_activity(){
+ if(this.activity_displayed_state != this.activity_state){
+ set_activity_state(this.activable_sub, this.activity_state);
+ this.activity_displayed_state = this.activity_state;
+ }
}
}
||
--- a/tests/projects/svghmi/plc.xml Tue Sep 13 16:51:54 2022 +0200
+++ b/tests/projects/svghmi/plc.xml Tue Sep 13 16:53:15 2022 +0200
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<project xmlns:ns1="http://www.plcopen.org/xml/tc6_0201" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.plcopen.org/xml/tc6_0201">
<fileHeader companyName="Unknown" productName="Unnamed" productVersion="1" creationDateTime="2019-08-06T14:23:42"/>
- <contentHeader name="Unnamed" modificationDateTime="2022-07-21T11:39:43">
+ <contentHeader name="Unnamed" modificationDateTime="2022-08-31T11:57:03">
<coordinateInfo>
<fbd>
<scaling x="5" y="5"/>
@@ -575,64 +575,6 @@
</variable>
</outputVariables>
</block>
- <inVariable localId="2" executionOrderId="0" height="30" width="60" negated="false">
- <position x="240" y="190"/>
- <connectionPointOut>
- <relPosition x="60" y="15"/>
- </connectionPointOut>
- <expression>Sloth</expression>
- </inVariable>
- <outVariable localId="3" executionOrderId="0" height="30" width="75" negated="false">
- <position x="435" y="205"/>
- <connectionPointIn>
- <relPosition x="0" y="15"/>
- <connection refLocalId="8" formalParameter="OUT">
- <position x="435" y="220"/>
- <position x="410" y="220"/>
- </connection>
- </connectionPointIn>
- <expression>Pressure</expression>
- </outVariable>
- <block localId="8" typeName="DIV" executionOrderId="0" height="60" width="65">
- <position x="345" y="190"/>
- <inputVariables>
- <variable formalParameter="IN1">
- <connectionPointIn>
- <relPosition x="0" y="30"/>
- <connection refLocalId="2">
- <position x="345" y="220"/>
- <position x="335" y="220"/>
- <position x="335" y="205"/>
- <position x="300" y="205"/>
- </connection>
- </connectionPointIn>
- </variable>
- <variable formalParameter="IN2">
- <connectionPointIn>
- <relPosition x="0" y="50"/>
- <connection refLocalId="9">
- <position x="345" y="240"/>
- <position x="300" y="240"/>
- </connection>
- </connectionPointIn>
- </variable>
- </inputVariables>
- <inOutVariables/>
- <outputVariables>
- <variable formalParameter="OUT">
- <connectionPointOut>
- <relPosition x="65" y="30"/>
- </connectionPointOut>
- </variable>
- </outputVariables>
- </block>
- <inVariable localId="9" executionOrderId="0" height="30" width="60" negated="false">
- <position x="240" y="225"/>
- <connectionPointOut>
- <relPosition x="60" y="15"/>
- </connectionPointOut>
- <expression>100</expression>
- </inVariable>
<block localId="10" typeName="CONCAT" executionOrderId="0" height="60" width="65">
<position x="360" y="345"/>
<inputVariables>
@@ -688,7 +630,7 @@
<connectionPointOut>
<relPosition x="125" y="15"/>
</connectionPointOut>
- <expression>TargetPressure</expression>
+ <expression>Pressure</expression>
</inVariable>
<block localId="13" typeName="INT_TO_STRING" executionOrderId="0" height="40" width="115">
<position x="315" y="270"/>
--- a/tests/projects/svghmi/svghmi_0@svghmi/confnode.xml Tue Sep 13 16:51:54 2022 +0200
+++ b/tests/projects/svghmi/svghmi_0@svghmi/confnode.xml Tue Sep 13 16:53:15 2022 +0200
@@ -1,2 +1,2 @@
<?xml version='1.0' encoding='utf-8'?>
-<SVGHMI xmlns:xsd="http://www.w3.org/2001/XMLSchema" OnWatchdog="echo Watchdog for {name} !" WatchdogInitial="10" WatchdogInterval="5" EnableWatchdog="true" Path="{name}" OnStart="chromium --disable-gpu --new-window --user-data-dir=. {url}"/>
+<SVGHMI xmlns:xsd="http://www.w3.org/2001/XMLSchema" OnWatchdog="echo Watchdog for {name} !" WatchdogInitial="10" WatchdogInterval="5" EnableWatchdog="true" Path="{name}"/>
--- a/tests/projects/svghmi/svghmi_0@svghmi/svghmi.svg Tue Sep 13 16:51:54 2022 +0200
+++ b/tests/projects/svghmi/svghmi_0@svghmi/svghmi.svg Tue Sep 13 16:53:15 2022 +0200
@@ -136,9 +136,9 @@
inkscape:current-layer="hmi0"
showgrid="false"
units="px"
- inkscape:zoom="0.14174805"
- inkscape:cx="-1530.0784"
- inkscape:cy="-1404.9832"
+ inkscape:zoom="0.40092403"
+ inkscape:cx="323.58553"
+ inkscape:cy="-56.756946"
inkscape:window-width="1600"
inkscape:window-height="836"
inkscape:window-x="0"
@@ -3240,7 +3240,7 @@
inkscape:label="PUMP:1">
<g
transform="matrix(0.57180538,0,0,0.57180538,1024.0513,-317.49049)"
- inkscape:label="HMI:Jump:RelativePageTest@/PUMP0"
+ inkscape:label="HMI:Jump:RelativePageTest@en=/PUMP0#en"
id="g1458-8">
<g
inkscape:label="disabled"
@@ -3255,6 +3255,17 @@
width="245.44583"
id="rect1448-8"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.28600003;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#434343;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1093.7899"
+ y="657.59668"
+ id="text1454-0-7"><tspan
+ sodipodi:role="line"
+ x="1093.7899"
+ y="657.59668"
+ style="text-align:center;text-anchor:middle;fill:#434343;fill-opacity:1;stroke-width:0.99999994px"
+ id="tspan1460-3-5">Disabled</tspan></text>
</g>
<g
id="g1067"
@@ -3269,6 +3280,17 @@
y="594.82263"
ry="35.579063"
inkscape:label="button" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1093.7899"
+ y="657.59668"
+ id="text1454-0"><tspan
+ sodipodi:role="line"
+ x="1093.7899"
+ y="657.59668"
+ style="text-align:center;text-anchor:middle;fill:#ff6600;stroke-width:0.99999994px"
+ id="tspan1460-3">Inactive</tspan></text>
</g>
<g
inkscape:label="active"
@@ -3283,272 +3305,326 @@
width="245.44583"
id="rect1069"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- </g>
- <g
- inkscape:label="text"
- id="g1456-1">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="1038.2972"
- y="635.99542"
- id="text1454-0"
- inkscape:label="setting_jmp"><tspan
+ x="1095.5966"
+ y="657.59668"
+ id="text1454-0-3"><tspan
sodipodi:role="line"
- x="1038.2972"
- y="635.99542"
+ x="1095.5966"
+ y="657.59668"
style="text-align:center;text-anchor:middle;fill:#ff6600;stroke-width:0.99999994px"
- id="tspan1460-3">Pump</tspan></text>
+ id="tspan1460-3-6">Active</tspan></text>
+ </g>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:22.48720932px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14054523px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1591.54"
+ y="102.34158"
+ id="text1517-8"
+ inkscape:label="HMI:Display@/PUMP0/STROUT"><tspan
+ sodipodi:role="line"
+ id="tspan1515-5"
+ x="1591.54"
+ y="102.34158"
+ style="fill:#000000;fill-opacity:1;stroke-width:0.14054523px">8888</tspan></text>
+ </g>
+ <g
+ id="g6122"
+ inkscape:label="PUMP:2">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:22.48720932px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14054523px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1751.7461"
+ y="102.34158"
+ id="text1517-8-5"
+ inkscape:label="HMI:Display@/PUMP1/STROUT"><tspan
+ sodipodi:role="line"
+ id="tspan1515-5-3"
+ x="1751.7461"
+ y="102.34158"
+ style="fill:#000000;fill-opacity:1;stroke-width:0.14054523px">8888</tspan></text>
+ <g
+ transform="matrix(0.57180538,0,0,0.57180538,1184.0513,-317.49049)"
+ inkscape:label="HMI:Jump:RelativePageTest@en=/PUMP1#en"
+ id="g1458-8-3">
+ <g
+ inkscape:label="disabled"
+ id="g1450-4-5"
+ style="display:inline">
+ <rect
+ rx="35.579063"
+ inkscape:label="button"
+ ry="35.579063"
+ y="594.82263"
+ x="971.96545"
+ height="95.723877"
+ width="245.44583"
+ id="rect1448-8-6"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.28600003;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<text
xml:space="preserve"
- style="font-style:normal;font-weight:normal;font-size:39.32668304px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.24579209px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="992.45087"
- y="674.76117"
- id="text1517-8"
- inkscape:label="HMI:Display@/PUMP0/STROUT"><tspan
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#434343;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1093.7899"
+ y="657.59668"
+ id="text1454-0-7-2"><tspan
sodipodi:role="line"
- id="tspan1515-5"
- x="992.45087"
- y="674.76117"
- style="fill:#000000;fill-opacity:1;stroke-width:0.24579209px">8888</tspan></text>
+ x="1093.7899"
+ y="657.59668"
+ style="text-align:center;text-anchor:middle;fill:#434343;fill-opacity:1;stroke-width:0.99999994px"
+ id="tspan1460-3-5-9">Disabled</tspan></text>
</g>
- </g>
- </g>
- <g
- id="g6122"
- inkscape:label="PUMP:2">
- <g
- id="g1475-0"
- inkscape:label="HMI:Jump:RelativePageTest@/PUMP1"
- transform="matrix(0.57180538,0,0,0.57180538,1184.0513,-317.49049)">
<g
- id="g1467-4"
- inkscape:label="disabled">
+ id="g1067-1"
+ inkscape:label="inactive"
+ style="display:inline">
<rect
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.28600003;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- id="rect1464-4"
+ rx="35.579063"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect1065-2"
width="245.44583"
height="95.723877"
x="971.96545"
y="594.82263"
ry="35.579063"
inkscape:label="button" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1093.7899"
+ y="657.59668"
+ id="text1454-0-70"><tspan
+ sodipodi:role="line"
+ x="1093.7899"
+ y="657.59668"
+ style="text-align:center;text-anchor:middle;fill:#ff6600;stroke-width:0.99999994px"
+ id="tspan1460-3-9">Inactive</tspan></text>
</g>
<g
- inkscape:label="inactive"
- id="g1898"
+ inkscape:label="active"
+ id="g1071-3"
style="display:inline">
<rect
+ rx="35.579063"
inkscape:label="button"
ry="35.579063"
y="594.82263"
x="971.96545"
height="95.723877"
width="245.44583"
- id="rect1896"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ id="rect1069-6"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1095.5966"
+ y="657.59668"
+ id="text1454-0-3-0"><tspan
+ sodipodi:role="line"
+ x="1095.5966"
+ y="657.59668"
+ style="text-align:center;text-anchor:middle;fill:#ff6600;stroke-width:0.99999994px"
+ id="tspan1460-3-6-6">Active</tspan></text>
+ </g>
+ </g>
+ </g>
+ <g
+ id="g6113"
+ inkscape:label="PUMP:3">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:22.48720932px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14054523px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1911.9519"
+ y="102.34158"
+ id="text1517-8-8"
+ inkscape:label="HMI:Display@/PUMP2/STROUT"><tspan
+ sodipodi:role="line"
+ id="tspan1515-5-8"
+ x="1911.9519"
+ y="102.34158"
+ style="fill:#000000;fill-opacity:1;stroke-width:0.14054523px">8888</tspan></text>
+ <g
+ transform="matrix(0.57180538,0,0,0.57180538,1344.0513,-317.49049)"
+ inkscape:label="HMI:Jump:RelativePageTest@en=/PUMP2#en"
+ id="g1458-8-2">
+ <g
+ inkscape:label="disabled"
+ id="g1450-4-6"
+ style="display:inline">
+ <rect
+ rx="35.579063"
+ inkscape:label="button"
+ ry="35.579063"
+ y="594.82263"
+ x="971.96545"
+ height="95.723877"
+ width="245.44583"
+ id="rect1448-8-1"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.28600003;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#434343;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1093.7899"
+ y="657.59668"
+ id="text1454-0-7-8"><tspan
+ sodipodi:role="line"
+ x="1093.7899"
+ y="657.59668"
+ style="text-align:center;text-anchor:middle;fill:#434343;fill-opacity:1;stroke-width:0.99999994px"
+ id="tspan1460-3-5-7">Disabled</tspan></text>
</g>
<g
- id="g1902"
- inkscape:label="active"
+ id="g1067-9"
+ inkscape:label="inactive"
style="display:inline">
<rect
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- id="rect1900"
+ rx="35.579063"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+ id="rect1065-20"
width="245.44583"
height="95.723877"
x="971.96545"
y="594.82263"
ry="35.579063"
inkscape:label="button" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1093.7899"
+ y="657.59668"
+ id="text1454-0-2"><tspan
+ sodipodi:role="line"
+ x="1093.7899"
+ y="657.59668"
+ style="text-align:center;text-anchor:middle;fill:#ff6600;stroke-width:0.99999994px"
+ id="tspan1460-3-3">Inactive</tspan></text>
</g>
<g
- id="g1473-4"
- inkscape:label="text">
- <text
- inkscape:label="setting_jmp"
- id="text1471-4"
- y="635.99542"
- x="1038.2972"
- style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- xml:space="preserve"><tspan
- style="text-align:center;text-anchor:middle;fill:#ff6600;stroke-width:0.99999994px"
- y="635.99542"
- x="1038.2972"
- sodipodi:role="line"
- id="tspan1477-6">Pump</tspan></text>
- <text
- xml:space="preserve"
- style="font-style:normal;font-weight:normal;font-size:39.32668304px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.24579208px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="992.8111"
- y="674.76117"
- id="text1517-8-5"
- inkscape:label="HMI:Display@/PUMP1/STROUT"><tspan
- sodipodi:role="line"
- id="tspan1515-5-3"
- x="992.8111"
- y="674.76117"
- style="fill:#000000;fill-opacity:1;stroke-width:0.24579208px">8888</tspan></text>
- </g>
- </g>
- </g>
- <g
- id="g6113"
- inkscape:label="PUMP:3">
- <g
- transform="matrix(0.57180538,0,0,0.57180538,1344.0513,-317.49049)"
- inkscape:label="HMI:Jump:RelativePageTest@/PUMP2"
- id="g1491-3">
- <g
- inkscape:label="disabled"
- id="g1481-1">
+ inkscape:label="active"
+ id="g1071-7"
+ style="display:inline">
<rect
+ rx="35.579063"
inkscape:label="button"
ry="35.579063"
y="594.82263"
x="971.96545"
height="95.723877"
width="245.44583"
- id="rect1479-7"
+ id="rect1069-5"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1095.5966"
+ y="657.59668"
+ id="text1454-0-3-9"><tspan
+ sodipodi:role="line"
+ x="1095.5966"
+ y="657.59668"
+ style="text-align:center;text-anchor:middle;fill:#ff6600;stroke-width:0.99999994px"
+ id="tspan1460-3-6-2">Active</tspan></text>
+ </g>
+ </g>
+ </g>
+ <g
+ id="g6104"
+ inkscape:label="PUMP:4">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:22.48720932px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.14054523px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="2072.1577"
+ y="102.34158"
+ id="text1517-8-3"
+ inkscape:label="HMI:Display@/PUMP3/STROUT"><tspan
+ sodipodi:role="line"
+ id="tspan1515-5-1"
+ x="2072.1577"
+ y="102.34158"
+ style="fill:#000000;fill-opacity:1;stroke-width:0.14054523px">8888</tspan></text>
+ <g
+ transform="matrix(0.57180538,0,0,0.57180538,1504.0513,-317.49049)"
+ inkscape:label="HMI:Jump:RelativePageTest@en=/PUMP3#en"
+ id="g1458-8-28">
+ <g
+ inkscape:label="disabled"
+ id="g1450-4-9"
+ style="display:inline">
+ <rect
+ rx="35.579063"
+ inkscape:label="button"
+ ry="35.579063"
+ y="594.82263"
+ x="971.96545"
+ height="95.723877"
+ width="245.44583"
+ id="rect1448-8-7"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.28600003;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#434343;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1093.7899"
+ y="657.59668"
+ id="text1454-0-7-3"><tspan
+ sodipodi:role="line"
+ x="1093.7899"
+ y="657.59668"
+ style="text-align:center;text-anchor:middle;fill:#434343;fill-opacity:1;stroke-width:0.99999994px"
+ id="tspan1460-3-5-6">Disabled</tspan></text>
</g>
<g
- id="g1906"
- inkscape:label="inactive">
+ id="g1067-12"
+ inkscape:label="inactive"
+ style="display:inline">
<rect
+ rx="35.579063"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- id="rect1904"
+ id="rect1065-9"
width="245.44583"
height="95.723877"
x="971.96545"
y="594.82263"
ry="35.579063"
inkscape:label="button" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1093.7899"
+ y="657.59668"
+ id="text1454-0-31"><tspan
+ sodipodi:role="line"
+ x="1093.7899"
+ y="657.59668"
+ style="text-align:center;text-anchor:middle;fill:#ff6600;stroke-width:0.99999994px"
+ id="tspan1460-3-94">Inactive</tspan></text>
</g>
<g
inkscape:label="active"
- id="g1910">
+ id="g1071-78"
+ style="display:inline">
<rect
+ rx="35.579063"
inkscape:label="button"
ry="35.579063"
y="594.82263"
x="971.96545"
height="95.723877"
width="245.44583"
- id="rect1908"
+ id="rect1069-4"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- </g>
- <g
- inkscape:label="text"
- id="g1489-5">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="1038.2972"
- y="635.99542"
- id="text1487-9"
- inkscape:label="setting_jmp"><tspan
- id="tspan1485-2"
+ x="1095.5966"
+ y="657.59668"
+ id="text1454-0-3-5"><tspan
sodipodi:role="line"
- x="1038.2972"
- y="635.99542"
- style="text-align:center;text-anchor:middle;fill:#ff6600;stroke-width:0.99999994px">Pump</tspan></text>
- <text
- xml:space="preserve"
- style="font-style:normal;font-weight:normal;font-size:39.32668304px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.24579208px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="993.17108"
- y="674.76117"
- id="text1517-8-8"
- inkscape:label="HMI:Display@/PUMP2/STROUT"><tspan
- sodipodi:role="line"
- id="tspan1515-5-8"
- x="993.17108"
- y="674.76117"
- style="fill:#000000;fill-opacity:1;stroke-width:0.24579208px">8888</tspan></text>
- </g>
- </g>
- </g>
- <g
- id="g6104"
- inkscape:label="PUMP:4">
- <g
- id="g1509-1"
- inkscape:label="HMI:Jump:RelativePageTest@/PUMP3"
- transform="matrix(0.57180538,0,0,0.57180538,1504.0513,-317.49049)">
- <g
- id="g1499-7"
- inkscape:label="disabled"
- style="display:inline">
- <rect
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.28600003;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- id="rect1497-8"
- width="245.44583"
- height="95.723877"
- x="971.96545"
- y="594.82263"
- ry="35.579063"
- inkscape:label="button" />
- </g>
- <g
- id="g1918"
- inkscape:label="inactive"
- style="display:inline">
- <rect
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#3d3d3d;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
- id="rect1916"
- width="245.44583"
- height="95.723877"
- x="971.96545"
- y="594.82263"
- ry="35.579063"
- inkscape:label="button" />
- </g>
- <g
- inkscape:label="active"
- id="g1914"
- style="display:inline">
- <rect
- inkscape:label="button"
- ry="35.579063"
- y="594.82263"
- x="971.96545"
- height="95.723877"
- width="245.44583"
- id="rect1912"
- style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
- </g>
- <g
- id="g1507-5"
- inkscape:label="text">
- <text
- inkscape:label="setting_jmp"
- id="text1505-7"
- y="635.99542"
- x="1038.2972"
- style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- xml:space="preserve"><tspan
+ x="1095.5966"
+ y="657.59668"
style="text-align:center;text-anchor:middle;fill:#ff6600;stroke-width:0.99999994px"
- y="635.99542"
- x="1038.2972"
- sodipodi:role="line"
- id="tspan1511-4">Pump</tspan><tspan
- style="text-align:center;text-anchor:middle;fill:#ff6600;stroke-width:0.99999994px"
- y="685.99542"
- x="1038.2972"
- sodipodi:role="line"
- id="tspan1503-1" /></text>
- <text
- xml:space="preserve"
- style="font-style:normal;font-weight:normal;font-size:39.32668304px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.24579208px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- x="993.53101"
- y="674.76117"
- id="text1517-8-3"
- inkscape:label="HMI:Display@/PUMP3/STROUT"><tspan
- sodipodi:role="line"
- id="tspan1515-5-1"
- x="993.53101"
- y="674.76117"
- style="fill:#000000;fill-opacity:1;stroke-width:0.24579208px">8888</tspan></text>
+ id="tspan1460-3-6-0">Active</tspan></text>
</g>
</g>
</g>
@@ -8450,4 +8526,35 @@
style="text-align:center;text-anchor:middle;fill:#ff6600;stroke-width:0.99999994px">up</tspan></text>
</g>
</g>
+ <g
+ transform="translate(-940,-418)"
+ inkscape:label="HMI:Jump:Home:notify=42:plop="WTF"@notify=/SELECTION@plop=/PUMP0/STRIN"
+ id="g2343">
+ <g
+ inkscape:label="button"
+ id="g2335">
+ <path
+ sodipodi:nodetypes="cssssccc"
+ inkscape:connector-curvature="0"
+ id="path2333"
+ d="m 1217.4113,1410.4016 -22,24.5657 c -10.7925,12.0511 6.1317,35.5791 -13.5791,35.5791 h -174.2877 c -19.71078,0 -2.7866,-23.528 -13.57905,-35.5791 l -22,-24.5657 127.74845,-48.4334 z"
+ style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:nonzero;stroke:#ff6600;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ </g>
+ <g
+ inkscape:label="text"
+ id="g2341">
+ <text
+ inkscape:label="home_jmp"
+ id="text2339"
+ y="1436.9814"
+ x="1090.7626"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="text-align:center;text-anchor:middle;fill:#ff6600;stroke-width:0.99999994px"
+ y="1436.9814"
+ x="1090.7626"
+ id="tspan2337"
+ sodipodi:role="line">Home</tspan></text>
+ </g>
+ </g>
</svg>
--- a/tests/projects/svghmi_scrollbar/plc.xml Tue Sep 13 16:51:54 2022 +0200
+++ b/tests/projects/svghmi_scrollbar/plc.xml Tue Sep 13 16:53:15 2022 +0200
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<project xmlns:ns1="http://www.plcopen.org/xml/tc6_0201" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.plcopen.org/xml/tc6_0201">
<fileHeader companyName="Unknown" productName="Unnamed" productVersion="1" creationDateTime="2019-08-06T14:23:42"/>
- <contentHeader name="Unnamed" modificationDateTime="2021-09-10T14:17:04">
+ <contentHeader name="Unnamed" modificationDateTime="2022-08-23T09:33:50">
<coordinateInfo>
<fbd>
<scaling x="5" y="5"/>
--- a/tests/projects/svghmi_scrollbar/svghmi_0@svghmi/svghmi.svg Tue Sep 13 16:51:54 2022 +0200
+++ b/tests/projects/svghmi_scrollbar/svghmi_0@svghmi/svghmi.svg Tue Sep 13 16:53:15 2022 +0200
@@ -60,8 +60,8 @@
showgrid="false"
units="px"
inkscape:zoom="0.64"
- inkscape:cx="476.03774"
- inkscape:cy="444.53549"
+ inkscape:cx="864.62819"
+ inkscape:cy="344.83986"
inkscape:window-width="1600"
inkscape:window-height="836"
inkscape:window-x="0"
@@ -748,11 +748,18 @@
inkscape:label="HMI:ScrollBar\"
transform="translate(-202)">
<desc
- id="desc150">@.range
-@.position
+ id="desc150">@range=.range
+@pos=.position
@.size
+#pos>10&&range>50
my tailor is rich</desc>
+ <path
+ inkscape:connector-curvature="0"
+ d="m 972,603 h 75 l -37.5,58 z m 37.5,-579.999998 37.5,58 H 972 Z M 969,236 h 81 V 407 H 969 Z M 960,84.000002 h 100 V 600 H 960 Z"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:8, 8;stroke-dashoffset:0;stroke-opacity:1;marker:none"
+ id="path159"
+ inkscape:label="disabled" />
<rect
y="84"
x="960"