diff --git a/Makefile b/Makefile
index e9ef46e23d2fa2b5ede73fc9f09eac1a966c4572..99bb80337ece713dd119b13cd2c5ba8713f0f44c 100755
--- a/Makefile
+++ b/Makefile
@@ -264,7 +264,7 @@ stdrelease:
 	cp  $(TTOOL_SIMULATORS)/c++2/lib/README $(TTOOL_TARGET)/simulators/c++2/lib/
 	cp  $(TTOOL_SIMULATORS)/c++2/Makefile $(TTOOL_TARGET)/simulators/c++2
 	cp  $(TTOOL_SIMULATORS)/c++2/Makefile.defs $(TTOOL_TARGET)/simulators/c++2
-	cp  $(TTOOL_SIMULATORS)/c++2/schedstyle.css $(TTOOL_TARGET)/simulators/c++2
+#	cp  $(TTOOL_SIMULATORS)/c++2/schedstyle.css $(TTOOL_TARGET)/simulators/c++2
 	cp  $(TTOOL_SIMULATORS)/c++2/src_simulator/*.cpp $(TTOOL_TARGET)/simulators/c++2/src_simulator
 	cp  $(TTOOL_SIMULATORS)/c++2/src_simulator/*.h $(TTOOL_TARGET)/simulators/c++2/src_simulator
 	cp  $(TTOOL_SIMULATORS)/c++2/src_simulator/app/*.cpp $(TTOOL_TARGET)/simulators/c++2/src_simulator/app
@@ -393,7 +393,7 @@ define functionCommonPreinstall
 	cp  $(TTOOL_SIMULATORS)/c++2/lib/README $(1)/TTool/simulators/c++2/lib/
 	cp  $(TTOOL_SIMULATORS)/c++2/Makefile $(1)/TTool/simulators/c++2
 	cp  $(TTOOL_SIMULATORS)/c++2/Makefile.defs $(1)/TTool/simulators/c++2
-	cp  $(TTOOL_SIMULATORS)/c++2/schedstyle.css $(1)/TTool/simulators/c++2
+#	cp  $(TTOOL_SIMULATORS)/c++2/schedstyle.css $(1)/TTool/simulators/c++2
 	cp  $(TTOOL_SIMULATORS)/c++2/src_simulator/*.cpp $(1)/TTool/simulators/c++2/src_simulator
 	cp  $(TTOOL_SIMULATORS)/c++2/src_simulator/*.h $(1)/TTool/simulators/c++2/src_simulator
 	cp  $(TTOOL_SIMULATORS)/c++2/src_simulator/app/*.cpp $(1)/TTool/simulators/c++2/src_simulator/app
diff --git a/build.txt b/build.txt
index 3c67333fdb28a1b13d2d9da58ba656e179404763..8a71ce55b709315dd912449a04614002b33c4b82 100644
--- a/build.txt
+++ b/build.txt
@@ -1 +1 @@
-12181
\ No newline at end of file
+12188
\ No newline at end of file
diff --git a/doc/ttool_windows.bat b/doc/ttool_windows.bat
index 9e9ae515bf1560fd044899b0d09c2e7b273a5867..7abb8c080eb4a59496f96f57400baa360bfb9829 100755
--- a/doc/ttool_windows.bat
+++ b/doc/ttool_windows.bat
@@ -1,3 +1,3 @@
-chdir  TTool\bin
+chdir  bin
 java -Xmx1024m -jar ttool.jar -launcher -config config.xml -nc -diplodocus -avatar -proverif
 
diff --git a/modeling/SysMLSec/AliceAndBob.xml b/modeling/SysMLSec/AliceAndBob.xml
index 68a9b4849b72400e0465464b7851b8f12ac53231..16c14c0e50d4f697de90adf4d626615510212190 100644
--- a/modeling/SysMLSec/AliceAndBob.xml
+++ b/modeling/SysMLSec/AliceAndBob.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 
-<TURTLEGMODELING version="0.99-beta1">
+<TURTLEGMODELING version="0.99-beta4">
 
 <Modeling type="AVATAR Design" nameTab="Example" >
 <AVATARBlockDiagramPanel name="Block Diagram" minX="10" maxX="1400" minY="10" maxY="900" >
@@ -154,11 +154,11 @@
 </COMPONENT>
 <SUBCOMPONENT type="5000" id="66" >
 <father id="116" num="0" />
-<cdparam x="263" y="233" />
-<sizeparam width="139" height="126" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<cdparam x="36" y="233" />
+<sizeparam width="215" height="126" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
-<cdrectangleparam minX="0" maxX="299" minY="0" maxY="93" />
-<infoparam name="Block0" value="Bob" />
+<cdrectangleparam minX="0" maxX="223" minY="0" maxY="93" />
+<infoparam name="Block0" value="Alice" />
 <TGConnectingPoint num="0" id="42" />
 <TGConnectingPoint num="1" id="43" />
 <TGConnectingPoint num="2" id="44" />
@@ -184,11 +184,11 @@
 <TGConnectingPoint num="22" id="64" />
 <TGConnectingPoint num="23" id="65" />
 <extraparam>
-<CryptoBlock value="false" />
+<CryptoBlock value="true" />
+<Attribute access="0" id="secretData" value="" type="8" typeOther="" />
 <Attribute access="0" id="m" value="" type="5" typeOther="Message" />
-<Attribute access="0" id="m2" value="" type="5" typeOther="Message" />
+<Attribute access="0" id="m1" value="" type="5" typeOther="Message" />
 <Attribute access="0" id="sk" value="" type="5" typeOther="Key" />
-<Attribute access="0" id="receivedData" value="" type="8" typeOther="" />
 <Method value="Message encrypt(Message msg, Key k)" />
 <Method value="Message decrypt(Message msg, Key k)" />
 <Method value="Message sencrypt(Message msg, Key k)" />
@@ -201,15 +201,25 @@
 <Method value="get2(Message msg, Message msg1, Message msg2)" />
 <Method value="get3(Message msg, Message msg1, Message msg2, Message msg3)" />
 <Method value="get4(Message msg, Message msg1, Message msg2, Message msg3, Message msg4)" />
+<Method value="Message aencrypt(Message msg, Key k)" />
+<Method value="Message adecrypt(Message msg, Key k)" />
+<Method value="Key pk(Key k)" />
+<Method value="Message sign(Message msg, Key k)" />
+<Method value="bool verifySign(Message msg1, Message sig, Key k)" />
+<Method value="Message cert(Key k, Message msg)" />
+<Method value="bool verifyCert(Message cert, Key k)" />
+<Method value="Key getpk(Message cert)" />
+<Method value="Key DH(Key pubK, Key privK)" />
+<Method value="Message hash(Message msg)" />
 </extraparam>
 </SUBCOMPONENT>
 <SUBCOMPONENT type="5000" id="91" >
 <father id="116" num="1" />
-<cdparam x="36" y="233" />
-<sizeparam width="215" height="126" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<cdparam x="263" y="233" />
+<sizeparam width="139" height="126" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
-<cdrectangleparam minX="0" maxX="223" minY="0" maxY="93" />
-<infoparam name="Block0" value="Alice" />
+<cdrectangleparam minX="0" maxX="299" minY="0" maxY="93" />
+<infoparam name="Block0" value="Bob" />
 <TGConnectingPoint num="0" id="67" />
 <TGConnectingPoint num="1" id="68" />
 <TGConnectingPoint num="2" id="69" />
@@ -235,11 +245,11 @@
 <TGConnectingPoint num="22" id="89" />
 <TGConnectingPoint num="23" id="90" />
 <extraparam>
-<CryptoBlock value="false" />
-<Attribute access="0" id="secretData" value="" type="8" typeOther="" />
+<CryptoBlock value="true" />
 <Attribute access="0" id="m" value="" type="5" typeOther="Message" />
-<Attribute access="0" id="m1" value="" type="5" typeOther="Message" />
+<Attribute access="0" id="m2" value="" type="5" typeOther="Message" />
 <Attribute access="0" id="sk" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="receivedData" value="" type="8" typeOther="" />
 <Method value="Message encrypt(Message msg, Key k)" />
 <Method value="Message decrypt(Message msg, Key k)" />
 <Method value="Message sencrypt(Message msg, Key k)" />
@@ -252,6 +262,16 @@
 <Method value="get2(Message msg, Message msg1, Message msg2)" />
 <Method value="get3(Message msg, Message msg1, Message msg2, Message msg3)" />
 <Method value="get4(Message msg, Message msg1, Message msg2, Message msg3, Message msg4)" />
+<Method value="Message aencrypt(Message msg, Key k)" />
+<Method value="Message adecrypt(Message msg, Key k)" />
+<Method value="Key pk(Key k)" />
+<Method value="Message sign(Message msg, Key k)" />
+<Method value="bool verifySign(Message msg1, Message sig, Key k)" />
+<Method value="Message cert(Key k, Message msg)" />
+<Method value="bool verifyCert(Message cert, Key k)" />
+<Method value="Key getpk(Message cert)" />
+<Method value="Key DH(Key pubK, Key privK)" />
+<Method value="Message hash(Message msg)" />
 </extraparam>
 </SUBCOMPONENT>
 
@@ -271,19 +291,19 @@
 
 </AVATARStateMachineDiagramPanel>
 
-<AVATARStateMachineDiagramPanel name="Alice" minX="10" maxX="1400" minY="10" maxY="900" >
+<AVATARStateMachineDiagramPanel name="Bob" minX="10" maxX="1400" minY="10" maxY="900" >
 <CONNECTOR type="5102" id="125" >
-<cdparam x="407" y="310" />
-<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
-<infoparam name="connector" value="null" />
+<cdparam x="416" y="379" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector from state0 to state0" value="null" />
 <TGConnectingPoint num="0" id="124" />
-<P1  x="407" y="310" id="196" />
-<P2  x="416" y="356" id="155" />
+<P1  x="416" y="379" id="160" />
+<P2  x="420" y="424" id="196" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR><SUBCOMPONENT type="-1" id="123" >
 <father id="125" num="0" />
-<cdparam x="449" y="353" />
-<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<cdparam x="431" y="403" />
+<sizeparam width="145" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
 <infoparam name="List of all parameters of an Avatar SMD transition" value="" />
@@ -297,21 +317,22 @@
 <afterMax value="" />
 <computeMin value="" />
 <computeMax value="" />
+<actions value="receivedData = m.data" />
 </extraparam>
 </SUBCOMPONENT>
 
 <CONNECTOR type="5102" id="132" >
-<cdparam x="492" y="446" />
-<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
-<infoparam name="connector" value="null" />
+<cdparam x="407" y="273" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector from state0 to state0" value="null" />
 <TGConnectingPoint num="0" id="131" />
-<P1  x="416" y="406" id="160" />
-<P2  x="434" y="446" id="206" />
+<P1  x="407" y="273" id="242" />
+<P2  x="416" y="339" id="155" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR><SUBCOMPONENT type="-1" id="130" >
 <father id="132" num="0" />
-<cdparam x="449" y="440" />
-<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<cdparam x="419" y="312" />
+<sizeparam width="134" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
 <infoparam name="List of all parameters of an Avatar SMD transition" value="" />
@@ -325,20 +346,21 @@
 <afterMax value="" />
 <computeMin value="" />
 <computeMax value="" />
+<actions value="m = sdecrypt(m2, sk)" />
 </extraparam>
 </SUBCOMPONENT>
 
 <CONNECTOR type="5102" id="139" >
-<cdparam x="407" y="251" />
+<cdparam x="406" y="201" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
-<infoparam name="connector from state0 to stop state" value="null" />
+<infoparam name="connector from Send signal to state0" value="null" />
 <TGConnectingPoint num="0" id="138" />
-<P1  x="407" y="251" id="214" />
-<P2  x="407" y="280" id="195" />
+<P1  x="406" y="201" id="278" />
+<P2  x="407" y="233" id="237" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR><SUBCOMPONENT type="-1" id="137" >
 <father id="139" num="0" />
-<cdparam x="407" y="291" />
+<cdparam x="406" y="241" />
 <sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
@@ -357,17 +379,17 @@
 </SUBCOMPONENT>
 
 <CONNECTOR type="5102" id="146" >
-<cdparam x="407" y="132" />
+<cdparam x="406" y="141" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
-<infoparam name="connector from state0 to state0" value="null" />
+<infoparam name="connector from state0 to Send signal" value="null" />
 <TGConnectingPoint num="0" id="145" />
-<P1  x="407" y="132" id="255" />
-<P2  x="407" y="211" id="209" />
+<P1  x="406" y="141" id="294" />
+<P2  x="406" y="171" id="277" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR><SUBCOMPONENT type="-1" id="144" >
 <father id="146" num="0" />
-<cdparam x="415" y="162" />
-<sizeparam width="126" height="30" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<cdparam x="406" y="181" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
 <infoparam name="List of all parameters of an Avatar SMD transition" value="" />
@@ -381,8 +403,6 @@
 <afterMax value="" />
 <computeMin value="" />
 <computeMax value="" />
-<actions value="m.data = secretData" />
-<actions value="m1 = sencrypt(m, sk)" />
 </extraparam>
 </SUBCOMPONENT>
 
@@ -391,8 +411,8 @@
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from start state to state0" value="null" />
 <TGConnectingPoint num="0" id="152" />
-<P1  x="407" y="70" id="290" />
-<P2  x="407" y="92" id="250" />
+<P1  x="407" y="70" id="329" />
+<P2  x="406" y="101" id="289" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR><SUBCOMPONENT type="-1" id="151" >
 <father id="153" num="0" />
@@ -415,11 +435,11 @@
 </SUBCOMPONENT>
 
 <COMPONENT type="5106" id="194" >
-<cdparam x="366" y="356" />
-<sizeparam width="100" height="50" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<cdparam x="327" y="339" />
+<sizeparam width="178" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
-<infoparam name="State" value="beforeFinish" />
+<infoparam name="state0" value="messageDecrypted" />
 <TGConnectingPoint num="0" id="154" />
 <TGConnectingPoint num="1" id="155" />
 <TGConnectingPoint num="2" id="156" />
@@ -464,12 +484,12 @@
 </extraparam>
 </COMPONENT>
 
-<COMPONENT type="5103" id="205" >
-<cdparam x="373" y="285" />
-<sizeparam width="68" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<COMPONENT type="5106" id="235" >
+<cdparam x="350" y="424" />
+<sizeparam width="140" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
-<infoparam name="Send signal" value="chout(m1)" />
+<infoparam name="state0" value="SecretDataReceived" />
 <TGConnectingPoint num="0" id="195" />
 <TGConnectingPoint num="1" id="196" />
 <TGConnectingPoint num="2" id="197" />
@@ -480,207 +500,246 @@
 <TGConnectingPoint num="7" id="202" />
 <TGConnectingPoint num="8" id="203" />
 <TGConnectingPoint num="9" id="204" />
+<TGConnectingPoint num="10" id="205" />
+<TGConnectingPoint num="11" id="206" />
+<TGConnectingPoint num="12" id="207" />
+<TGConnectingPoint num="13" id="208" />
+<TGConnectingPoint num="14" id="209" />
+<TGConnectingPoint num="15" id="210" />
+<TGConnectingPoint num="16" id="211" />
+<TGConnectingPoint num="17" id="212" />
+<TGConnectingPoint num="18" id="213" />
+<TGConnectingPoint num="19" id="214" />
+<TGConnectingPoint num="20" id="215" />
+<TGConnectingPoint num="21" id="216" />
+<TGConnectingPoint num="22" id="217" />
+<TGConnectingPoint num="23" id="218" />
+<TGConnectingPoint num="24" id="219" />
+<TGConnectingPoint num="25" id="220" />
+<TGConnectingPoint num="26" id="221" />
+<TGConnectingPoint num="27" id="222" />
+<TGConnectingPoint num="28" id="223" />
+<TGConnectingPoint num="29" id="224" />
+<TGConnectingPoint num="30" id="225" />
+<TGConnectingPoint num="31" id="226" />
+<TGConnectingPoint num="32" id="227" />
+<TGConnectingPoint num="33" id="228" />
+<TGConnectingPoint num="34" id="229" />
+<TGConnectingPoint num="35" id="230" />
+<TGConnectingPoint num="36" id="231" />
+<TGConnectingPoint num="37" id="232" />
+<TGConnectingPoint num="38" id="233" />
+<TGConnectingPoint num="39" id="234" />
+<extraparam>
+</extraparam>
 </COMPONENT>
 
-<COMPONENT type="5101" id="207" >
-<cdparam x="424" y="451" />
-<sizeparam width="20" height="20" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<COMPONENT type="5106" id="276" >
+<cdparam x="336" y="233" />
+<sizeparam width="142" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
-<infoparam name="stop state" value="null" />
-<TGConnectingPoint num="0" id="206" />
+<infoparam name="state0" value="messageDecrypt" />
+<TGConnectingPoint num="0" id="236" />
+<TGConnectingPoint num="1" id="237" />
+<TGConnectingPoint num="2" id="238" />
+<TGConnectingPoint num="3" id="239" />
+<TGConnectingPoint num="4" id="240" />
+<TGConnectingPoint num="5" id="241" />
+<TGConnectingPoint num="6" id="242" />
+<TGConnectingPoint num="7" id="243" />
+<TGConnectingPoint num="8" id="244" />
+<TGConnectingPoint num="9" id="245" />
+<TGConnectingPoint num="10" id="246" />
+<TGConnectingPoint num="11" id="247" />
+<TGConnectingPoint num="12" id="248" />
+<TGConnectingPoint num="13" id="249" />
+<TGConnectingPoint num="14" id="250" />
+<TGConnectingPoint num="15" id="251" />
+<TGConnectingPoint num="16" id="252" />
+<TGConnectingPoint num="17" id="253" />
+<TGConnectingPoint num="18" id="254" />
+<TGConnectingPoint num="19" id="255" />
+<TGConnectingPoint num="20" id="256" />
+<TGConnectingPoint num="21" id="257" />
+<TGConnectingPoint num="22" id="258" />
+<TGConnectingPoint num="23" id="259" />
+<TGConnectingPoint num="24" id="260" />
+<TGConnectingPoint num="25" id="261" />
+<TGConnectingPoint num="26" id="262" />
+<TGConnectingPoint num="27" id="263" />
+<TGConnectingPoint num="28" id="264" />
+<TGConnectingPoint num="29" id="265" />
+<TGConnectingPoint num="30" id="266" />
+<TGConnectingPoint num="31" id="267" />
+<TGConnectingPoint num="32" id="268" />
+<TGConnectingPoint num="33" id="269" />
+<TGConnectingPoint num="34" id="270" />
+<TGConnectingPoint num="35" id="271" />
+<TGConnectingPoint num="36" id="272" />
+<TGConnectingPoint num="37" id="273" />
+<TGConnectingPoint num="38" id="274" />
+<TGConnectingPoint num="39" id="275" />
+<extraparam>
+</extraparam>
 </COMPONENT>
 
-<COMPONENT type="5106" id="248" >
-<cdparam x="336" y="211" />
-<sizeparam width="143" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<COMPONENT type="5104" id="287" >
+<cdparam x="370" y="176" />
+<sizeparam width="73" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
-<infoparam name="state0" value="sendingMessage" />
-<TGConnectingPoint num="0" id="208" />
-<TGConnectingPoint num="1" id="209" />
-<TGConnectingPoint num="2" id="210" />
-<TGConnectingPoint num="3" id="211" />
-<TGConnectingPoint num="4" id="212" />
-<TGConnectingPoint num="5" id="213" />
-<TGConnectingPoint num="6" id="214" />
-<TGConnectingPoint num="7" id="215" />
-<TGConnectingPoint num="8" id="216" />
-<TGConnectingPoint num="9" id="217" />
-<TGConnectingPoint num="10" id="218" />
-<TGConnectingPoint num="11" id="219" />
-<TGConnectingPoint num="12" id="220" />
-<TGConnectingPoint num="13" id="221" />
-<TGConnectingPoint num="14" id="222" />
-<TGConnectingPoint num="15" id="223" />
-<TGConnectingPoint num="16" id="224" />
-<TGConnectingPoint num="17" id="225" />
-<TGConnectingPoint num="18" id="226" />
-<TGConnectingPoint num="19" id="227" />
-<TGConnectingPoint num="20" id="228" />
-<TGConnectingPoint num="21" id="229" />
-<TGConnectingPoint num="22" id="230" />
-<TGConnectingPoint num="23" id="231" />
-<TGConnectingPoint num="24" id="232" />
-<TGConnectingPoint num="25" id="233" />
-<TGConnectingPoint num="26" id="234" />
-<TGConnectingPoint num="27" id="235" />
-<TGConnectingPoint num="28" id="236" />
-<TGConnectingPoint num="29" id="237" />
-<TGConnectingPoint num="30" id="238" />
-<TGConnectingPoint num="31" id="239" />
-<TGConnectingPoint num="32" id="240" />
-<TGConnectingPoint num="33" id="241" />
-<TGConnectingPoint num="34" id="242" />
-<TGConnectingPoint num="35" id="243" />
-<TGConnectingPoint num="36" id="244" />
-<TGConnectingPoint num="37" id="245" />
-<TGConnectingPoint num="38" id="246" />
-<TGConnectingPoint num="39" id="247" />
-<extraparam>
-</extraparam>
-</COMPONENT>
-
-<COMPONENT type="5106" id="289" >
-<cdparam x="340" y="92" />
-<sizeparam width="134" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="Send signal" value="chin(m2)" />
+<TGConnectingPoint num="0" id="277" />
+<TGConnectingPoint num="1" id="278" />
+<TGConnectingPoint num="2" id="279" />
+<TGConnectingPoint num="3" id="280" />
+<TGConnectingPoint num="4" id="281" />
+<TGConnectingPoint num="5" id="282" />
+<TGConnectingPoint num="6" id="283" />
+<TGConnectingPoint num="7" id="284" />
+<TGConnectingPoint num="8" id="285" />
+<TGConnectingPoint num="9" id="286" />
+</COMPONENT>
+
+<COMPONENT type="5106" id="328" >
+<cdparam x="340" y="101" />
+<sizeparam width="132" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
-<infoparam name="state0" value="makingMessage" />
-<TGConnectingPoint num="0" id="249" />
-<TGConnectingPoint num="1" id="250" />
-<TGConnectingPoint num="2" id="251" />
-<TGConnectingPoint num="3" id="252" />
-<TGConnectingPoint num="4" id="253" />
-<TGConnectingPoint num="5" id="254" />
-<TGConnectingPoint num="6" id="255" />
-<TGConnectingPoint num="7" id="256" />
-<TGConnectingPoint num="8" id="257" />
-<TGConnectingPoint num="9" id="258" />
-<TGConnectingPoint num="10" id="259" />
-<TGConnectingPoint num="11" id="260" />
-<TGConnectingPoint num="12" id="261" />
-<TGConnectingPoint num="13" id="262" />
-<TGConnectingPoint num="14" id="263" />
-<TGConnectingPoint num="15" id="264" />
-<TGConnectingPoint num="16" id="265" />
-<TGConnectingPoint num="17" id="266" />
-<TGConnectingPoint num="18" id="267" />
-<TGConnectingPoint num="19" id="268" />
-<TGConnectingPoint num="20" id="269" />
-<TGConnectingPoint num="21" id="270" />
-<TGConnectingPoint num="22" id="271" />
-<TGConnectingPoint num="23" id="272" />
-<TGConnectingPoint num="24" id="273" />
-<TGConnectingPoint num="25" id="274" />
-<TGConnectingPoint num="26" id="275" />
-<TGConnectingPoint num="27" id="276" />
-<TGConnectingPoint num="28" id="277" />
-<TGConnectingPoint num="29" id="278" />
-<TGConnectingPoint num="30" id="279" />
-<TGConnectingPoint num="31" id="280" />
-<TGConnectingPoint num="32" id="281" />
-<TGConnectingPoint num="33" id="282" />
-<TGConnectingPoint num="34" id="283" />
-<TGConnectingPoint num="35" id="284" />
-<TGConnectingPoint num="36" id="285" />
-<TGConnectingPoint num="37" id="286" />
-<TGConnectingPoint num="38" id="287" />
-<TGConnectingPoint num="39" id="288" />
-<extraparam>
-</extraparam>
-</COMPONENT>
-
-<COMPONENT type="5100" id="291" >
+<infoparam name="state0" value="waitingForMessage" />
+<TGConnectingPoint num="0" id="288" />
+<TGConnectingPoint num="1" id="289" />
+<TGConnectingPoint num="2" id="290" />
+<TGConnectingPoint num="3" id="291" />
+<TGConnectingPoint num="4" id="292" />
+<TGConnectingPoint num="5" id="293" />
+<TGConnectingPoint num="6" id="294" />
+<TGConnectingPoint num="7" id="295" />
+<TGConnectingPoint num="8" id="296" />
+<TGConnectingPoint num="9" id="297" />
+<TGConnectingPoint num="10" id="298" />
+<TGConnectingPoint num="11" id="299" />
+<TGConnectingPoint num="12" id="300" />
+<TGConnectingPoint num="13" id="301" />
+<TGConnectingPoint num="14" id="302" />
+<TGConnectingPoint num="15" id="303" />
+<TGConnectingPoint num="16" id="304" />
+<TGConnectingPoint num="17" id="305" />
+<TGConnectingPoint num="18" id="306" />
+<TGConnectingPoint num="19" id="307" />
+<TGConnectingPoint num="20" id="308" />
+<TGConnectingPoint num="21" id="309" />
+<TGConnectingPoint num="22" id="310" />
+<TGConnectingPoint num="23" id="311" />
+<TGConnectingPoint num="24" id="312" />
+<TGConnectingPoint num="25" id="313" />
+<TGConnectingPoint num="26" id="314" />
+<TGConnectingPoint num="27" id="315" />
+<TGConnectingPoint num="28" id="316" />
+<TGConnectingPoint num="29" id="317" />
+<TGConnectingPoint num="30" id="318" />
+<TGConnectingPoint num="31" id="319" />
+<TGConnectingPoint num="32" id="320" />
+<TGConnectingPoint num="33" id="321" />
+<TGConnectingPoint num="34" id="322" />
+<TGConnectingPoint num="35" id="323" />
+<TGConnectingPoint num="36" id="324" />
+<TGConnectingPoint num="37" id="325" />
+<TGConnectingPoint num="38" id="326" />
+<TGConnectingPoint num="39" id="327" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5100" id="330" >
 <cdparam x="400" y="50" />
 <sizeparam width="15" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
 <infoparam name="start state" value="null" />
-<TGConnectingPoint num="0" id="290" />
+<TGConnectingPoint num="0" id="329" />
 </COMPONENT>
 
 
 </AVATARStateMachineDiagramPanel>
 
-<AVATARStateMachineDiagramPanel name="Bob" minX="10" maxX="1400" minY="10" maxY="900" >
-<CONNECTOR type="5102" id="298" >
-<cdparam x="416" y="379" />
-<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
-<infoparam name="connector from state0 to state0" value="null" />
-<TGConnectingPoint num="0" id="297" />
-<P1  x="416" y="379" id="333" />
-<P2  x="420" y="424" id="369" />
+<AVATARStateMachineDiagramPanel name="Alice" minX="10" maxX="1400" minY="10" maxY="900" >
+<CONNECTOR type="5102" id="337" >
+<cdparam x="407" y="310" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="336" />
+<P1  x="407" y="310" id="408" />
+<P2  x="416" y="356" id="367" />
 <AutomaticDrawing  data="true" />
-</CONNECTOR><SUBCOMPONENT type="-1" id="296" >
-<father id="298" num="0" />
-<cdparam x="431" y="403" />
-<sizeparam width="135" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="335" >
+<father id="337" num="0" />
+<cdparam x="449" y="353" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
 <infoparam name="List of all parameters of an Avatar SMD transition" value="" />
-<TGConnectingPoint num="0" id="292" />
-<TGConnectingPoint num="1" id="293" />
-<TGConnectingPoint num="2" id="294" />
-<TGConnectingPoint num="3" id="295" />
+<TGConnectingPoint num="0" id="331" />
+<TGConnectingPoint num="1" id="332" />
+<TGConnectingPoint num="2" id="333" />
+<TGConnectingPoint num="3" id="334" />
 <extraparam>
 <guard value="[ ]" />
 <afterMin value="" />
 <afterMax value="" />
 <computeMin value="" />
 <computeMax value="" />
-<actions value="receivedData = m.data" />
 </extraparam>
 </SUBCOMPONENT>
 
-<CONNECTOR type="5102" id="305" >
-<cdparam x="407" y="273" />
-<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
-<infoparam name="connector from state0 to state0" value="null" />
-<TGConnectingPoint num="0" id="304" />
-<P1  x="407" y="273" id="415" />
-<P2  x="416" y="339" id="328" />
+<CONNECTOR type="5102" id="344" >
+<cdparam x="492" y="446" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="343" />
+<P1  x="416" y="406" id="372" />
+<P2  x="434" y="446" id="418" />
 <AutomaticDrawing  data="true" />
-</CONNECTOR><SUBCOMPONENT type="-1" id="303" >
-<father id="305" num="0" />
-<cdparam x="419" y="312" />
-<sizeparam width="127" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="342" >
+<father id="344" num="0" />
+<cdparam x="449" y="440" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
 <infoparam name="List of all parameters of an Avatar SMD transition" value="" />
-<TGConnectingPoint num="0" id="299" />
-<TGConnectingPoint num="1" id="300" />
-<TGConnectingPoint num="2" id="301" />
-<TGConnectingPoint num="3" id="302" />
+<TGConnectingPoint num="0" id="338" />
+<TGConnectingPoint num="1" id="339" />
+<TGConnectingPoint num="2" id="340" />
+<TGConnectingPoint num="3" id="341" />
 <extraparam>
 <guard value="[ ]" />
 <afterMin value="" />
 <afterMax value="" />
 <computeMin value="" />
 <computeMax value="" />
-<actions value="m = sdecrypt(m2, sk)" />
 </extraparam>
 </SUBCOMPONENT>
 
-<CONNECTOR type="5102" id="312" >
-<cdparam x="406" y="201" />
+<CONNECTOR type="5102" id="351" >
+<cdparam x="407" y="251" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
-<infoparam name="connector from Send signal to state0" value="null" />
-<TGConnectingPoint num="0" id="311" />
-<P1  x="406" y="201" id="451" />
-<P2  x="407" y="233" id="410" />
+<infoparam name="connector from state0 to stop state" value="null" />
+<TGConnectingPoint num="0" id="350" />
+<P1  x="407" y="251" id="426" />
+<P2  x="407" y="280" id="407" />
 <AutomaticDrawing  data="true" />
-</CONNECTOR><SUBCOMPONENT type="-1" id="310" >
-<father id="312" num="0" />
-<cdparam x="406" y="241" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="349" >
+<father id="351" num="0" />
+<cdparam x="407" y="291" />
 <sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
 <infoparam name="List of all parameters of an Avatar SMD transition" value="" />
-<TGConnectingPoint num="0" id="306" />
-<TGConnectingPoint num="1" id="307" />
-<TGConnectingPoint num="2" id="308" />
-<TGConnectingPoint num="3" id="309" />
+<TGConnectingPoint num="0" id="345" />
+<TGConnectingPoint num="1" id="346" />
+<TGConnectingPoint num="2" id="347" />
+<TGConnectingPoint num="3" id="348" />
 <extraparam>
 <guard value="[ ]" />
 <afterMin value="" />
@@ -690,53 +749,55 @@
 </extraparam>
 </SUBCOMPONENT>
 
-<CONNECTOR type="5102" id="319" >
-<cdparam x="406" y="141" />
+<CONNECTOR type="5102" id="358" >
+<cdparam x="407" y="132" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
-<infoparam name="connector from state0 to Send signal" value="null" />
-<TGConnectingPoint num="0" id="318" />
-<P1  x="406" y="141" id="467" />
-<P2  x="406" y="171" id="450" />
+<infoparam name="connector from state0 to state0" value="null" />
+<TGConnectingPoint num="0" id="357" />
+<P1  x="407" y="132" id="467" />
+<P2  x="407" y="211" id="421" />
 <AutomaticDrawing  data="true" />
-</CONNECTOR><SUBCOMPONENT type="-1" id="317" >
-<father id="319" num="0" />
-<cdparam x="406" y="181" />
-<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="356" >
+<father id="358" num="0" />
+<cdparam x="415" y="162" />
+<sizeparam width="134" height="30" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
 <infoparam name="List of all parameters of an Avatar SMD transition" value="" />
-<TGConnectingPoint num="0" id="313" />
-<TGConnectingPoint num="1" id="314" />
-<TGConnectingPoint num="2" id="315" />
-<TGConnectingPoint num="3" id="316" />
+<TGConnectingPoint num="0" id="352" />
+<TGConnectingPoint num="1" id="353" />
+<TGConnectingPoint num="2" id="354" />
+<TGConnectingPoint num="3" id="355" />
 <extraparam>
 <guard value="[ ]" />
 <afterMin value="" />
 <afterMax value="" />
 <computeMin value="" />
 <computeMax value="" />
+<actions value="m.data = secretData" />
+<actions value="m1 = sencrypt(m, sk)" />
 </extraparam>
 </SUBCOMPONENT>
 
-<CONNECTOR type="5102" id="326" >
+<CONNECTOR type="5102" id="365" >
 <cdparam x="407" y="70" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from start state to state0" value="null" />
-<TGConnectingPoint num="0" id="325" />
+<TGConnectingPoint num="0" id="364" />
 <P1  x="407" y="70" id="502" />
-<P2  x="406" y="101" id="462" />
+<P2  x="407" y="92" id="462" />
 <AutomaticDrawing  data="true" />
-</CONNECTOR><SUBCOMPONENT type="-1" id="324" >
-<father id="326" num="0" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="363" >
+<father id="365" num="0" />
 <cdparam x="407" y="110" />
 <sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
 <infoparam name="List of all parameters of an Avatar SMD transition" value="" />
-<TGConnectingPoint num="0" id="320" />
-<TGConnectingPoint num="1" id="321" />
-<TGConnectingPoint num="2" id="322" />
-<TGConnectingPoint num="3" id="323" />
+<TGConnectingPoint num="0" id="359" />
+<TGConnectingPoint num="1" id="360" />
+<TGConnectingPoint num="2" id="361" />
+<TGConnectingPoint num="3" id="362" />
 <extraparam>
 <guard value="[ ]" />
 <afterMin value="" />
@@ -746,180 +807,139 @@
 </extraparam>
 </SUBCOMPONENT>
 
-<COMPONENT type="5106" id="367" >
-<cdparam x="327" y="339" />
-<sizeparam width="178" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<COMPONENT type="5106" id="406" >
+<cdparam x="366" y="356" />
+<sizeparam width="100" height="50" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
-<infoparam name="state0" value="messageDecrypted" />
-<TGConnectingPoint num="0" id="327" />
-<TGConnectingPoint num="1" id="328" />
-<TGConnectingPoint num="2" id="329" />
-<TGConnectingPoint num="3" id="330" />
-<TGConnectingPoint num="4" id="331" />
-<TGConnectingPoint num="5" id="332" />
-<TGConnectingPoint num="6" id="333" />
-<TGConnectingPoint num="7" id="334" />
-<TGConnectingPoint num="8" id="335" />
-<TGConnectingPoint num="9" id="336" />
-<TGConnectingPoint num="10" id="337" />
-<TGConnectingPoint num="11" id="338" />
-<TGConnectingPoint num="12" id="339" />
-<TGConnectingPoint num="13" id="340" />
-<TGConnectingPoint num="14" id="341" />
-<TGConnectingPoint num="15" id="342" />
-<TGConnectingPoint num="16" id="343" />
-<TGConnectingPoint num="17" id="344" />
-<TGConnectingPoint num="18" id="345" />
-<TGConnectingPoint num="19" id="346" />
-<TGConnectingPoint num="20" id="347" />
-<TGConnectingPoint num="21" id="348" />
-<TGConnectingPoint num="22" id="349" />
-<TGConnectingPoint num="23" id="350" />
-<TGConnectingPoint num="24" id="351" />
-<TGConnectingPoint num="25" id="352" />
-<TGConnectingPoint num="26" id="353" />
-<TGConnectingPoint num="27" id="354" />
-<TGConnectingPoint num="28" id="355" />
-<TGConnectingPoint num="29" id="356" />
-<TGConnectingPoint num="30" id="357" />
-<TGConnectingPoint num="31" id="358" />
-<TGConnectingPoint num="32" id="359" />
-<TGConnectingPoint num="33" id="360" />
-<TGConnectingPoint num="34" id="361" />
-<TGConnectingPoint num="35" id="362" />
-<TGConnectingPoint num="36" id="363" />
-<TGConnectingPoint num="37" id="364" />
-<TGConnectingPoint num="38" id="365" />
-<TGConnectingPoint num="39" id="366" />
-<extraparam>
-</extraparam>
-</COMPONENT>
-
-<COMPONENT type="5106" id="408" >
-<cdparam x="350" y="424" />
-<sizeparam width="140" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="State" value="beforeFinish" />
+<TGConnectingPoint num="0" id="366" />
+<TGConnectingPoint num="1" id="367" />
+<TGConnectingPoint num="2" id="368" />
+<TGConnectingPoint num="3" id="369" />
+<TGConnectingPoint num="4" id="370" />
+<TGConnectingPoint num="5" id="371" />
+<TGConnectingPoint num="6" id="372" />
+<TGConnectingPoint num="7" id="373" />
+<TGConnectingPoint num="8" id="374" />
+<TGConnectingPoint num="9" id="375" />
+<TGConnectingPoint num="10" id="376" />
+<TGConnectingPoint num="11" id="377" />
+<TGConnectingPoint num="12" id="378" />
+<TGConnectingPoint num="13" id="379" />
+<TGConnectingPoint num="14" id="380" />
+<TGConnectingPoint num="15" id="381" />
+<TGConnectingPoint num="16" id="382" />
+<TGConnectingPoint num="17" id="383" />
+<TGConnectingPoint num="18" id="384" />
+<TGConnectingPoint num="19" id="385" />
+<TGConnectingPoint num="20" id="386" />
+<TGConnectingPoint num="21" id="387" />
+<TGConnectingPoint num="22" id="388" />
+<TGConnectingPoint num="23" id="389" />
+<TGConnectingPoint num="24" id="390" />
+<TGConnectingPoint num="25" id="391" />
+<TGConnectingPoint num="26" id="392" />
+<TGConnectingPoint num="27" id="393" />
+<TGConnectingPoint num="28" id="394" />
+<TGConnectingPoint num="29" id="395" />
+<TGConnectingPoint num="30" id="396" />
+<TGConnectingPoint num="31" id="397" />
+<TGConnectingPoint num="32" id="398" />
+<TGConnectingPoint num="33" id="399" />
+<TGConnectingPoint num="34" id="400" />
+<TGConnectingPoint num="35" id="401" />
+<TGConnectingPoint num="36" id="402" />
+<TGConnectingPoint num="37" id="403" />
+<TGConnectingPoint num="38" id="404" />
+<TGConnectingPoint num="39" id="405" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5103" id="417" >
+<cdparam x="370" y="285" />
+<sizeparam width="75" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
-<infoparam name="state0" value="SecretDataReceived" />
-<TGConnectingPoint num="0" id="368" />
-<TGConnectingPoint num="1" id="369" />
-<TGConnectingPoint num="2" id="370" />
-<TGConnectingPoint num="3" id="371" />
-<TGConnectingPoint num="4" id="372" />
-<TGConnectingPoint num="5" id="373" />
-<TGConnectingPoint num="6" id="374" />
-<TGConnectingPoint num="7" id="375" />
-<TGConnectingPoint num="8" id="376" />
-<TGConnectingPoint num="9" id="377" />
-<TGConnectingPoint num="10" id="378" />
-<TGConnectingPoint num="11" id="379" />
-<TGConnectingPoint num="12" id="380" />
-<TGConnectingPoint num="13" id="381" />
-<TGConnectingPoint num="14" id="382" />
-<TGConnectingPoint num="15" id="383" />
-<TGConnectingPoint num="16" id="384" />
-<TGConnectingPoint num="17" id="385" />
-<TGConnectingPoint num="18" id="386" />
-<TGConnectingPoint num="19" id="387" />
-<TGConnectingPoint num="20" id="388" />
-<TGConnectingPoint num="21" id="389" />
-<TGConnectingPoint num="22" id="390" />
-<TGConnectingPoint num="23" id="391" />
-<TGConnectingPoint num="24" id="392" />
-<TGConnectingPoint num="25" id="393" />
-<TGConnectingPoint num="26" id="394" />
-<TGConnectingPoint num="27" id="395" />
-<TGConnectingPoint num="28" id="396" />
-<TGConnectingPoint num="29" id="397" />
-<TGConnectingPoint num="30" id="398" />
-<TGConnectingPoint num="31" id="399" />
-<TGConnectingPoint num="32" id="400" />
-<TGConnectingPoint num="33" id="401" />
-<TGConnectingPoint num="34" id="402" />
-<TGConnectingPoint num="35" id="403" />
-<TGConnectingPoint num="36" id="404" />
-<TGConnectingPoint num="37" id="405" />
-<TGConnectingPoint num="38" id="406" />
-<TGConnectingPoint num="39" id="407" />
-<extraparam>
-</extraparam>
-</COMPONENT>
-
-<COMPONENT type="5106" id="449" >
-<cdparam x="336" y="233" />
-<sizeparam width="142" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="Send signal" value="chout(m1)" />
+<TGConnectingPoint num="0" id="407" />
+<TGConnectingPoint num="1" id="408" />
+<TGConnectingPoint num="2" id="409" />
+<TGConnectingPoint num="3" id="410" />
+<TGConnectingPoint num="4" id="411" />
+<TGConnectingPoint num="5" id="412" />
+<TGConnectingPoint num="6" id="413" />
+<TGConnectingPoint num="7" id="414" />
+<TGConnectingPoint num="8" id="415" />
+<TGConnectingPoint num="9" id="416" />
+</COMPONENT>
+
+<COMPONENT type="5101" id="419" >
+<cdparam x="424" y="451" />
+<sizeparam width="20" height="20" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
-<infoparam name="state0" value="messageDecrypt" />
-<TGConnectingPoint num="0" id="409" />
-<TGConnectingPoint num="1" id="410" />
-<TGConnectingPoint num="2" id="411" />
-<TGConnectingPoint num="3" id="412" />
-<TGConnectingPoint num="4" id="413" />
-<TGConnectingPoint num="5" id="414" />
-<TGConnectingPoint num="6" id="415" />
-<TGConnectingPoint num="7" id="416" />
-<TGConnectingPoint num="8" id="417" />
-<TGConnectingPoint num="9" id="418" />
-<TGConnectingPoint num="10" id="419" />
-<TGConnectingPoint num="11" id="420" />
-<TGConnectingPoint num="12" id="421" />
-<TGConnectingPoint num="13" id="422" />
-<TGConnectingPoint num="14" id="423" />
-<TGConnectingPoint num="15" id="424" />
-<TGConnectingPoint num="16" id="425" />
-<TGConnectingPoint num="17" id="426" />
-<TGConnectingPoint num="18" id="427" />
-<TGConnectingPoint num="19" id="428" />
-<TGConnectingPoint num="20" id="429" />
-<TGConnectingPoint num="21" id="430" />
-<TGConnectingPoint num="22" id="431" />
-<TGConnectingPoint num="23" id="432" />
-<TGConnectingPoint num="24" id="433" />
-<TGConnectingPoint num="25" id="434" />
-<TGConnectingPoint num="26" id="435" />
-<TGConnectingPoint num="27" id="436" />
-<TGConnectingPoint num="28" id="437" />
-<TGConnectingPoint num="29" id="438" />
-<TGConnectingPoint num="30" id="439" />
-<TGConnectingPoint num="31" id="440" />
-<TGConnectingPoint num="32" id="441" />
-<TGConnectingPoint num="33" id="442" />
-<TGConnectingPoint num="34" id="443" />
-<TGConnectingPoint num="35" id="444" />
-<TGConnectingPoint num="36" id="445" />
-<TGConnectingPoint num="37" id="446" />
-<TGConnectingPoint num="38" id="447" />
-<TGConnectingPoint num="39" id="448" />
-<extraparam>
-</extraparam>
-</COMPONENT>
-
-<COMPONENT type="5104" id="460" >
-<cdparam x="372" y="176" />
-<sizeparam width="68" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="stop state" value="null" />
+<TGConnectingPoint num="0" id="418" />
+</COMPONENT>
+
+<COMPONENT type="5106" id="460" >
+<cdparam x="336" y="211" />
+<sizeparam width="143" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
-<infoparam name="Send signal" value="chin(m2)" />
-<TGConnectingPoint num="0" id="450" />
-<TGConnectingPoint num="1" id="451" />
-<TGConnectingPoint num="2" id="452" />
-<TGConnectingPoint num="3" id="453" />
-<TGConnectingPoint num="4" id="454" />
-<TGConnectingPoint num="5" id="455" />
-<TGConnectingPoint num="6" id="456" />
-<TGConnectingPoint num="7" id="457" />
-<TGConnectingPoint num="8" id="458" />
-<TGConnectingPoint num="9" id="459" />
+<infoparam name="state0" value="sendingMessage" />
+<TGConnectingPoint num="0" id="420" />
+<TGConnectingPoint num="1" id="421" />
+<TGConnectingPoint num="2" id="422" />
+<TGConnectingPoint num="3" id="423" />
+<TGConnectingPoint num="4" id="424" />
+<TGConnectingPoint num="5" id="425" />
+<TGConnectingPoint num="6" id="426" />
+<TGConnectingPoint num="7" id="427" />
+<TGConnectingPoint num="8" id="428" />
+<TGConnectingPoint num="9" id="429" />
+<TGConnectingPoint num="10" id="430" />
+<TGConnectingPoint num="11" id="431" />
+<TGConnectingPoint num="12" id="432" />
+<TGConnectingPoint num="13" id="433" />
+<TGConnectingPoint num="14" id="434" />
+<TGConnectingPoint num="15" id="435" />
+<TGConnectingPoint num="16" id="436" />
+<TGConnectingPoint num="17" id="437" />
+<TGConnectingPoint num="18" id="438" />
+<TGConnectingPoint num="19" id="439" />
+<TGConnectingPoint num="20" id="440" />
+<TGConnectingPoint num="21" id="441" />
+<TGConnectingPoint num="22" id="442" />
+<TGConnectingPoint num="23" id="443" />
+<TGConnectingPoint num="24" id="444" />
+<TGConnectingPoint num="25" id="445" />
+<TGConnectingPoint num="26" id="446" />
+<TGConnectingPoint num="27" id="447" />
+<TGConnectingPoint num="28" id="448" />
+<TGConnectingPoint num="29" id="449" />
+<TGConnectingPoint num="30" id="450" />
+<TGConnectingPoint num="31" id="451" />
+<TGConnectingPoint num="32" id="452" />
+<TGConnectingPoint num="33" id="453" />
+<TGConnectingPoint num="34" id="454" />
+<TGConnectingPoint num="35" id="455" />
+<TGConnectingPoint num="36" id="456" />
+<TGConnectingPoint num="37" id="457" />
+<TGConnectingPoint num="38" id="458" />
+<TGConnectingPoint num="39" id="459" />
+<extraparam>
+</extraparam>
 </COMPONENT>
 
 <COMPONENT type="5106" id="501" >
-<cdparam x="340" y="101" />
-<sizeparam width="132" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<cdparam x="340" y="92" />
+<sizeparam width="134" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
-<infoparam name="state0" value="waitingForMessage" />
+<infoparam name="state0" value="makingMessage" />
 <TGConnectingPoint num="0" id="461" />
 <TGConnectingPoint num="1" id="462" />
 <TGConnectingPoint num="2" id="463" />
@@ -981,4 +1001,3632 @@
 
 
 
+<Modeling type="AVATAR Design" nameTab="Example DH" >
+<AVATARBlockDiagramPanel name="Block Diagram" minX="10" maxX="1400" minY="10" maxY="900" >
+<MainCode value="void __user_init() {"/>
+<MainCode value="}"/>
+<Optimized value="true" />
+<Validated value="" />
+<Ignored value="" />
+
+<CONNECTOR type="5002" id="509" >
+<cdparam x="568" y="220" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector from Block0 to Block0" value="" />
+<TGConnectingPoint num="0" id="506" />
+<TGConnectingPoint num="1" id="507" />
+<TGConnectingPoint num="2" id="508" />
+<P1  x="459" y="199" id="606" />
+<P2  x="459" y="254" id="599" />
+<Point x="490" y="199" />
+<Point x="490" y="254" />
+<AutomaticDrawing  data="true" />
+<extraparam>
+<iso value="in chin(Message msg)" />
+<osd value="out chout(Message msg)" />
+<FIFOType asynchronous="false" size="1" blocking="false" private="false" broadcast="false" lossy="false" />
+</extraparam>
+</CONNECTOR><SUBCOMPONENT type="-1" id="504" >
+<father id="509" num="0" />
+<cdparam x="490" y="199" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="point " value="null" />
+</SUBCOMPONENT>
+<SUBCOMPONENT type="-1" id="505" >
+<father id="509" num="1" />
+<cdparam x="490" y="254" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="point " value="null" />
+</SUBCOMPONENT>
+
+<COMPONENT type="302" id="526" >
+<cdparam x="517" y="154" />
+<sizeparam width="455" height="110" minWidth="80" minHeight="10" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="Proverif Pragma" value="#PrivatePublicKeys Alice privK pubK
+#PrivatePublicKeys Bob privK pubK
+
+#Confidentiality Alice.secretData
+#Authenticity Alice.sendingMessage.m Bob.messageDecrypted.m
+" />
+<TGConnectingPoint num="0" id="510" />
+<TGConnectingPoint num="1" id="511" />
+<TGConnectingPoint num="2" id="512" />
+<TGConnectingPoint num="3" id="513" />
+<TGConnectingPoint num="4" id="514" />
+<TGConnectingPoint num="5" id="515" />
+<TGConnectingPoint num="6" id="516" />
+<TGConnectingPoint num="7" id="517" />
+<TGConnectingPoint num="8" id="518" />
+<TGConnectingPoint num="9" id="519" />
+<TGConnectingPoint num="10" id="520" />
+<TGConnectingPoint num="11" id="521" />
+<TGConnectingPoint num="12" id="522" />
+<TGConnectingPoint num="13" id="523" />
+<TGConnectingPoint num="14" id="524" />
+<TGConnectingPoint num="15" id="525" />
+<extraparam>
+<Line value="#PrivatePublicKeys Alice privK pubK" />
+<Line value="#PrivatePublicKeys Bob privK pubK" />
+<Line value="" />
+<Line value="#Confidentiality Alice.secretData" />
+<Line value="#Authenticity Alice.sendingMessage.m Bob.messageDecrypted.m" />
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5003" id="535" >
+<cdparam x="260" y="373" />
+<sizeparam width="129" height="61" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="DataType0" value="Message" />
+<TGConnectingPoint num="0" id="527" />
+<TGConnectingPoint num="1" id="528" />
+<TGConnectingPoint num="2" id="529" />
+<TGConnectingPoint num="3" id="530" />
+<TGConnectingPoint num="4" id="531" />
+<TGConnectingPoint num="5" id="532" />
+<TGConnectingPoint num="6" id="533" />
+<TGConnectingPoint num="7" id="534" />
+<extraparam>
+<Attribute access="0" id="data" value="" type="8" typeOther="" />
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5003" id="544" >
+<cdparam x="68" y="372" />
+<sizeparam width="123" height="62" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="DataType0" value="Key" />
+<TGConnectingPoint num="0" id="536" />
+<TGConnectingPoint num="1" id="537" />
+<TGConnectingPoint num="2" id="538" />
+<TGConnectingPoint num="3" id="539" />
+<TGConnectingPoint num="4" id="540" />
+<TGConnectingPoint num="5" id="541" />
+<TGConnectingPoint num="6" id="542" />
+<TGConnectingPoint num="7" id="543" />
+<extraparam>
+<Attribute access="0" id="data" value="" type="8" typeOther="" />
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5000" id="619" >
+<cdparam x="21" y="145" />
+<sizeparam width="438" height="219" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="Block0" value="System" />
+<TGConnectingPoint num="0" id="595" />
+<TGConnectingPoint num="1" id="596" />
+<TGConnectingPoint num="2" id="597" />
+<TGConnectingPoint num="3" id="598" />
+<TGConnectingPoint num="4" id="599" />
+<TGConnectingPoint num="5" id="600" />
+<TGConnectingPoint num="6" id="601" />
+<TGConnectingPoint num="7" id="602" />
+<TGConnectingPoint num="8" id="603" />
+<TGConnectingPoint num="9" id="604" />
+<TGConnectingPoint num="10" id="605" />
+<TGConnectingPoint num="11" id="606" />
+<TGConnectingPoint num="12" id="607" />
+<TGConnectingPoint num="13" id="608" />
+<TGConnectingPoint num="14" id="609" />
+<TGConnectingPoint num="15" id="610" />
+<TGConnectingPoint num="16" id="611" />
+<TGConnectingPoint num="17" id="612" />
+<TGConnectingPoint num="18" id="613" />
+<TGConnectingPoint num="19" id="614" />
+<TGConnectingPoint num="20" id="615" />
+<TGConnectingPoint num="21" id="616" />
+<TGConnectingPoint num="22" id="617" />
+<TGConnectingPoint num="23" id="618" />
+<extraparam>
+<CryptoBlock value="false" />
+<Signal value="in chin(Message msg)" attached="true" />
+<Signal value="out chout(Message msg)" attached="true" />
+</extraparam>
+</COMPONENT>
+<SUBCOMPONENT type="5000" id="569" >
+<father id="619" num="0" />
+<cdparam x="263" y="233" />
+<sizeparam width="139" height="126" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="0" maxX="299" minY="0" maxY="93" />
+<infoparam name="Block0" value="Bob" />
+<TGConnectingPoint num="0" id="545" />
+<TGConnectingPoint num="1" id="546" />
+<TGConnectingPoint num="2" id="547" />
+<TGConnectingPoint num="3" id="548" />
+<TGConnectingPoint num="4" id="549" />
+<TGConnectingPoint num="5" id="550" />
+<TGConnectingPoint num="6" id="551" />
+<TGConnectingPoint num="7" id="552" />
+<TGConnectingPoint num="8" id="553" />
+<TGConnectingPoint num="9" id="554" />
+<TGConnectingPoint num="10" id="555" />
+<TGConnectingPoint num="11" id="556" />
+<TGConnectingPoint num="12" id="557" />
+<TGConnectingPoint num="13" id="558" />
+<TGConnectingPoint num="14" id="559" />
+<TGConnectingPoint num="15" id="560" />
+<TGConnectingPoint num="16" id="561" />
+<TGConnectingPoint num="17" id="562" />
+<TGConnectingPoint num="18" id="563" />
+<TGConnectingPoint num="19" id="564" />
+<TGConnectingPoint num="20" id="565" />
+<TGConnectingPoint num="21" id="566" />
+<TGConnectingPoint num="22" id="567" />
+<TGConnectingPoint num="23" id="568" />
+<extraparam>
+<CryptoBlock value="true" />
+<Attribute access="0" id="m" value="" type="5" typeOther="Message" />
+<Attribute access="0" id="m2" value="" type="5" typeOther="Message" />
+<Attribute access="0" id="sk" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="receivedData" value="" type="8" typeOther="" />
+<Attribute access="0" id="privK" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="pubK" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="alicePubK" value="" type="5" typeOther="Key" />
+<Method value="Message encrypt(Message msg, Key k)" />
+<Method value="Message decrypt(Message msg, Key k)" />
+<Method value="Message sencrypt(Message msg, Key k)" />
+<Method value="Message sdecrypt(Message msg, Key k)" />
+<Method value="Message MAC(Message msg, Key k)" />
+<Method value="bool verifyMAC(Message msg, Key k, Message macmsg)" />
+<Method value="Message concat2(Message msg1, Message msg2)" />
+<Method value="Message concat3(Message msg1, Message msg2, Message msg3)" />
+<Method value="Message concat4(Message msg1, Message msg2, Message msg3, Message msg4)" />
+<Method value="get2(Message msg, Message msg1, Message msg2)" />
+<Method value="get3(Message msg, Message msg1, Message msg2, Message msg3)" />
+<Method value="get4(Message msg, Message msg1, Message msg2, Message msg3, Message msg4)" />
+<Method value="Message aencrypt(Message msg, Key k)" />
+<Method value="Message adecrypt(Message msg, Key k)" />
+<Method value="Key pk(Key k)" />
+<Method value="Message sign(Message msg, Key k)" />
+<Method value="bool verifySign(Message msg1, Message sig, Key k)" />
+<Method value="Message cert(Key k, Message msg)" />
+<Method value="bool verifyCert(Message cert, Key k)" />
+<Method value="Key getpk(Message cert)" />
+<Method value="Key DH(Key pubK, Key privK)" />
+<Method value="Message hash(Message msg)" />
+</extraparam>
+</SUBCOMPONENT>
+<SUBCOMPONENT type="5000" id="594" >
+<father id="619" num="1" />
+<cdparam x="36" y="233" />
+<sizeparam width="215" height="126" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="0" maxX="223" minY="0" maxY="93" />
+<infoparam name="Block0" value="Alice" />
+<TGConnectingPoint num="0" id="570" />
+<TGConnectingPoint num="1" id="571" />
+<TGConnectingPoint num="2" id="572" />
+<TGConnectingPoint num="3" id="573" />
+<TGConnectingPoint num="4" id="574" />
+<TGConnectingPoint num="5" id="575" />
+<TGConnectingPoint num="6" id="576" />
+<TGConnectingPoint num="7" id="577" />
+<TGConnectingPoint num="8" id="578" />
+<TGConnectingPoint num="9" id="579" />
+<TGConnectingPoint num="10" id="580" />
+<TGConnectingPoint num="11" id="581" />
+<TGConnectingPoint num="12" id="582" />
+<TGConnectingPoint num="13" id="583" />
+<TGConnectingPoint num="14" id="584" />
+<TGConnectingPoint num="15" id="585" />
+<TGConnectingPoint num="16" id="586" />
+<TGConnectingPoint num="17" id="587" />
+<TGConnectingPoint num="18" id="588" />
+<TGConnectingPoint num="19" id="589" />
+<TGConnectingPoint num="20" id="590" />
+<TGConnectingPoint num="21" id="591" />
+<TGConnectingPoint num="22" id="592" />
+<TGConnectingPoint num="23" id="593" />
+<extraparam>
+<CryptoBlock value="true" />
+<Attribute access="0" id="secretData" value="" type="8" typeOther="" />
+<Attribute access="0" id="m" value="" type="5" typeOther="Message" />
+<Attribute access="0" id="m1" value="" type="5" typeOther="Message" />
+<Attribute access="0" id="sk" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="pubK" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="privK" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="bobPubK" value="" type="5" typeOther="Key" />
+<Method value="Message encrypt(Message msg, Key k)" />
+<Method value="Message decrypt(Message msg, Key k)" />
+<Method value="Message sencrypt(Message msg, Key k)" />
+<Method value="Message sdecrypt(Message msg, Key k)" />
+<Method value="Message MAC(Message msg, Key k)" />
+<Method value="bool verifyMAC(Message msg, Key k, Message macmsg)" />
+<Method value="Message concat2(Message msg1, Message msg2)" />
+<Method value="Message concat3(Message msg1, Message msg2, Message msg3)" />
+<Method value="Message concat4(Message msg1, Message msg2, Message msg3, Message msg4)" />
+<Method value="get2(Message msg, Message msg1, Message msg2)" />
+<Method value="get3(Message msg, Message msg1, Message msg2, Message msg3)" />
+<Method value="get4(Message msg, Message msg1, Message msg2, Message msg3, Message msg4)" />
+<Method value="Message aencrypt(Message msg, Key k)" />
+<Method value="Message adecrypt(Message msg, Key k)" />
+<Method value="Key pk(Key k)" />
+<Method value="Message sign(Message msg, Key k)" />
+<Method value="bool verifySign(Message msg1, Message sig, Key k)" />
+<Method value="Message cert(Key k, Message msg)" />
+<Method value="bool verifyCert(Message cert, Key k)" />
+<Method value="Key getpk(Message cert)" />
+<Method value="Key DH(Key pubK, Key privK)" />
+<Method value="Message hash(Message msg)" />
+</extraparam>
+</SUBCOMPONENT>
+
+
+</AVATARBlockDiagramPanel>
+
+<AVATARStateMachineDiagramPanel name="System" minX="10" maxX="1400" minY="10" maxY="900" >
+<COMPONENT type="5100" id="621" >
+<cdparam x="400" y="50" />
+<sizeparam width="15" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="start state" value="null" />
+<TGConnectingPoint num="0" id="620" />
+</COMPONENT>
+
+
+</AVATARStateMachineDiagramPanel>
+
+<AVATARStateMachineDiagramPanel name="Alice" minX="10" maxX="1400" minY="10" maxY="900" >
+<CONNECTOR type="5102" id="628" >
+<cdparam x="411" y="567" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="627" />
+<P1  x="411" y="567" id="831" />
+<P2  x="420" y="613" id="790" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="626" >
+<father id="628" num="0" />
+<cdparam x="453" y="610" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="622" />
+<TGConnectingPoint num="1" id="623" />
+<TGConnectingPoint num="2" id="624" />
+<TGConnectingPoint num="3" id="625" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="635" >
+<cdparam x="496" y="703" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="634" />
+<P1  x="420" y="663" id="795" />
+<P2  x="438" y="703" id="841" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="633" >
+<father id="635" num="0" />
+<cdparam x="453" y="697" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="629" />
+<TGConnectingPoint num="1" id="630" />
+<TGConnectingPoint num="2" id="631" />
+<TGConnectingPoint num="3" id="632" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="642" >
+<cdparam x="411" y="508" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector from state0 to stop state" value="null" />
+<TGConnectingPoint num="0" id="641" />
+<P1  x="411" y="508" id="849" />
+<P2  x="411" y="537" id="830" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="640" >
+<father id="642" num="0" />
+<cdparam x="411" y="548" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="636" />
+<TGConnectingPoint num="1" id="637" />
+<TGConnectingPoint num="2" id="638" />
+<TGConnectingPoint num="3" id="639" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="649" >
+<cdparam x="411" y="389" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector from state0 to state0" value="null" />
+<TGConnectingPoint num="0" id="648" />
+<P1  x="411" y="389" id="890" />
+<P2  x="411" y="468" id="844" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="647" >
+<father id="649" num="0" />
+<cdparam x="439" y="414" />
+<sizeparam width="152" height="45" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="643" />
+<TGConnectingPoint num="1" id="644" />
+<TGConnectingPoint num="2" id="645" />
+<TGConnectingPoint num="3" id="646" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+<actions value="sk = DH(bobPubK, privK)" />
+<actions value="m.data = secretData" />
+<actions value="m1 = sencrypt(m, sk)" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="656" >
+<cdparam x="407" y="70" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector from start state to state0" value="null" />
+<TGConnectingPoint num="0" id="655" />
+<P1  x="407" y="70" id="925" />
+<P2  x="405" y="91" id="749" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="654" >
+<father id="656" num="0" />
+<cdparam x="407" y="110" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="650" />
+<TGConnectingPoint num="1" id="651" />
+<TGConnectingPoint num="2" id="652" />
+<TGConnectingPoint num="3" id="653" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="663" >
+<cdparam x="392" y="122" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="662" />
+<P1  x="392" y="122" id="777" />
+<P2  x="392" y="150" id="737" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="661" >
+<father id="663" num="0" />
+<cdparam x="411" y="142" />
+<sizeparam width="126" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="657" />
+<TGConnectingPoint num="1" id="658" />
+<TGConnectingPoint num="2" id="659" />
+<TGConnectingPoint num="3" id="660" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+<actions value="m.data = pubK.data" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="670" >
+<cdparam x="391" y="166" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="669" />
+<P1  x="392" y="180" id="738" />
+<P2  x="380" y="224" id="713" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="668" >
+<father id="670" num="0" />
+<cdparam x="390" y="188" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="664" />
+<TGConnectingPoint num="1" id="665" />
+<TGConnectingPoint num="2" id="666" />
+<TGConnectingPoint num="3" id="667" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="677" >
+<cdparam x="380" y="258" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="676" />
+<P1  x="380" y="258" id="725" />
+<P2  x="386" y="287" id="685" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="675" >
+<father id="677" num="0" />
+<cdparam x="377" y="267" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="671" />
+<TGConnectingPoint num="1" id="672" />
+<TGConnectingPoint num="2" id="673" />
+<TGConnectingPoint num="3" id="674" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="684" >
+<cdparam x="375" y="306" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="683" />
+<P1  x="386" y="317" id="686" />
+<P2  x="377" y="349" id="892" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="682" >
+<father id="684" num="0" />
+<cdparam x="396" y="336" />
+<sizeparam width="150" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="678" />
+<TGConnectingPoint num="1" id="679" />
+<TGConnectingPoint num="2" id="680" />
+<TGConnectingPoint num="3" id="681" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+<actions value="bobPubK.data = m.data" />
+</extraparam>
+</SUBCOMPONENT>
+
+<COMPONENT type="5104" id="695" >
+<cdparam x="354" y="292" />
+<sizeparam width="65" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="Receive signal" value="chin(m)" />
+<TGConnectingPoint num="0" id="685" />
+<TGConnectingPoint num="1" id="686" />
+<TGConnectingPoint num="2" id="687" />
+<TGConnectingPoint num="3" id="688" />
+<TGConnectingPoint num="4" id="689" />
+<TGConnectingPoint num="5" id="690" />
+<TGConnectingPoint num="6" id="691" />
+<TGConnectingPoint num="7" id="692" />
+<TGConnectingPoint num="8" id="693" />
+<TGConnectingPoint num="9" id="694" />
+</COMPONENT>
+
+<COMPONENT type="5106" id="736" >
+<cdparam x="338" y="224" />
+<sizeparam width="114" height="34" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="State" value="receivingPubK" />
+<TGConnectingPoint num="0" id="696" />
+<TGConnectingPoint num="1" id="697" />
+<TGConnectingPoint num="2" id="698" />
+<TGConnectingPoint num="3" id="699" />
+<TGConnectingPoint num="4" id="700" />
+<TGConnectingPoint num="5" id="701" />
+<TGConnectingPoint num="6" id="702" />
+<TGConnectingPoint num="7" id="703" />
+<TGConnectingPoint num="8" id="704" />
+<TGConnectingPoint num="9" id="705" />
+<TGConnectingPoint num="10" id="706" />
+<TGConnectingPoint num="11" id="707" />
+<TGConnectingPoint num="12" id="708" />
+<TGConnectingPoint num="13" id="709" />
+<TGConnectingPoint num="14" id="710" />
+<TGConnectingPoint num="15" id="711" />
+<TGConnectingPoint num="16" id="712" />
+<TGConnectingPoint num="17" id="713" />
+<TGConnectingPoint num="18" id="714" />
+<TGConnectingPoint num="19" id="715" />
+<TGConnectingPoint num="20" id="716" />
+<TGConnectingPoint num="21" id="717" />
+<TGConnectingPoint num="22" id="718" />
+<TGConnectingPoint num="23" id="719" />
+<TGConnectingPoint num="24" id="720" />
+<TGConnectingPoint num="25" id="721" />
+<TGConnectingPoint num="26" id="722" />
+<TGConnectingPoint num="27" id="723" />
+<TGConnectingPoint num="28" id="724" />
+<TGConnectingPoint num="29" id="725" />
+<TGConnectingPoint num="30" id="726" />
+<TGConnectingPoint num="31" id="727" />
+<TGConnectingPoint num="32" id="728" />
+<TGConnectingPoint num="33" id="729" />
+<TGConnectingPoint num="34" id="730" />
+<TGConnectingPoint num="35" id="731" />
+<TGConnectingPoint num="36" id="732" />
+<TGConnectingPoint num="37" id="733" />
+<TGConnectingPoint num="38" id="734" />
+<TGConnectingPoint num="39" id="735" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5103" id="747" >
+<cdparam x="359" y="155" />
+<sizeparam width="67" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="Send signal" value="chout(m)" />
+<TGConnectingPoint num="0" id="737" />
+<TGConnectingPoint num="1" id="738" />
+<TGConnectingPoint num="2" id="739" />
+<TGConnectingPoint num="3" id="740" />
+<TGConnectingPoint num="4" id="741" />
+<TGConnectingPoint num="5" id="742" />
+<TGConnectingPoint num="6" id="743" />
+<TGConnectingPoint num="7" id="744" />
+<TGConnectingPoint num="8" id="745" />
+<TGConnectingPoint num="9" id="746" />
+</COMPONENT>
+
+<COMPONENT type="5106" id="788" >
+<cdparam x="355" y="91" />
+<sizeparam width="100" height="31" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="State" value="sendingPubK" />
+<TGConnectingPoint num="0" id="748" />
+<TGConnectingPoint num="1" id="749" />
+<TGConnectingPoint num="2" id="750" />
+<TGConnectingPoint num="3" id="751" />
+<TGConnectingPoint num="4" id="752" />
+<TGConnectingPoint num="5" id="753" />
+<TGConnectingPoint num="6" id="754" />
+<TGConnectingPoint num="7" id="755" />
+<TGConnectingPoint num="8" id="756" />
+<TGConnectingPoint num="9" id="757" />
+<TGConnectingPoint num="10" id="758" />
+<TGConnectingPoint num="11" id="759" />
+<TGConnectingPoint num="12" id="760" />
+<TGConnectingPoint num="13" id="761" />
+<TGConnectingPoint num="14" id="762" />
+<TGConnectingPoint num="15" id="763" />
+<TGConnectingPoint num="16" id="764" />
+<TGConnectingPoint num="17" id="765" />
+<TGConnectingPoint num="18" id="766" />
+<TGConnectingPoint num="19" id="767" />
+<TGConnectingPoint num="20" id="768" />
+<TGConnectingPoint num="21" id="769" />
+<TGConnectingPoint num="22" id="770" />
+<TGConnectingPoint num="23" id="771" />
+<TGConnectingPoint num="24" id="772" />
+<TGConnectingPoint num="25" id="773" />
+<TGConnectingPoint num="26" id="774" />
+<TGConnectingPoint num="27" id="775" />
+<TGConnectingPoint num="28" id="776" />
+<TGConnectingPoint num="29" id="777" />
+<TGConnectingPoint num="30" id="778" />
+<TGConnectingPoint num="31" id="779" />
+<TGConnectingPoint num="32" id="780" />
+<TGConnectingPoint num="33" id="781" />
+<TGConnectingPoint num="34" id="782" />
+<TGConnectingPoint num="35" id="783" />
+<TGConnectingPoint num="36" id="784" />
+<TGConnectingPoint num="37" id="785" />
+<TGConnectingPoint num="38" id="786" />
+<TGConnectingPoint num="39" id="787" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5106" id="829" >
+<cdparam x="370" y="613" />
+<sizeparam width="100" height="50" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="State" value="beforeFinish" />
+<TGConnectingPoint num="0" id="789" />
+<TGConnectingPoint num="1" id="790" />
+<TGConnectingPoint num="2" id="791" />
+<TGConnectingPoint num="3" id="792" />
+<TGConnectingPoint num="4" id="793" />
+<TGConnectingPoint num="5" id="794" />
+<TGConnectingPoint num="6" id="795" />
+<TGConnectingPoint num="7" id="796" />
+<TGConnectingPoint num="8" id="797" />
+<TGConnectingPoint num="9" id="798" />
+<TGConnectingPoint num="10" id="799" />
+<TGConnectingPoint num="11" id="800" />
+<TGConnectingPoint num="12" id="801" />
+<TGConnectingPoint num="13" id="802" />
+<TGConnectingPoint num="14" id="803" />
+<TGConnectingPoint num="15" id="804" />
+<TGConnectingPoint num="16" id="805" />
+<TGConnectingPoint num="17" id="806" />
+<TGConnectingPoint num="18" id="807" />
+<TGConnectingPoint num="19" id="808" />
+<TGConnectingPoint num="20" id="809" />
+<TGConnectingPoint num="21" id="810" />
+<TGConnectingPoint num="22" id="811" />
+<TGConnectingPoint num="23" id="812" />
+<TGConnectingPoint num="24" id="813" />
+<TGConnectingPoint num="25" id="814" />
+<TGConnectingPoint num="26" id="815" />
+<TGConnectingPoint num="27" id="816" />
+<TGConnectingPoint num="28" id="817" />
+<TGConnectingPoint num="29" id="818" />
+<TGConnectingPoint num="30" id="819" />
+<TGConnectingPoint num="31" id="820" />
+<TGConnectingPoint num="32" id="821" />
+<TGConnectingPoint num="33" id="822" />
+<TGConnectingPoint num="34" id="823" />
+<TGConnectingPoint num="35" id="824" />
+<TGConnectingPoint num="36" id="825" />
+<TGConnectingPoint num="37" id="826" />
+<TGConnectingPoint num="38" id="827" />
+<TGConnectingPoint num="39" id="828" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5103" id="840" >
+<cdparam x="374" y="542" />
+<sizeparam width="75" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="Send signal" value="chout(m1)" />
+<TGConnectingPoint num="0" id="830" />
+<TGConnectingPoint num="1" id="831" />
+<TGConnectingPoint num="2" id="832" />
+<TGConnectingPoint num="3" id="833" />
+<TGConnectingPoint num="4" id="834" />
+<TGConnectingPoint num="5" id="835" />
+<TGConnectingPoint num="6" id="836" />
+<TGConnectingPoint num="7" id="837" />
+<TGConnectingPoint num="8" id="838" />
+<TGConnectingPoint num="9" id="839" />
+</COMPONENT>
+
+<COMPONENT type="5101" id="842" >
+<cdparam x="428" y="708" />
+<sizeparam width="20" height="20" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="stop state" value="null" />
+<TGConnectingPoint num="0" id="841" />
+</COMPONENT>
+
+<COMPONENT type="5106" id="883" >
+<cdparam x="340" y="468" />
+<sizeparam width="143" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="state0" value="sendingMessage" />
+<TGConnectingPoint num="0" id="843" />
+<TGConnectingPoint num="1" id="844" />
+<TGConnectingPoint num="2" id="845" />
+<TGConnectingPoint num="3" id="846" />
+<TGConnectingPoint num="4" id="847" />
+<TGConnectingPoint num="5" id="848" />
+<TGConnectingPoint num="6" id="849" />
+<TGConnectingPoint num="7" id="850" />
+<TGConnectingPoint num="8" id="851" />
+<TGConnectingPoint num="9" id="852" />
+<TGConnectingPoint num="10" id="853" />
+<TGConnectingPoint num="11" id="854" />
+<TGConnectingPoint num="12" id="855" />
+<TGConnectingPoint num="13" id="856" />
+<TGConnectingPoint num="14" id="857" />
+<TGConnectingPoint num="15" id="858" />
+<TGConnectingPoint num="16" id="859" />
+<TGConnectingPoint num="17" id="860" />
+<TGConnectingPoint num="18" id="861" />
+<TGConnectingPoint num="19" id="862" />
+<TGConnectingPoint num="20" id="863" />
+<TGConnectingPoint num="21" id="864" />
+<TGConnectingPoint num="22" id="865" />
+<TGConnectingPoint num="23" id="866" />
+<TGConnectingPoint num="24" id="867" />
+<TGConnectingPoint num="25" id="868" />
+<TGConnectingPoint num="26" id="869" />
+<TGConnectingPoint num="27" id="870" />
+<TGConnectingPoint num="28" id="871" />
+<TGConnectingPoint num="29" id="872" />
+<TGConnectingPoint num="30" id="873" />
+<TGConnectingPoint num="31" id="874" />
+<TGConnectingPoint num="32" id="875" />
+<TGConnectingPoint num="33" id="876" />
+<TGConnectingPoint num="34" id="877" />
+<TGConnectingPoint num="35" id="878" />
+<TGConnectingPoint num="36" id="879" />
+<TGConnectingPoint num="37" id="880" />
+<TGConnectingPoint num="38" id="881" />
+<TGConnectingPoint num="39" id="882" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5106" id="924" >
+<cdparam x="344" y="349" />
+<sizeparam width="134" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="state0" value="makingMessage" />
+<TGConnectingPoint num="0" id="884" />
+<TGConnectingPoint num="1" id="885" />
+<TGConnectingPoint num="2" id="886" />
+<TGConnectingPoint num="3" id="887" />
+<TGConnectingPoint num="4" id="888" />
+<TGConnectingPoint num="5" id="889" />
+<TGConnectingPoint num="6" id="890" />
+<TGConnectingPoint num="7" id="891" />
+<TGConnectingPoint num="8" id="892" />
+<TGConnectingPoint num="9" id="893" />
+<TGConnectingPoint num="10" id="894" />
+<TGConnectingPoint num="11" id="895" />
+<TGConnectingPoint num="12" id="896" />
+<TGConnectingPoint num="13" id="897" />
+<TGConnectingPoint num="14" id="898" />
+<TGConnectingPoint num="15" id="899" />
+<TGConnectingPoint num="16" id="900" />
+<TGConnectingPoint num="17" id="901" />
+<TGConnectingPoint num="18" id="902" />
+<TGConnectingPoint num="19" id="903" />
+<TGConnectingPoint num="20" id="904" />
+<TGConnectingPoint num="21" id="905" />
+<TGConnectingPoint num="22" id="906" />
+<TGConnectingPoint num="23" id="907" />
+<TGConnectingPoint num="24" id="908" />
+<TGConnectingPoint num="25" id="909" />
+<TGConnectingPoint num="26" id="910" />
+<TGConnectingPoint num="27" id="911" />
+<TGConnectingPoint num="28" id="912" />
+<TGConnectingPoint num="29" id="913" />
+<TGConnectingPoint num="30" id="914" />
+<TGConnectingPoint num="31" id="915" />
+<TGConnectingPoint num="32" id="916" />
+<TGConnectingPoint num="33" id="917" />
+<TGConnectingPoint num="34" id="918" />
+<TGConnectingPoint num="35" id="919" />
+<TGConnectingPoint num="36" id="920" />
+<TGConnectingPoint num="37" id="921" />
+<TGConnectingPoint num="38" id="922" />
+<TGConnectingPoint num="39" id="923" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5100" id="926" >
+<cdparam x="400" y="50" />
+<sizeparam width="15" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="start state" value="null" />
+<TGConnectingPoint num="0" id="925" />
+</COMPONENT>
+
+
+</AVATARStateMachineDiagramPanel>
+
+<AVATARStateMachineDiagramPanel name="Bob" minX="10" maxX="1400" minY="10" maxY="900" >
+<CONNECTOR type="5102" id="933" >
+<cdparam x="418" y="632" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector from state0 to state0" value="null" />
+<TGConnectingPoint num="0" id="932" />
+<P1  x="418" y="632" id="1100" />
+<P2  x="422" y="677" id="1136" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="931" >
+<father id="933" num="0" />
+<cdparam x="433" y="656" />
+<sizeparam width="145" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="927" />
+<TGConnectingPoint num="1" id="928" />
+<TGConnectingPoint num="2" id="929" />
+<TGConnectingPoint num="3" id="930" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+<actions value="receivedData = m.data" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="940" >
+<cdparam x="409" y="526" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector from state0 to state0" value="null" />
+<TGConnectingPoint num="0" id="939" />
+<P1  x="409" y="526" id="1182" />
+<P2  x="418" y="592" id="1095" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="938" >
+<father id="940" num="0" />
+<cdparam x="431" y="551" />
+<sizeparam width="157" height="30" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="934" />
+<TGConnectingPoint num="1" id="935" />
+<TGConnectingPoint num="2" id="936" />
+<TGConnectingPoint num="3" id="937" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+<actions value="sk = DH(alicePubK, privK)" />
+<actions value="m = sdecrypt(m2, sk)" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="947" >
+<cdparam x="408" y="454" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector from Send signal to state0" value="null" />
+<TGConnectingPoint num="0" id="946" />
+<P1  x="408" y="454" id="1218" />
+<P2  x="409" y="486" id="1177" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="945" >
+<father id="947" num="0" />
+<cdparam x="408" y="494" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="941" />
+<TGConnectingPoint num="1" id="942" />
+<TGConnectingPoint num="2" id="943" />
+<TGConnectingPoint num="3" id="944" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="954" >
+<cdparam x="408" y="394" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector from state0 to Send signal" value="null" />
+<TGConnectingPoint num="0" id="953" />
+<P1  x="408" y="394" id="1234" />
+<P2  x="408" y="424" id="1217" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="952" >
+<father id="954" num="0" />
+<cdparam x="408" y="434" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="948" />
+<TGConnectingPoint num="1" id="949" />
+<TGConnectingPoint num="2" id="950" />
+<TGConnectingPoint num="3" id="951" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="961" >
+<cdparam x="407" y="70" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector from start state to state0" value="null" />
+<TGConnectingPoint num="0" id="960" />
+<P1  x="407" y="70" id="1269" />
+<P2  x="407" y="95" id="1054" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="959" >
+<father id="961" num="0" />
+<cdparam x="407" y="110" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="955" />
+<TGConnectingPoint num="1" id="956" />
+<TGConnectingPoint num="2" id="957" />
+<TGConnectingPoint num="3" id="958" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="968" >
+<cdparam x="407" y="127" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="967" />
+<P1  x="407" y="127" id="1059" />
+<P2  x="407" y="153" id="1042" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="966" >
+<father id="968" num="0" />
+<cdparam x="428" y="145" />
+<sizeparam width="126" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="962" />
+<TGConnectingPoint num="1" id="963" />
+<TGConnectingPoint num="2" id="964" />
+<TGConnectingPoint num="3" id="965" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+<actions value="m.data = pubK.data" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="975" >
+<cdparam x="407" y="183" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="974" />
+<P1  x="407" y="183" id="1043" />
+<P2  x="408" y="213" id="1002" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="973" >
+<father id="975" num="0" />
+<cdparam x="408" y="199" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="969" />
+<TGConnectingPoint num="1" id="970" />
+<TGConnectingPoint num="2" id="971" />
+<TGConnectingPoint num="3" id="972" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="982" >
+<cdparam x="409" y="265" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="981" />
+<P1  x="408" y="251" id="1007" />
+<P2  x="406" y="285" id="990" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="980" >
+<father id="982" num="0" />
+<cdparam x="409" y="281" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="976" />
+<TGConnectingPoint num="1" id="977" />
+<TGConnectingPoint num="2" id="978" />
+<TGConnectingPoint num="3" id="979" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="989" >
+<cdparam x="410" y="327" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="988" />
+<P1  x="406" y="315" id="991" />
+<P2  x="408" y="354" id="1229" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="987" >
+<father id="989" num="0" />
+<cdparam x="426" y="337" />
+<sizeparam width="155" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="983" />
+<TGConnectingPoint num="1" id="984" />
+<TGConnectingPoint num="2" id="985" />
+<TGConnectingPoint num="3" id="986" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+<actions value="alicePubK.data = m.data" />
+</extraparam>
+</SUBCOMPONENT>
+
+<COMPONENT type="5104" id="1000" >
+<cdparam x="374" y="290" />
+<sizeparam width="65" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="Receive signal" value="chin(m)" />
+<TGConnectingPoint num="0" id="990" />
+<TGConnectingPoint num="1" id="991" />
+<TGConnectingPoint num="2" id="992" />
+<TGConnectingPoint num="3" id="993" />
+<TGConnectingPoint num="4" id="994" />
+<TGConnectingPoint num="5" id="995" />
+<TGConnectingPoint num="6" id="996" />
+<TGConnectingPoint num="7" id="997" />
+<TGConnectingPoint num="8" id="998" />
+<TGConnectingPoint num="9" id="999" />
+</COMPONENT>
+
+<COMPONENT type="5106" id="1041" >
+<cdparam x="347" y="213" />
+<sizeparam width="123" height="38" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="State" value="receivingPubK" />
+<TGConnectingPoint num="0" id="1001" />
+<TGConnectingPoint num="1" id="1002" />
+<TGConnectingPoint num="2" id="1003" />
+<TGConnectingPoint num="3" id="1004" />
+<TGConnectingPoint num="4" id="1005" />
+<TGConnectingPoint num="5" id="1006" />
+<TGConnectingPoint num="6" id="1007" />
+<TGConnectingPoint num="7" id="1008" />
+<TGConnectingPoint num="8" id="1009" />
+<TGConnectingPoint num="9" id="1010" />
+<TGConnectingPoint num="10" id="1011" />
+<TGConnectingPoint num="11" id="1012" />
+<TGConnectingPoint num="12" id="1013" />
+<TGConnectingPoint num="13" id="1014" />
+<TGConnectingPoint num="14" id="1015" />
+<TGConnectingPoint num="15" id="1016" />
+<TGConnectingPoint num="16" id="1017" />
+<TGConnectingPoint num="17" id="1018" />
+<TGConnectingPoint num="18" id="1019" />
+<TGConnectingPoint num="19" id="1020" />
+<TGConnectingPoint num="20" id="1021" />
+<TGConnectingPoint num="21" id="1022" />
+<TGConnectingPoint num="22" id="1023" />
+<TGConnectingPoint num="23" id="1024" />
+<TGConnectingPoint num="24" id="1025" />
+<TGConnectingPoint num="25" id="1026" />
+<TGConnectingPoint num="26" id="1027" />
+<TGConnectingPoint num="27" id="1028" />
+<TGConnectingPoint num="28" id="1029" />
+<TGConnectingPoint num="29" id="1030" />
+<TGConnectingPoint num="30" id="1031" />
+<TGConnectingPoint num="31" id="1032" />
+<TGConnectingPoint num="32" id="1033" />
+<TGConnectingPoint num="33" id="1034" />
+<TGConnectingPoint num="34" id="1035" />
+<TGConnectingPoint num="35" id="1036" />
+<TGConnectingPoint num="36" id="1037" />
+<TGConnectingPoint num="37" id="1038" />
+<TGConnectingPoint num="38" id="1039" />
+<TGConnectingPoint num="39" id="1040" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5103" id="1052" >
+<cdparam x="374" y="158" />
+<sizeparam width="67" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="Send signal" value="chout(m)" />
+<TGConnectingPoint num="0" id="1042" />
+<TGConnectingPoint num="1" id="1043" />
+<TGConnectingPoint num="2" id="1044" />
+<TGConnectingPoint num="3" id="1045" />
+<TGConnectingPoint num="4" id="1046" />
+<TGConnectingPoint num="5" id="1047" />
+<TGConnectingPoint num="6" id="1048" />
+<TGConnectingPoint num="7" id="1049" />
+<TGConnectingPoint num="8" id="1050" />
+<TGConnectingPoint num="9" id="1051" />
+</COMPONENT>
+
+<COMPONENT type="5106" id="1093" >
+<cdparam x="351" y="95" />
+<sizeparam width="113" height="32" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="State" value="sendingPubK" />
+<TGConnectingPoint num="0" id="1053" />
+<TGConnectingPoint num="1" id="1054" />
+<TGConnectingPoint num="2" id="1055" />
+<TGConnectingPoint num="3" id="1056" />
+<TGConnectingPoint num="4" id="1057" />
+<TGConnectingPoint num="5" id="1058" />
+<TGConnectingPoint num="6" id="1059" />
+<TGConnectingPoint num="7" id="1060" />
+<TGConnectingPoint num="8" id="1061" />
+<TGConnectingPoint num="9" id="1062" />
+<TGConnectingPoint num="10" id="1063" />
+<TGConnectingPoint num="11" id="1064" />
+<TGConnectingPoint num="12" id="1065" />
+<TGConnectingPoint num="13" id="1066" />
+<TGConnectingPoint num="14" id="1067" />
+<TGConnectingPoint num="15" id="1068" />
+<TGConnectingPoint num="16" id="1069" />
+<TGConnectingPoint num="17" id="1070" />
+<TGConnectingPoint num="18" id="1071" />
+<TGConnectingPoint num="19" id="1072" />
+<TGConnectingPoint num="20" id="1073" />
+<TGConnectingPoint num="21" id="1074" />
+<TGConnectingPoint num="22" id="1075" />
+<TGConnectingPoint num="23" id="1076" />
+<TGConnectingPoint num="24" id="1077" />
+<TGConnectingPoint num="25" id="1078" />
+<TGConnectingPoint num="26" id="1079" />
+<TGConnectingPoint num="27" id="1080" />
+<TGConnectingPoint num="28" id="1081" />
+<TGConnectingPoint num="29" id="1082" />
+<TGConnectingPoint num="30" id="1083" />
+<TGConnectingPoint num="31" id="1084" />
+<TGConnectingPoint num="32" id="1085" />
+<TGConnectingPoint num="33" id="1086" />
+<TGConnectingPoint num="34" id="1087" />
+<TGConnectingPoint num="35" id="1088" />
+<TGConnectingPoint num="36" id="1089" />
+<TGConnectingPoint num="37" id="1090" />
+<TGConnectingPoint num="38" id="1091" />
+<TGConnectingPoint num="39" id="1092" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5106" id="1134" >
+<cdparam x="329" y="592" />
+<sizeparam width="178" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="state0" value="messageDecrypted" />
+<TGConnectingPoint num="0" id="1094" />
+<TGConnectingPoint num="1" id="1095" />
+<TGConnectingPoint num="2" id="1096" />
+<TGConnectingPoint num="3" id="1097" />
+<TGConnectingPoint num="4" id="1098" />
+<TGConnectingPoint num="5" id="1099" />
+<TGConnectingPoint num="6" id="1100" />
+<TGConnectingPoint num="7" id="1101" />
+<TGConnectingPoint num="8" id="1102" />
+<TGConnectingPoint num="9" id="1103" />
+<TGConnectingPoint num="10" id="1104" />
+<TGConnectingPoint num="11" id="1105" />
+<TGConnectingPoint num="12" id="1106" />
+<TGConnectingPoint num="13" id="1107" />
+<TGConnectingPoint num="14" id="1108" />
+<TGConnectingPoint num="15" id="1109" />
+<TGConnectingPoint num="16" id="1110" />
+<TGConnectingPoint num="17" id="1111" />
+<TGConnectingPoint num="18" id="1112" />
+<TGConnectingPoint num="19" id="1113" />
+<TGConnectingPoint num="20" id="1114" />
+<TGConnectingPoint num="21" id="1115" />
+<TGConnectingPoint num="22" id="1116" />
+<TGConnectingPoint num="23" id="1117" />
+<TGConnectingPoint num="24" id="1118" />
+<TGConnectingPoint num="25" id="1119" />
+<TGConnectingPoint num="26" id="1120" />
+<TGConnectingPoint num="27" id="1121" />
+<TGConnectingPoint num="28" id="1122" />
+<TGConnectingPoint num="29" id="1123" />
+<TGConnectingPoint num="30" id="1124" />
+<TGConnectingPoint num="31" id="1125" />
+<TGConnectingPoint num="32" id="1126" />
+<TGConnectingPoint num="33" id="1127" />
+<TGConnectingPoint num="34" id="1128" />
+<TGConnectingPoint num="35" id="1129" />
+<TGConnectingPoint num="36" id="1130" />
+<TGConnectingPoint num="37" id="1131" />
+<TGConnectingPoint num="38" id="1132" />
+<TGConnectingPoint num="39" id="1133" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5106" id="1175" >
+<cdparam x="352" y="677" />
+<sizeparam width="140" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="state0" value="SecretDataReceived" />
+<TGConnectingPoint num="0" id="1135" />
+<TGConnectingPoint num="1" id="1136" />
+<TGConnectingPoint num="2" id="1137" />
+<TGConnectingPoint num="3" id="1138" />
+<TGConnectingPoint num="4" id="1139" />
+<TGConnectingPoint num="5" id="1140" />
+<TGConnectingPoint num="6" id="1141" />
+<TGConnectingPoint num="7" id="1142" />
+<TGConnectingPoint num="8" id="1143" />
+<TGConnectingPoint num="9" id="1144" />
+<TGConnectingPoint num="10" id="1145" />
+<TGConnectingPoint num="11" id="1146" />
+<TGConnectingPoint num="12" id="1147" />
+<TGConnectingPoint num="13" id="1148" />
+<TGConnectingPoint num="14" id="1149" />
+<TGConnectingPoint num="15" id="1150" />
+<TGConnectingPoint num="16" id="1151" />
+<TGConnectingPoint num="17" id="1152" />
+<TGConnectingPoint num="18" id="1153" />
+<TGConnectingPoint num="19" id="1154" />
+<TGConnectingPoint num="20" id="1155" />
+<TGConnectingPoint num="21" id="1156" />
+<TGConnectingPoint num="22" id="1157" />
+<TGConnectingPoint num="23" id="1158" />
+<TGConnectingPoint num="24" id="1159" />
+<TGConnectingPoint num="25" id="1160" />
+<TGConnectingPoint num="26" id="1161" />
+<TGConnectingPoint num="27" id="1162" />
+<TGConnectingPoint num="28" id="1163" />
+<TGConnectingPoint num="29" id="1164" />
+<TGConnectingPoint num="30" id="1165" />
+<TGConnectingPoint num="31" id="1166" />
+<TGConnectingPoint num="32" id="1167" />
+<TGConnectingPoint num="33" id="1168" />
+<TGConnectingPoint num="34" id="1169" />
+<TGConnectingPoint num="35" id="1170" />
+<TGConnectingPoint num="36" id="1171" />
+<TGConnectingPoint num="37" id="1172" />
+<TGConnectingPoint num="38" id="1173" />
+<TGConnectingPoint num="39" id="1174" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5106" id="1216" >
+<cdparam x="338" y="486" />
+<sizeparam width="142" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="state0" value="messageDecrypt" />
+<TGConnectingPoint num="0" id="1176" />
+<TGConnectingPoint num="1" id="1177" />
+<TGConnectingPoint num="2" id="1178" />
+<TGConnectingPoint num="3" id="1179" />
+<TGConnectingPoint num="4" id="1180" />
+<TGConnectingPoint num="5" id="1181" />
+<TGConnectingPoint num="6" id="1182" />
+<TGConnectingPoint num="7" id="1183" />
+<TGConnectingPoint num="8" id="1184" />
+<TGConnectingPoint num="9" id="1185" />
+<TGConnectingPoint num="10" id="1186" />
+<TGConnectingPoint num="11" id="1187" />
+<TGConnectingPoint num="12" id="1188" />
+<TGConnectingPoint num="13" id="1189" />
+<TGConnectingPoint num="14" id="1190" />
+<TGConnectingPoint num="15" id="1191" />
+<TGConnectingPoint num="16" id="1192" />
+<TGConnectingPoint num="17" id="1193" />
+<TGConnectingPoint num="18" id="1194" />
+<TGConnectingPoint num="19" id="1195" />
+<TGConnectingPoint num="20" id="1196" />
+<TGConnectingPoint num="21" id="1197" />
+<TGConnectingPoint num="22" id="1198" />
+<TGConnectingPoint num="23" id="1199" />
+<TGConnectingPoint num="24" id="1200" />
+<TGConnectingPoint num="25" id="1201" />
+<TGConnectingPoint num="26" id="1202" />
+<TGConnectingPoint num="27" id="1203" />
+<TGConnectingPoint num="28" id="1204" />
+<TGConnectingPoint num="29" id="1205" />
+<TGConnectingPoint num="30" id="1206" />
+<TGConnectingPoint num="31" id="1207" />
+<TGConnectingPoint num="32" id="1208" />
+<TGConnectingPoint num="33" id="1209" />
+<TGConnectingPoint num="34" id="1210" />
+<TGConnectingPoint num="35" id="1211" />
+<TGConnectingPoint num="36" id="1212" />
+<TGConnectingPoint num="37" id="1213" />
+<TGConnectingPoint num="38" id="1214" />
+<TGConnectingPoint num="39" id="1215" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5104" id="1227" >
+<cdparam x="372" y="429" />
+<sizeparam width="73" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="Send signal" value="chin(m2)" />
+<TGConnectingPoint num="0" id="1217" />
+<TGConnectingPoint num="1" id="1218" />
+<TGConnectingPoint num="2" id="1219" />
+<TGConnectingPoint num="3" id="1220" />
+<TGConnectingPoint num="4" id="1221" />
+<TGConnectingPoint num="5" id="1222" />
+<TGConnectingPoint num="6" id="1223" />
+<TGConnectingPoint num="7" id="1224" />
+<TGConnectingPoint num="8" id="1225" />
+<TGConnectingPoint num="9" id="1226" />
+</COMPONENT>
+
+<COMPONENT type="5106" id="1268" >
+<cdparam x="342" y="354" />
+<sizeparam width="132" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="state0" value="waitingForMessage" />
+<TGConnectingPoint num="0" id="1228" />
+<TGConnectingPoint num="1" id="1229" />
+<TGConnectingPoint num="2" id="1230" />
+<TGConnectingPoint num="3" id="1231" />
+<TGConnectingPoint num="4" id="1232" />
+<TGConnectingPoint num="5" id="1233" />
+<TGConnectingPoint num="6" id="1234" />
+<TGConnectingPoint num="7" id="1235" />
+<TGConnectingPoint num="8" id="1236" />
+<TGConnectingPoint num="9" id="1237" />
+<TGConnectingPoint num="10" id="1238" />
+<TGConnectingPoint num="11" id="1239" />
+<TGConnectingPoint num="12" id="1240" />
+<TGConnectingPoint num="13" id="1241" />
+<TGConnectingPoint num="14" id="1242" />
+<TGConnectingPoint num="15" id="1243" />
+<TGConnectingPoint num="16" id="1244" />
+<TGConnectingPoint num="17" id="1245" />
+<TGConnectingPoint num="18" id="1246" />
+<TGConnectingPoint num="19" id="1247" />
+<TGConnectingPoint num="20" id="1248" />
+<TGConnectingPoint num="21" id="1249" />
+<TGConnectingPoint num="22" id="1250" />
+<TGConnectingPoint num="23" id="1251" />
+<TGConnectingPoint num="24" id="1252" />
+<TGConnectingPoint num="25" id="1253" />
+<TGConnectingPoint num="26" id="1254" />
+<TGConnectingPoint num="27" id="1255" />
+<TGConnectingPoint num="28" id="1256" />
+<TGConnectingPoint num="29" id="1257" />
+<TGConnectingPoint num="30" id="1258" />
+<TGConnectingPoint num="31" id="1259" />
+<TGConnectingPoint num="32" id="1260" />
+<TGConnectingPoint num="33" id="1261" />
+<TGConnectingPoint num="34" id="1262" />
+<TGConnectingPoint num="35" id="1263" />
+<TGConnectingPoint num="36" id="1264" />
+<TGConnectingPoint num="37" id="1265" />
+<TGConnectingPoint num="38" id="1266" />
+<TGConnectingPoint num="39" id="1267" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5100" id="1270" >
+<cdparam x="400" y="50" />
+<sizeparam width="15" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="start state" value="null" />
+<TGConnectingPoint num="0" id="1269" />
+</COMPONENT>
+
+
+</AVATARStateMachineDiagramPanel>
+
+</Modeling>
+
+
+
+
+<Modeling type="AVATAR Design" nameTab="Example DH with Certificate" >
+<AVATARBlockDiagramPanel name="Block Diagram" minX="10" maxX="1400" minY="10" maxY="900" >
+<MainCode value="void __user_init() {"/>
+<MainCode value="}"/>
+<Optimized value="true" />
+<Validated value="System;Alice;Bob;CA;" />
+<Ignored value="" />
+
+<CONNECTOR type="5002" id="1276" >
+<cdparam x="568" y="220" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector from Block0 to Block0" value="" />
+<TGConnectingPoint num="0" id="1273" />
+<TGConnectingPoint num="1" id="1274" />
+<TGConnectingPoint num="2" id="1275" />
+<P1  x="459" y="106" id="1398" />
+<P2  x="459" y="192" id="1391" />
+<Point x="492" y="119" />
+<Point x="492" y="174" />
+<AutomaticDrawing  data="true" />
+<extraparam>
+<iso value="in chin(Message msg)" />
+<osd value="out chout(Message msg)" />
+<FIFOType asynchronous="false" size="1" blocking="false" private="false" broadcast="false" lossy="false" />
+</extraparam>
+</CONNECTOR><SUBCOMPONENT type="-1" id="1271" >
+<father id="1276" num="0" />
+<cdparam x="492" y="119" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="point " value="null" />
+</SUBCOMPONENT>
+<SUBCOMPONENT type="-1" id="1272" >
+<father id="1276" num="1" />
+<cdparam x="492" y="174" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="point " value="null" />
+</SUBCOMPONENT>
+
+<COMPONENT type="302" id="1293" >
+<cdparam x="566" y="94" />
+<sizeparam width="455" height="188" minWidth="80" minHeight="10" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="Proverif Pragma" value="#PrivatePublicKeys Alice privK pubK
+#PrivatePublicKeys Bob privK pubK
+#PrivatePublicKeys CA privK pubK
+#InitialSystemKnowledge Bob.aliceID CA.aliceID
+#InitialSystemKnowledge Alice.bobID CA.bobID
+#InitialSystemKnowledge Alice.pubK CA.alicePubK
+#InitialSystemKnowledge Bob.pubK CA.bobPubK
+#InitialSystemKnowledge CA.pubK Alice.CAPubK Bob.CAPubK
+
+#Confidentiality Alice.secretData
+#Authenticity Alice.sendingMessage.m Bob.messageDecrypted.m
+" />
+<TGConnectingPoint num="0" id="1277" />
+<TGConnectingPoint num="1" id="1278" />
+<TGConnectingPoint num="2" id="1279" />
+<TGConnectingPoint num="3" id="1280" />
+<TGConnectingPoint num="4" id="1281" />
+<TGConnectingPoint num="5" id="1282" />
+<TGConnectingPoint num="6" id="1283" />
+<TGConnectingPoint num="7" id="1284" />
+<TGConnectingPoint num="8" id="1285" />
+<TGConnectingPoint num="9" id="1286" />
+<TGConnectingPoint num="10" id="1287" />
+<TGConnectingPoint num="11" id="1288" />
+<TGConnectingPoint num="12" id="1289" />
+<TGConnectingPoint num="13" id="1290" />
+<TGConnectingPoint num="14" id="1291" />
+<TGConnectingPoint num="15" id="1292" />
+<extraparam>
+<Line value="#PrivatePublicKeys Alice privK pubK" />
+<Line value="#PrivatePublicKeys Bob privK pubK" />
+<Line value="#PrivatePublicKeys CA privK pubK" />
+<Line value="#InitialSystemKnowledge Bob.aliceID CA.aliceID" />
+<Line value="#InitialSystemKnowledge Alice.bobID CA.bobID" />
+<Line value="#InitialSystemKnowledge Alice.pubK CA.alicePubK" />
+<Line value="#InitialSystemKnowledge Bob.pubK CA.bobPubK" />
+<Line value="#InitialSystemKnowledge CA.pubK Alice.CAPubK Bob.CAPubK" />
+<Line value="" />
+<Line value="#Confidentiality Alice.secretData" />
+<Line value="#Authenticity Alice.sendingMessage.m Bob.messageDecrypted.m" />
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5003" id="1302" >
+<cdparam x="260" y="373" />
+<sizeparam width="129" height="61" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="DataType0" value="Message" />
+<TGConnectingPoint num="0" id="1294" />
+<TGConnectingPoint num="1" id="1295" />
+<TGConnectingPoint num="2" id="1296" />
+<TGConnectingPoint num="3" id="1297" />
+<TGConnectingPoint num="4" id="1298" />
+<TGConnectingPoint num="5" id="1299" />
+<TGConnectingPoint num="6" id="1300" />
+<TGConnectingPoint num="7" id="1301" />
+<extraparam>
+<Attribute access="0" id="data" value="" type="8" typeOther="" />
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5003" id="1311" >
+<cdparam x="68" y="372" />
+<sizeparam width="123" height="62" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="DataType0" value="Key" />
+<TGConnectingPoint num="0" id="1303" />
+<TGConnectingPoint num="1" id="1304" />
+<TGConnectingPoint num="2" id="1305" />
+<TGConnectingPoint num="3" id="1306" />
+<TGConnectingPoint num="4" id="1307" />
+<TGConnectingPoint num="5" id="1308" />
+<TGConnectingPoint num="6" id="1309" />
+<TGConnectingPoint num="7" id="1310" />
+<extraparam>
+<Attribute access="0" id="data" value="" type="8" typeOther="" />
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5000" id="1411" >
+<cdparam x="21" y="20" />
+<sizeparam width="438" height="344" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="Block0" value="System" />
+<TGConnectingPoint num="0" id="1387" />
+<TGConnectingPoint num="1" id="1388" />
+<TGConnectingPoint num="2" id="1389" />
+<TGConnectingPoint num="3" id="1390" />
+<TGConnectingPoint num="4" id="1391" />
+<TGConnectingPoint num="5" id="1392" />
+<TGConnectingPoint num="6" id="1393" />
+<TGConnectingPoint num="7" id="1394" />
+<TGConnectingPoint num="8" id="1395" />
+<TGConnectingPoint num="9" id="1396" />
+<TGConnectingPoint num="10" id="1397" />
+<TGConnectingPoint num="11" id="1398" />
+<TGConnectingPoint num="12" id="1399" />
+<TGConnectingPoint num="13" id="1400" />
+<TGConnectingPoint num="14" id="1401" />
+<TGConnectingPoint num="15" id="1402" />
+<TGConnectingPoint num="16" id="1403" />
+<TGConnectingPoint num="17" id="1404" />
+<TGConnectingPoint num="18" id="1405" />
+<TGConnectingPoint num="19" id="1406" />
+<TGConnectingPoint num="20" id="1407" />
+<TGConnectingPoint num="21" id="1408" />
+<TGConnectingPoint num="22" id="1409" />
+<TGConnectingPoint num="23" id="1410" />
+<extraparam>
+<CryptoBlock value="false" />
+<Signal value="in chin(Message msg)" attached="true" />
+<Signal value="out chout(Message msg)" attached="true" />
+</extraparam>
+</COMPONENT>
+<SUBCOMPONENT type="5000" id="1336" >
+<father id="1411" num="0" />
+<cdparam x="115" y="249" />
+<sizeparam width="261" height="83" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="0" maxX="177" minY="0" maxY="261" />
+<infoparam name="Block0" value="CA" />
+<TGConnectingPoint num="0" id="1312" />
+<TGConnectingPoint num="1" id="1313" />
+<TGConnectingPoint num="2" id="1314" />
+<TGConnectingPoint num="3" id="1315" />
+<TGConnectingPoint num="4" id="1316" />
+<TGConnectingPoint num="5" id="1317" />
+<TGConnectingPoint num="6" id="1318" />
+<TGConnectingPoint num="7" id="1319" />
+<TGConnectingPoint num="8" id="1320" />
+<TGConnectingPoint num="9" id="1321" />
+<TGConnectingPoint num="10" id="1322" />
+<TGConnectingPoint num="11" id="1323" />
+<TGConnectingPoint num="12" id="1324" />
+<TGConnectingPoint num="13" id="1325" />
+<TGConnectingPoint num="14" id="1326" />
+<TGConnectingPoint num="15" id="1327" />
+<TGConnectingPoint num="16" id="1328" />
+<TGConnectingPoint num="17" id="1329" />
+<TGConnectingPoint num="18" id="1330" />
+<TGConnectingPoint num="19" id="1331" />
+<TGConnectingPoint num="20" id="1332" />
+<TGConnectingPoint num="21" id="1333" />
+<TGConnectingPoint num="22" id="1334" />
+<TGConnectingPoint num="23" id="1335" />
+<extraparam>
+<CryptoBlock value="true" />
+<Attribute access="0" id="privK" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="pubK" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="alicePubK" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="bobPubK" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="aliceID" value="" type="8" typeOther="" />
+<Attribute access="0" id="bobID" value="" type="8" typeOther="" />
+<Attribute access="0" id="m" value="" type="5" typeOther="Message" />
+<Attribute access="0" id="newK" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="newCert" value="" type="5" typeOther="Message" />
+<Attribute access="0" id="m1" value="" type="5" typeOther="Message" />
+<Attribute access="0" id="m2" value="" type="5" typeOther="Message" />
+<Attribute access="0" id="newID" value="" type="8" typeOther="" />
+<Method value="Message aencrypt(Message msg, Key k)" />
+<Method value="Message adecrypt(Message msg, Key k)" />
+<Method value="Key pk(Key k)" />
+<Method value="Message sign(Message msg, Key k)" />
+<Method value="bool verifySign(Message msg1, Message sig, Key k)" />
+<Method value="Message cert(Key k, Message msg)" />
+<Method value="bool verifyCert(Message cert, Key k)" />
+<Method value="Key getpk(Message cert)" />
+<Method value="Message sencrypt(Message msg, Key k)" />
+<Method value="Message sdecrypt(Message msg, Key k)" />
+<Method value="Key DH(Key pubK, Key privK)" />
+<Method value="Message hash(Message msg)" />
+<Method value="Message MAC(Message msg, Key k)" />
+<Method value="bool verifyMAC(Message msg, Key k, Message macmsg)" />
+<Method value="Message concat2(Message msg1, Message msg2)" />
+<Method value="Message concat3(Message msg1, Message msg2, Message msg3)" />
+<Method value="Message concat4(Message msg1, Message msg2, Message msg3, Message msg4)" />
+<Method value="get2(Message msg, Message msg1, Message msg2)" />
+<Method value="get3(Message msg, Message msg1, Message msg2, Message msg3)" />
+<Method value="get4(Message msg, Message msg1, Message msg2, Message msg3, Message msg4)" />
+</extraparam>
+</SUBCOMPONENT>
+<SUBCOMPONENT type="5000" id="1361" >
+<father id="1411" num="1" />
+<cdparam x="36" y="108" />
+<sizeparam width="215" height="126" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="0" maxX="223" minY="0" maxY="218" />
+<infoparam name="Block0" value="Alice" />
+<TGConnectingPoint num="0" id="1337" />
+<TGConnectingPoint num="1" id="1338" />
+<TGConnectingPoint num="2" id="1339" />
+<TGConnectingPoint num="3" id="1340" />
+<TGConnectingPoint num="4" id="1341" />
+<TGConnectingPoint num="5" id="1342" />
+<TGConnectingPoint num="6" id="1343" />
+<TGConnectingPoint num="7" id="1344" />
+<TGConnectingPoint num="8" id="1345" />
+<TGConnectingPoint num="9" id="1346" />
+<TGConnectingPoint num="10" id="1347" />
+<TGConnectingPoint num="11" id="1348" />
+<TGConnectingPoint num="12" id="1349" />
+<TGConnectingPoint num="13" id="1350" />
+<TGConnectingPoint num="14" id="1351" />
+<TGConnectingPoint num="15" id="1352" />
+<TGConnectingPoint num="16" id="1353" />
+<TGConnectingPoint num="17" id="1354" />
+<TGConnectingPoint num="18" id="1355" />
+<TGConnectingPoint num="19" id="1356" />
+<TGConnectingPoint num="20" id="1357" />
+<TGConnectingPoint num="21" id="1358" />
+<TGConnectingPoint num="22" id="1359" />
+<TGConnectingPoint num="23" id="1360" />
+<extraparam>
+<CryptoBlock value="true" />
+<Attribute access="0" id="secretData" value="" type="8" typeOther="" />
+<Attribute access="0" id="m" value="" type="5" typeOther="Message" />
+<Attribute access="0" id="m1" value="" type="5" typeOther="Message" />
+<Attribute access="0" id="sk" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="pubK" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="privK" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="bobPubK" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="CAPubK" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="bobID" value="" type="8" typeOther="" />
+<Attribute access="0" id="m2" value="" type="5" typeOther="Message" />
+<Attribute access="0" id="sig" value="" type="5" typeOther="Message" />
+<Attribute access="0" id="certOK" value="" type="4" typeOther="" />
+<Method value="Message encrypt(Message msg, Key k)" />
+<Method value="Message decrypt(Message msg, Key k)" />
+<Method value="Message sencrypt(Message msg, Key k)" />
+<Method value="Message sdecrypt(Message msg, Key k)" />
+<Method value="Message MAC(Message msg, Key k)" />
+<Method value="bool verifyMAC(Message msg, Key k, Message macmsg)" />
+<Method value="Message concat2(Message msg1, Message msg2)" />
+<Method value="Message concat3(Message msg1, Message msg2, Message msg3)" />
+<Method value="Message concat4(Message msg1, Message msg2, Message msg3, Message msg4)" />
+<Method value="get2(Message msg, Message msg1, Message msg2)" />
+<Method value="get3(Message msg, Message msg1, Message msg2, Message msg3)" />
+<Method value="get4(Message msg, Message msg1, Message msg2, Message msg3, Message msg4)" />
+<Method value="Message aencrypt(Message msg, Key k)" />
+<Method value="Message adecrypt(Message msg, Key k)" />
+<Method value="Key pk(Key k)" />
+<Method value="Message sign(Message msg, Key k)" />
+<Method value="bool verifySign(Message msg1, Message sig, Key k)" />
+<Method value="Message cert(Key k, Message msg)" />
+<Method value="bool verifyCert(Message cert, Key k)" />
+<Method value="Key getpk(Message cert)" />
+<Method value="Key DH(Key pubK, Key privK)" />
+<Method value="Message hash(Message msg)" />
+</extraparam>
+</SUBCOMPONENT>
+<SUBCOMPONENT type="5000" id="1386" >
+<father id="1411" num="2" />
+<cdparam x="263" y="108" />
+<sizeparam width="139" height="126" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="0" maxX="299" minY="0" maxY="218" />
+<infoparam name="Block0" value="Bob" />
+<TGConnectingPoint num="0" id="1362" />
+<TGConnectingPoint num="1" id="1363" />
+<TGConnectingPoint num="2" id="1364" />
+<TGConnectingPoint num="3" id="1365" />
+<TGConnectingPoint num="4" id="1366" />
+<TGConnectingPoint num="5" id="1367" />
+<TGConnectingPoint num="6" id="1368" />
+<TGConnectingPoint num="7" id="1369" />
+<TGConnectingPoint num="8" id="1370" />
+<TGConnectingPoint num="9" id="1371" />
+<TGConnectingPoint num="10" id="1372" />
+<TGConnectingPoint num="11" id="1373" />
+<TGConnectingPoint num="12" id="1374" />
+<TGConnectingPoint num="13" id="1375" />
+<TGConnectingPoint num="14" id="1376" />
+<TGConnectingPoint num="15" id="1377" />
+<TGConnectingPoint num="16" id="1378" />
+<TGConnectingPoint num="17" id="1379" />
+<TGConnectingPoint num="18" id="1380" />
+<TGConnectingPoint num="19" id="1381" />
+<TGConnectingPoint num="20" id="1382" />
+<TGConnectingPoint num="21" id="1383" />
+<TGConnectingPoint num="22" id="1384" />
+<TGConnectingPoint num="23" id="1385" />
+<extraparam>
+<CryptoBlock value="true" />
+<Attribute access="0" id="m" value="" type="5" typeOther="Message" />
+<Attribute access="0" id="m2" value="" type="5" typeOther="Message" />
+<Attribute access="0" id="sk" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="receivedData" value="" type="8" typeOther="" />
+<Attribute access="0" id="privK" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="pubK" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="alicePubK" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="CAPubK" value="" type="5" typeOther="Key" />
+<Attribute access="0" id="aliceID" value="" type="8" typeOther="" />
+<Attribute access="0" id="m1" value="" type="5" typeOther="Message" />
+<Attribute access="0" id="sig" value="" type="5" typeOther="Message" />
+<Attribute access="0" id="certOK" value="" type="4" typeOther="" />
+<Method value="Message encrypt(Message msg, Key k)" />
+<Method value="Message decrypt(Message msg, Key k)" />
+<Method value="Message sencrypt(Message msg, Key k)" />
+<Method value="Message sdecrypt(Message msg, Key k)" />
+<Method value="Message MAC(Message msg, Key k)" />
+<Method value="bool verifyMAC(Message msg, Key k, Message macmsg)" />
+<Method value="Message concat2(Message msg1, Message msg2)" />
+<Method value="Message concat3(Message msg1, Message msg2, Message msg3)" />
+<Method value="Message concat4(Message msg1, Message msg2, Message msg3, Message msg4)" />
+<Method value="get2(Message msg, Message msg1, Message msg2)" />
+<Method value="get3(Message msg, Message msg1, Message msg2, Message msg3)" />
+<Method value="get4(Message msg, Message msg1, Message msg2, Message msg3, Message msg4)" />
+<Method value="Message aencrypt(Message msg, Key k)" />
+<Method value="Message adecrypt(Message msg, Key k)" />
+<Method value="Key pk(Key k)" />
+<Method value="Message sign(Message msg, Key k)" />
+<Method value="bool verifySign(Message msg1, Message sig, Key k)" />
+<Method value="Message cert(Key k, Message msg)" />
+<Method value="bool verifyCert(Message cert, Key k)" />
+<Method value="Key getpk(Message cert)" />
+<Method value="Key DH(Key pubK, Key privK)" />
+<Method value="Message hash(Message msg)" />
+</extraparam>
+</SUBCOMPONENT>
+
+
+</AVATARBlockDiagramPanel>
+
+<AVATARStateMachineDiagramPanel name="System" minX="10" maxX="1400" minY="10" maxY="900" >
+<COMPONENT type="5100" id="1413" >
+<cdparam x="400" y="50" />
+<sizeparam width="15" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="start state" value="null" />
+<TGConnectingPoint num="0" id="1412" />
+</COMPONENT>
+
+
+</AVATARStateMachineDiagramPanel>
+
+<AVATARStateMachineDiagramPanel name="Bob" minX="10" maxX="1400" minY="10" maxY="900" >
+<CONNECTOR type="5102" id="1420" >
+<cdparam x="407" y="70" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="1419" />
+<P1  x="407" y="70" id="1738" />
+<P2  x="413" y="90" id="1523" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="1418" >
+<father id="1420" num="0" />
+<cdparam x="404" y="80" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="1414" />
+<TGConnectingPoint num="1" id="1415" />
+<TGConnectingPoint num="2" id="1416" />
+<TGConnectingPoint num="3" id="1417" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="1427" >
+<cdparam x="418" y="632" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector from state0 to state0" value="null" />
+<TGConnectingPoint num="0" id="1426" />
+<P1  x="418" y="632" id="1569" />
+<P2  x="422" y="677" id="1605" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="1425" >
+<father id="1427" num="0" />
+<cdparam x="433" y="656" />
+<sizeparam width="145" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="1421" />
+<TGConnectingPoint num="1" id="1422" />
+<TGConnectingPoint num="2" id="1423" />
+<TGConnectingPoint num="3" id="1424" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+<actions value="receivedData = m.data" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="1434" >
+<cdparam x="409" y="526" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector from state0 to state0" value="null" />
+<TGConnectingPoint num="0" id="1433" />
+<P1  x="409" y="526" id="1651" />
+<P2  x="418" y="592" id="1564" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="1432" >
+<father id="1434" num="0" />
+<cdparam x="431" y="551" />
+<sizeparam width="157" height="30" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="1428" />
+<TGConnectingPoint num="1" id="1429" />
+<TGConnectingPoint num="2" id="1430" />
+<TGConnectingPoint num="3" id="1431" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+<actions value="sk = DH(alicePubK, privK)" />
+<actions value="m = sdecrypt(m2, sk)" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="1441" >
+<cdparam x="408" y="454" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector from Send signal to state0" value="null" />
+<TGConnectingPoint num="0" id="1440" />
+<P1  x="408" y="454" id="1687" />
+<P2  x="409" y="486" id="1646" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="1439" >
+<father id="1441" num="0" />
+<cdparam x="408" y="494" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="1435" />
+<TGConnectingPoint num="1" id="1436" />
+<TGConnectingPoint num="2" id="1437" />
+<TGConnectingPoint num="3" id="1438" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="1448" >
+<cdparam x="408" y="394" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector from state0 to Send signal" value="null" />
+<TGConnectingPoint num="0" id="1447" />
+<P1  x="408" y="394" id="1703" />
+<P2  x="408" y="424" id="1686" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="1446" >
+<father id="1448" num="0" />
+<cdparam x="408" y="434" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="1442" />
+<TGConnectingPoint num="1" id="1443" />
+<TGConnectingPoint num="2" id="1444" />
+<TGConnectingPoint num="3" id="1445" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="1455" >
+<cdparam x="409" y="265" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="1454" />
+<P1  x="413" y="128" id="1528" />
+<P2  x="412" y="159" id="1511" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="1453" >
+<father id="1455" num="0" />
+<cdparam x="409" y="281" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="1449" />
+<TGConnectingPoint num="1" id="1450" />
+<TGConnectingPoint num="2" id="1451" />
+<TGConnectingPoint num="3" id="1452" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="1462" >
+<cdparam x="410" y="327" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="1461" />
+<P1  x="412" y="189" id="1512" />
+<P2  x="410" y="267" id="1471" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="1460" >
+<father id="1462" num="0" />
+<cdparam x="456" y="193" />
+<sizeparam width="228" height="75" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="1456" />
+<TGConnectingPoint num="1" id="1457" />
+<TGConnectingPoint num="2" id="1458" />
+<TGConnectingPoint num="3" id="1459" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+<actions value="get2(m, m1, sig)" />
+<actions value="get2(m1, m, m2)" />
+<actions value="m2.data = aliceID" />
+<actions value="m1 = concat2(m, m2)" />
+<actions value="certOK = verifySign(m1, sig, CAPubK)" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="1469" >
+<cdparam x="423" y="345" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="1468" />
+<P1  x="435" y="297" id="1485" />
+<P2  x="423" y="354" id="1715" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="1467" >
+<father id="1469" num="0" />
+<cdparam x="450" y="315" />
+<sizeparam width="155" height="30" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="1463" />
+<TGConnectingPoint num="1" id="1464" />
+<TGConnectingPoint num="2" id="1465" />
+<TGConnectingPoint num="3" id="1466" />
+<extraparam>
+<guard value="[ certOK ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+<actions value="alicePubK.data = m.data" />
+</extraparam>
+</SUBCOMPONENT>
+
+<COMPONENT type="5106" id="1510" >
+<cdparam x="360" y="267" />
+<sizeparam width="100" height="30" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="State" value="verifyCert" />
+<TGConnectingPoint num="0" id="1470" />
+<TGConnectingPoint num="1" id="1471" />
+<TGConnectingPoint num="2" id="1472" />
+<TGConnectingPoint num="3" id="1473" />
+<TGConnectingPoint num="4" id="1474" />
+<TGConnectingPoint num="5" id="1475" />
+<TGConnectingPoint num="6" id="1476" />
+<TGConnectingPoint num="7" id="1477" />
+<TGConnectingPoint num="8" id="1478" />
+<TGConnectingPoint num="9" id="1479" />
+<TGConnectingPoint num="10" id="1480" />
+<TGConnectingPoint num="11" id="1481" />
+<TGConnectingPoint num="12" id="1482" />
+<TGConnectingPoint num="13" id="1483" />
+<TGConnectingPoint num="14" id="1484" />
+<TGConnectingPoint num="15" id="1485" />
+<TGConnectingPoint num="16" id="1486" />
+<TGConnectingPoint num="17" id="1487" />
+<TGConnectingPoint num="18" id="1488" />
+<TGConnectingPoint num="19" id="1489" />
+<TGConnectingPoint num="20" id="1490" />
+<TGConnectingPoint num="21" id="1491" />
+<TGConnectingPoint num="22" id="1492" />
+<TGConnectingPoint num="23" id="1493" />
+<TGConnectingPoint num="24" id="1494" />
+<TGConnectingPoint num="25" id="1495" />
+<TGConnectingPoint num="26" id="1496" />
+<TGConnectingPoint num="27" id="1497" />
+<TGConnectingPoint num="28" id="1498" />
+<TGConnectingPoint num="29" id="1499" />
+<TGConnectingPoint num="30" id="1500" />
+<TGConnectingPoint num="31" id="1501" />
+<TGConnectingPoint num="32" id="1502" />
+<TGConnectingPoint num="33" id="1503" />
+<TGConnectingPoint num="34" id="1504" />
+<TGConnectingPoint num="35" id="1505" />
+<TGConnectingPoint num="36" id="1506" />
+<TGConnectingPoint num="37" id="1507" />
+<TGConnectingPoint num="38" id="1508" />
+<TGConnectingPoint num="39" id="1509" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5104" id="1521" >
+<cdparam x="380" y="164" />
+<sizeparam width="65" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="Receive signal" value="chin(m)" />
+<TGConnectingPoint num="0" id="1511" />
+<TGConnectingPoint num="1" id="1512" />
+<TGConnectingPoint num="2" id="1513" />
+<TGConnectingPoint num="3" id="1514" />
+<TGConnectingPoint num="4" id="1515" />
+<TGConnectingPoint num="5" id="1516" />
+<TGConnectingPoint num="6" id="1517" />
+<TGConnectingPoint num="7" id="1518" />
+<TGConnectingPoint num="8" id="1519" />
+<TGConnectingPoint num="9" id="1520" />
+</COMPONENT>
+
+<COMPONENT type="5106" id="1562" >
+<cdparam x="341" y="90" />
+<sizeparam width="144" height="38" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="State" value="receivingAliceCert" />
+<TGConnectingPoint num="0" id="1522" />
+<TGConnectingPoint num="1" id="1523" />
+<TGConnectingPoint num="2" id="1524" />
+<TGConnectingPoint num="3" id="1525" />
+<TGConnectingPoint num="4" id="1526" />
+<TGConnectingPoint num="5" id="1527" />
+<TGConnectingPoint num="6" id="1528" />
+<TGConnectingPoint num="7" id="1529" />
+<TGConnectingPoint num="8" id="1530" />
+<TGConnectingPoint num="9" id="1531" />
+<TGConnectingPoint num="10" id="1532" />
+<TGConnectingPoint num="11" id="1533" />
+<TGConnectingPoint num="12" id="1534" />
+<TGConnectingPoint num="13" id="1535" />
+<TGConnectingPoint num="14" id="1536" />
+<TGConnectingPoint num="15" id="1537" />
+<TGConnectingPoint num="16" id="1538" />
+<TGConnectingPoint num="17" id="1539" />
+<TGConnectingPoint num="18" id="1540" />
+<TGConnectingPoint num="19" id="1541" />
+<TGConnectingPoint num="20" id="1542" />
+<TGConnectingPoint num="21" id="1543" />
+<TGConnectingPoint num="22" id="1544" />
+<TGConnectingPoint num="23" id="1545" />
+<TGConnectingPoint num="24" id="1546" />
+<TGConnectingPoint num="25" id="1547" />
+<TGConnectingPoint num="26" id="1548" />
+<TGConnectingPoint num="27" id="1549" />
+<TGConnectingPoint num="28" id="1550" />
+<TGConnectingPoint num="29" id="1551" />
+<TGConnectingPoint num="30" id="1552" />
+<TGConnectingPoint num="31" id="1553" />
+<TGConnectingPoint num="32" id="1554" />
+<TGConnectingPoint num="33" id="1555" />
+<TGConnectingPoint num="34" id="1556" />
+<TGConnectingPoint num="35" id="1557" />
+<TGConnectingPoint num="36" id="1558" />
+<TGConnectingPoint num="37" id="1559" />
+<TGConnectingPoint num="38" id="1560" />
+<TGConnectingPoint num="39" id="1561" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5106" id="1603" >
+<cdparam x="329" y="592" />
+<sizeparam width="178" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="state0" value="messageDecrypted" />
+<TGConnectingPoint num="0" id="1563" />
+<TGConnectingPoint num="1" id="1564" />
+<TGConnectingPoint num="2" id="1565" />
+<TGConnectingPoint num="3" id="1566" />
+<TGConnectingPoint num="4" id="1567" />
+<TGConnectingPoint num="5" id="1568" />
+<TGConnectingPoint num="6" id="1569" />
+<TGConnectingPoint num="7" id="1570" />
+<TGConnectingPoint num="8" id="1571" />
+<TGConnectingPoint num="9" id="1572" />
+<TGConnectingPoint num="10" id="1573" />
+<TGConnectingPoint num="11" id="1574" />
+<TGConnectingPoint num="12" id="1575" />
+<TGConnectingPoint num="13" id="1576" />
+<TGConnectingPoint num="14" id="1577" />
+<TGConnectingPoint num="15" id="1578" />
+<TGConnectingPoint num="16" id="1579" />
+<TGConnectingPoint num="17" id="1580" />
+<TGConnectingPoint num="18" id="1581" />
+<TGConnectingPoint num="19" id="1582" />
+<TGConnectingPoint num="20" id="1583" />
+<TGConnectingPoint num="21" id="1584" />
+<TGConnectingPoint num="22" id="1585" />
+<TGConnectingPoint num="23" id="1586" />
+<TGConnectingPoint num="24" id="1587" />
+<TGConnectingPoint num="25" id="1588" />
+<TGConnectingPoint num="26" id="1589" />
+<TGConnectingPoint num="27" id="1590" />
+<TGConnectingPoint num="28" id="1591" />
+<TGConnectingPoint num="29" id="1592" />
+<TGConnectingPoint num="30" id="1593" />
+<TGConnectingPoint num="31" id="1594" />
+<TGConnectingPoint num="32" id="1595" />
+<TGConnectingPoint num="33" id="1596" />
+<TGConnectingPoint num="34" id="1597" />
+<TGConnectingPoint num="35" id="1598" />
+<TGConnectingPoint num="36" id="1599" />
+<TGConnectingPoint num="37" id="1600" />
+<TGConnectingPoint num="38" id="1601" />
+<TGConnectingPoint num="39" id="1602" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5106" id="1644" >
+<cdparam x="352" y="677" />
+<sizeparam width="140" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="state0" value="SecretDataReceived" />
+<TGConnectingPoint num="0" id="1604" />
+<TGConnectingPoint num="1" id="1605" />
+<TGConnectingPoint num="2" id="1606" />
+<TGConnectingPoint num="3" id="1607" />
+<TGConnectingPoint num="4" id="1608" />
+<TGConnectingPoint num="5" id="1609" />
+<TGConnectingPoint num="6" id="1610" />
+<TGConnectingPoint num="7" id="1611" />
+<TGConnectingPoint num="8" id="1612" />
+<TGConnectingPoint num="9" id="1613" />
+<TGConnectingPoint num="10" id="1614" />
+<TGConnectingPoint num="11" id="1615" />
+<TGConnectingPoint num="12" id="1616" />
+<TGConnectingPoint num="13" id="1617" />
+<TGConnectingPoint num="14" id="1618" />
+<TGConnectingPoint num="15" id="1619" />
+<TGConnectingPoint num="16" id="1620" />
+<TGConnectingPoint num="17" id="1621" />
+<TGConnectingPoint num="18" id="1622" />
+<TGConnectingPoint num="19" id="1623" />
+<TGConnectingPoint num="20" id="1624" />
+<TGConnectingPoint num="21" id="1625" />
+<TGConnectingPoint num="22" id="1626" />
+<TGConnectingPoint num="23" id="1627" />
+<TGConnectingPoint num="24" id="1628" />
+<TGConnectingPoint num="25" id="1629" />
+<TGConnectingPoint num="26" id="1630" />
+<TGConnectingPoint num="27" id="1631" />
+<TGConnectingPoint num="28" id="1632" />
+<TGConnectingPoint num="29" id="1633" />
+<TGConnectingPoint num="30" id="1634" />
+<TGConnectingPoint num="31" id="1635" />
+<TGConnectingPoint num="32" id="1636" />
+<TGConnectingPoint num="33" id="1637" />
+<TGConnectingPoint num="34" id="1638" />
+<TGConnectingPoint num="35" id="1639" />
+<TGConnectingPoint num="36" id="1640" />
+<TGConnectingPoint num="37" id="1641" />
+<TGConnectingPoint num="38" id="1642" />
+<TGConnectingPoint num="39" id="1643" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5106" id="1685" >
+<cdparam x="338" y="486" />
+<sizeparam width="142" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="state0" value="messageDecrypt" />
+<TGConnectingPoint num="0" id="1645" />
+<TGConnectingPoint num="1" id="1646" />
+<TGConnectingPoint num="2" id="1647" />
+<TGConnectingPoint num="3" id="1648" />
+<TGConnectingPoint num="4" id="1649" />
+<TGConnectingPoint num="5" id="1650" />
+<TGConnectingPoint num="6" id="1651" />
+<TGConnectingPoint num="7" id="1652" />
+<TGConnectingPoint num="8" id="1653" />
+<TGConnectingPoint num="9" id="1654" />
+<TGConnectingPoint num="10" id="1655" />
+<TGConnectingPoint num="11" id="1656" />
+<TGConnectingPoint num="12" id="1657" />
+<TGConnectingPoint num="13" id="1658" />
+<TGConnectingPoint num="14" id="1659" />
+<TGConnectingPoint num="15" id="1660" />
+<TGConnectingPoint num="16" id="1661" />
+<TGConnectingPoint num="17" id="1662" />
+<TGConnectingPoint num="18" id="1663" />
+<TGConnectingPoint num="19" id="1664" />
+<TGConnectingPoint num="20" id="1665" />
+<TGConnectingPoint num="21" id="1666" />
+<TGConnectingPoint num="22" id="1667" />
+<TGConnectingPoint num="23" id="1668" />
+<TGConnectingPoint num="24" id="1669" />
+<TGConnectingPoint num="25" id="1670" />
+<TGConnectingPoint num="26" id="1671" />
+<TGConnectingPoint num="27" id="1672" />
+<TGConnectingPoint num="28" id="1673" />
+<TGConnectingPoint num="29" id="1674" />
+<TGConnectingPoint num="30" id="1675" />
+<TGConnectingPoint num="31" id="1676" />
+<TGConnectingPoint num="32" id="1677" />
+<TGConnectingPoint num="33" id="1678" />
+<TGConnectingPoint num="34" id="1679" />
+<TGConnectingPoint num="35" id="1680" />
+<TGConnectingPoint num="36" id="1681" />
+<TGConnectingPoint num="37" id="1682" />
+<TGConnectingPoint num="38" id="1683" />
+<TGConnectingPoint num="39" id="1684" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5104" id="1696" >
+<cdparam x="372" y="429" />
+<sizeparam width="73" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="Send signal" value="chin(m2)" />
+<TGConnectingPoint num="0" id="1686" />
+<TGConnectingPoint num="1" id="1687" />
+<TGConnectingPoint num="2" id="1688" />
+<TGConnectingPoint num="3" id="1689" />
+<TGConnectingPoint num="4" id="1690" />
+<TGConnectingPoint num="5" id="1691" />
+<TGConnectingPoint num="6" id="1692" />
+<TGConnectingPoint num="7" id="1693" />
+<TGConnectingPoint num="8" id="1694" />
+<TGConnectingPoint num="9" id="1695" />
+</COMPONENT>
+
+<COMPONENT type="5106" id="1737" >
+<cdparam x="342" y="354" />
+<sizeparam width="132" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="state0" value="waitingForMessage" />
+<TGConnectingPoint num="0" id="1697" />
+<TGConnectingPoint num="1" id="1698" />
+<TGConnectingPoint num="2" id="1699" />
+<TGConnectingPoint num="3" id="1700" />
+<TGConnectingPoint num="4" id="1701" />
+<TGConnectingPoint num="5" id="1702" />
+<TGConnectingPoint num="6" id="1703" />
+<TGConnectingPoint num="7" id="1704" />
+<TGConnectingPoint num="8" id="1705" />
+<TGConnectingPoint num="9" id="1706" />
+<TGConnectingPoint num="10" id="1707" />
+<TGConnectingPoint num="11" id="1708" />
+<TGConnectingPoint num="12" id="1709" />
+<TGConnectingPoint num="13" id="1710" />
+<TGConnectingPoint num="14" id="1711" />
+<TGConnectingPoint num="15" id="1712" />
+<TGConnectingPoint num="16" id="1713" />
+<TGConnectingPoint num="17" id="1714" />
+<TGConnectingPoint num="18" id="1715" />
+<TGConnectingPoint num="19" id="1716" />
+<TGConnectingPoint num="20" id="1717" />
+<TGConnectingPoint num="21" id="1718" />
+<TGConnectingPoint num="22" id="1719" />
+<TGConnectingPoint num="23" id="1720" />
+<TGConnectingPoint num="24" id="1721" />
+<TGConnectingPoint num="25" id="1722" />
+<TGConnectingPoint num="26" id="1723" />
+<TGConnectingPoint num="27" id="1724" />
+<TGConnectingPoint num="28" id="1725" />
+<TGConnectingPoint num="29" id="1726" />
+<TGConnectingPoint num="30" id="1727" />
+<TGConnectingPoint num="31" id="1728" />
+<TGConnectingPoint num="32" id="1729" />
+<TGConnectingPoint num="33" id="1730" />
+<TGConnectingPoint num="34" id="1731" />
+<TGConnectingPoint num="35" id="1732" />
+<TGConnectingPoint num="36" id="1733" />
+<TGConnectingPoint num="37" id="1734" />
+<TGConnectingPoint num="38" id="1735" />
+<TGConnectingPoint num="39" id="1736" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5100" id="1739" >
+<cdparam x="400" y="50" />
+<sizeparam width="15" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="start state" value="null" />
+<TGConnectingPoint num="0" id="1738" />
+</COMPONENT>
+
+
+</AVATARStateMachineDiagramPanel>
+
+<AVATARStateMachineDiagramPanel name="Alice" minX="10" maxX="1400" minY="10" maxY="900" >
+<CONNECTOR type="5102" id="1746" >
+<cdparam x="407" y="70" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="1745" />
+<P1  x="407" y="70" id="2025" />
+<P2  x="412" y="100" id="1849" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="1744" >
+<father id="1746" num="0" />
+<cdparam x="409" y="85" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="1740" />
+<TGConnectingPoint num="1" id="1741" />
+<TGConnectingPoint num="2" id="1742" />
+<TGConnectingPoint num="3" id="1743" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="1753" >
+<cdparam x="411" y="567" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="1752" />
+<P1  x="411" y="567" id="1931" />
+<P2  x="420" y="613" id="1890" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="1751" >
+<father id="1753" num="0" />
+<cdparam x="453" y="610" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="1747" />
+<TGConnectingPoint num="1" id="1748" />
+<TGConnectingPoint num="2" id="1749" />
+<TGConnectingPoint num="3" id="1750" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="1760" >
+<cdparam x="496" y="703" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="1759" />
+<P1  x="420" y="663" id="1895" />
+<P2  x="438" y="703" id="1941" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="1758" >
+<father id="1760" num="0" />
+<cdparam x="453" y="697" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="1754" />
+<TGConnectingPoint num="1" id="1755" />
+<TGConnectingPoint num="2" id="1756" />
+<TGConnectingPoint num="3" id="1757" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="1767" >
+<cdparam x="411" y="508" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector from state0 to stop state" value="null" />
+<TGConnectingPoint num="0" id="1766" />
+<P1  x="411" y="508" id="1949" />
+<P2  x="411" y="537" id="1930" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="1765" >
+<father id="1767" num="0" />
+<cdparam x="411" y="548" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="1761" />
+<TGConnectingPoint num="1" id="1762" />
+<TGConnectingPoint num="2" id="1763" />
+<TGConnectingPoint num="3" id="1764" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="1774" >
+<cdparam x="411" y="389" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector from state0 to state0" value="null" />
+<TGConnectingPoint num="0" id="1773" />
+<P1  x="411" y="389" id="1990" />
+<P2  x="411" y="468" id="1944" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="1772" >
+<father id="1774" num="0" />
+<cdparam x="439" y="414" />
+<sizeparam width="152" height="45" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="1768" />
+<TGConnectingPoint num="1" id="1769" />
+<TGConnectingPoint num="2" id="1770" />
+<TGConnectingPoint num="3" id="1771" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+<actions value="sk = DH(bobPubK, privK)" />
+<actions value="m.data = secretData" />
+<actions value="m1 = sencrypt(m, sk)" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="1781" >
+<cdparam x="380" y="258" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="1780" />
+<P1  x="393" y="134" id="1877" />
+<P2  x="394" y="160" id="1837" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="1779" >
+<father id="1781" num="0" />
+<cdparam x="377" y="267" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="1775" />
+<TGConnectingPoint num="1" id="1776" />
+<TGConnectingPoint num="2" id="1777" />
+<TGConnectingPoint num="3" id="1778" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="1788" >
+<cdparam x="412" y="134" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="1787" />
+<P1  x="394" y="190" id="1838" />
+<P2  x="396" y="253" id="1797" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="1786" >
+<father id="1788" num="0" />
+<cdparam x="462" y="185" />
+<sizeparam width="228" height="75" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="1782" />
+<TGConnectingPoint num="1" id="1783" />
+<TGConnectingPoint num="2" id="1784" />
+<TGConnectingPoint num="3" id="1785" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+<actions value="get2(m, m1, sig)" />
+<actions value="get2(m1, m, m2)" />
+<actions value="m2.data = bobID" />
+<actions value="m1 = concat2(m, m2)" />
+<actions value="certOK = verifySign(m1, sig, CAPubK)" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="1795" >
+<cdparam x="408" y="272" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="1794" />
+<P1  x="396" y="283" id="1802" />
+<P2  x="411" y="349" id="1985" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="1793" >
+<father id="1795" num="0" />
+<cdparam x="427" y="308" />
+<sizeparam width="150" height="30" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="1789" />
+<TGConnectingPoint num="1" id="1790" />
+<TGConnectingPoint num="2" id="1791" />
+<TGConnectingPoint num="3" id="1792" />
+<extraparam>
+<guard value="[ certOK ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+<actions value="bobPubK.data = m.data" />
+</extraparam>
+</SUBCOMPONENT>
+
+<COMPONENT type="5106" id="1836" >
+<cdparam x="346" y="253" />
+<sizeparam width="100" height="30" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="State" value="verifyCert" />
+<TGConnectingPoint num="0" id="1796" />
+<TGConnectingPoint num="1" id="1797" />
+<TGConnectingPoint num="2" id="1798" />
+<TGConnectingPoint num="3" id="1799" />
+<TGConnectingPoint num="4" id="1800" />
+<TGConnectingPoint num="5" id="1801" />
+<TGConnectingPoint num="6" id="1802" />
+<TGConnectingPoint num="7" id="1803" />
+<TGConnectingPoint num="8" id="1804" />
+<TGConnectingPoint num="9" id="1805" />
+<TGConnectingPoint num="10" id="1806" />
+<TGConnectingPoint num="11" id="1807" />
+<TGConnectingPoint num="12" id="1808" />
+<TGConnectingPoint num="13" id="1809" />
+<TGConnectingPoint num="14" id="1810" />
+<TGConnectingPoint num="15" id="1811" />
+<TGConnectingPoint num="16" id="1812" />
+<TGConnectingPoint num="17" id="1813" />
+<TGConnectingPoint num="18" id="1814" />
+<TGConnectingPoint num="19" id="1815" />
+<TGConnectingPoint num="20" id="1816" />
+<TGConnectingPoint num="21" id="1817" />
+<TGConnectingPoint num="22" id="1818" />
+<TGConnectingPoint num="23" id="1819" />
+<TGConnectingPoint num="24" id="1820" />
+<TGConnectingPoint num="25" id="1821" />
+<TGConnectingPoint num="26" id="1822" />
+<TGConnectingPoint num="27" id="1823" />
+<TGConnectingPoint num="28" id="1824" />
+<TGConnectingPoint num="29" id="1825" />
+<TGConnectingPoint num="30" id="1826" />
+<TGConnectingPoint num="31" id="1827" />
+<TGConnectingPoint num="32" id="1828" />
+<TGConnectingPoint num="33" id="1829" />
+<TGConnectingPoint num="34" id="1830" />
+<TGConnectingPoint num="35" id="1831" />
+<TGConnectingPoint num="36" id="1832" />
+<TGConnectingPoint num="37" id="1833" />
+<TGConnectingPoint num="38" id="1834" />
+<TGConnectingPoint num="39" id="1835" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5104" id="1847" >
+<cdparam x="362" y="165" />
+<sizeparam width="65" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="Receive signal" value="chin(m)" />
+<TGConnectingPoint num="0" id="1837" />
+<TGConnectingPoint num="1" id="1838" />
+<TGConnectingPoint num="2" id="1839" />
+<TGConnectingPoint num="3" id="1840" />
+<TGConnectingPoint num="4" id="1841" />
+<TGConnectingPoint num="5" id="1842" />
+<TGConnectingPoint num="6" id="1843" />
+<TGConnectingPoint num="7" id="1844" />
+<TGConnectingPoint num="8" id="1845" />
+<TGConnectingPoint num="9" id="1846" />
+</COMPONENT>
+
+<COMPONENT type="5106" id="1888" >
+<cdparam x="339" y="100" />
+<sizeparam width="147" height="34" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="State" value="receivingBobCert" />
+<TGConnectingPoint num="0" id="1848" />
+<TGConnectingPoint num="1" id="1849" />
+<TGConnectingPoint num="2" id="1850" />
+<TGConnectingPoint num="3" id="1851" />
+<TGConnectingPoint num="4" id="1852" />
+<TGConnectingPoint num="5" id="1853" />
+<TGConnectingPoint num="6" id="1854" />
+<TGConnectingPoint num="7" id="1855" />
+<TGConnectingPoint num="8" id="1856" />
+<TGConnectingPoint num="9" id="1857" />
+<TGConnectingPoint num="10" id="1858" />
+<TGConnectingPoint num="11" id="1859" />
+<TGConnectingPoint num="12" id="1860" />
+<TGConnectingPoint num="13" id="1861" />
+<TGConnectingPoint num="14" id="1862" />
+<TGConnectingPoint num="15" id="1863" />
+<TGConnectingPoint num="16" id="1864" />
+<TGConnectingPoint num="17" id="1865" />
+<TGConnectingPoint num="18" id="1866" />
+<TGConnectingPoint num="19" id="1867" />
+<TGConnectingPoint num="20" id="1868" />
+<TGConnectingPoint num="21" id="1869" />
+<TGConnectingPoint num="22" id="1870" />
+<TGConnectingPoint num="23" id="1871" />
+<TGConnectingPoint num="24" id="1872" />
+<TGConnectingPoint num="25" id="1873" />
+<TGConnectingPoint num="26" id="1874" />
+<TGConnectingPoint num="27" id="1875" />
+<TGConnectingPoint num="28" id="1876" />
+<TGConnectingPoint num="29" id="1877" />
+<TGConnectingPoint num="30" id="1878" />
+<TGConnectingPoint num="31" id="1879" />
+<TGConnectingPoint num="32" id="1880" />
+<TGConnectingPoint num="33" id="1881" />
+<TGConnectingPoint num="34" id="1882" />
+<TGConnectingPoint num="35" id="1883" />
+<TGConnectingPoint num="36" id="1884" />
+<TGConnectingPoint num="37" id="1885" />
+<TGConnectingPoint num="38" id="1886" />
+<TGConnectingPoint num="39" id="1887" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5106" id="1929" >
+<cdparam x="370" y="613" />
+<sizeparam width="100" height="50" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="State" value="beforeFinish" />
+<TGConnectingPoint num="0" id="1889" />
+<TGConnectingPoint num="1" id="1890" />
+<TGConnectingPoint num="2" id="1891" />
+<TGConnectingPoint num="3" id="1892" />
+<TGConnectingPoint num="4" id="1893" />
+<TGConnectingPoint num="5" id="1894" />
+<TGConnectingPoint num="6" id="1895" />
+<TGConnectingPoint num="7" id="1896" />
+<TGConnectingPoint num="8" id="1897" />
+<TGConnectingPoint num="9" id="1898" />
+<TGConnectingPoint num="10" id="1899" />
+<TGConnectingPoint num="11" id="1900" />
+<TGConnectingPoint num="12" id="1901" />
+<TGConnectingPoint num="13" id="1902" />
+<TGConnectingPoint num="14" id="1903" />
+<TGConnectingPoint num="15" id="1904" />
+<TGConnectingPoint num="16" id="1905" />
+<TGConnectingPoint num="17" id="1906" />
+<TGConnectingPoint num="18" id="1907" />
+<TGConnectingPoint num="19" id="1908" />
+<TGConnectingPoint num="20" id="1909" />
+<TGConnectingPoint num="21" id="1910" />
+<TGConnectingPoint num="22" id="1911" />
+<TGConnectingPoint num="23" id="1912" />
+<TGConnectingPoint num="24" id="1913" />
+<TGConnectingPoint num="25" id="1914" />
+<TGConnectingPoint num="26" id="1915" />
+<TGConnectingPoint num="27" id="1916" />
+<TGConnectingPoint num="28" id="1917" />
+<TGConnectingPoint num="29" id="1918" />
+<TGConnectingPoint num="30" id="1919" />
+<TGConnectingPoint num="31" id="1920" />
+<TGConnectingPoint num="32" id="1921" />
+<TGConnectingPoint num="33" id="1922" />
+<TGConnectingPoint num="34" id="1923" />
+<TGConnectingPoint num="35" id="1924" />
+<TGConnectingPoint num="36" id="1925" />
+<TGConnectingPoint num="37" id="1926" />
+<TGConnectingPoint num="38" id="1927" />
+<TGConnectingPoint num="39" id="1928" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5103" id="1940" >
+<cdparam x="374" y="542" />
+<sizeparam width="75" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="Send signal" value="chout(m1)" />
+<TGConnectingPoint num="0" id="1930" />
+<TGConnectingPoint num="1" id="1931" />
+<TGConnectingPoint num="2" id="1932" />
+<TGConnectingPoint num="3" id="1933" />
+<TGConnectingPoint num="4" id="1934" />
+<TGConnectingPoint num="5" id="1935" />
+<TGConnectingPoint num="6" id="1936" />
+<TGConnectingPoint num="7" id="1937" />
+<TGConnectingPoint num="8" id="1938" />
+<TGConnectingPoint num="9" id="1939" />
+</COMPONENT>
+
+<COMPONENT type="5101" id="1942" >
+<cdparam x="428" y="708" />
+<sizeparam width="20" height="20" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="stop state" value="null" />
+<TGConnectingPoint num="0" id="1941" />
+</COMPONENT>
+
+<COMPONENT type="5106" id="1983" >
+<cdparam x="340" y="468" />
+<sizeparam width="143" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="state0" value="sendingMessage" />
+<TGConnectingPoint num="0" id="1943" />
+<TGConnectingPoint num="1" id="1944" />
+<TGConnectingPoint num="2" id="1945" />
+<TGConnectingPoint num="3" id="1946" />
+<TGConnectingPoint num="4" id="1947" />
+<TGConnectingPoint num="5" id="1948" />
+<TGConnectingPoint num="6" id="1949" />
+<TGConnectingPoint num="7" id="1950" />
+<TGConnectingPoint num="8" id="1951" />
+<TGConnectingPoint num="9" id="1952" />
+<TGConnectingPoint num="10" id="1953" />
+<TGConnectingPoint num="11" id="1954" />
+<TGConnectingPoint num="12" id="1955" />
+<TGConnectingPoint num="13" id="1956" />
+<TGConnectingPoint num="14" id="1957" />
+<TGConnectingPoint num="15" id="1958" />
+<TGConnectingPoint num="16" id="1959" />
+<TGConnectingPoint num="17" id="1960" />
+<TGConnectingPoint num="18" id="1961" />
+<TGConnectingPoint num="19" id="1962" />
+<TGConnectingPoint num="20" id="1963" />
+<TGConnectingPoint num="21" id="1964" />
+<TGConnectingPoint num="22" id="1965" />
+<TGConnectingPoint num="23" id="1966" />
+<TGConnectingPoint num="24" id="1967" />
+<TGConnectingPoint num="25" id="1968" />
+<TGConnectingPoint num="26" id="1969" />
+<TGConnectingPoint num="27" id="1970" />
+<TGConnectingPoint num="28" id="1971" />
+<TGConnectingPoint num="29" id="1972" />
+<TGConnectingPoint num="30" id="1973" />
+<TGConnectingPoint num="31" id="1974" />
+<TGConnectingPoint num="32" id="1975" />
+<TGConnectingPoint num="33" id="1976" />
+<TGConnectingPoint num="34" id="1977" />
+<TGConnectingPoint num="35" id="1978" />
+<TGConnectingPoint num="36" id="1979" />
+<TGConnectingPoint num="37" id="1980" />
+<TGConnectingPoint num="38" id="1981" />
+<TGConnectingPoint num="39" id="1982" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5106" id="2024" >
+<cdparam x="344" y="349" />
+<sizeparam width="134" height="40" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="state0" value="makingMessage" />
+<TGConnectingPoint num="0" id="1984" />
+<TGConnectingPoint num="1" id="1985" />
+<TGConnectingPoint num="2" id="1986" />
+<TGConnectingPoint num="3" id="1987" />
+<TGConnectingPoint num="4" id="1988" />
+<TGConnectingPoint num="5" id="1989" />
+<TGConnectingPoint num="6" id="1990" />
+<TGConnectingPoint num="7" id="1991" />
+<TGConnectingPoint num="8" id="1992" />
+<TGConnectingPoint num="9" id="1993" />
+<TGConnectingPoint num="10" id="1994" />
+<TGConnectingPoint num="11" id="1995" />
+<TGConnectingPoint num="12" id="1996" />
+<TGConnectingPoint num="13" id="1997" />
+<TGConnectingPoint num="14" id="1998" />
+<TGConnectingPoint num="15" id="1999" />
+<TGConnectingPoint num="16" id="2000" />
+<TGConnectingPoint num="17" id="2001" />
+<TGConnectingPoint num="18" id="2002" />
+<TGConnectingPoint num="19" id="2003" />
+<TGConnectingPoint num="20" id="2004" />
+<TGConnectingPoint num="21" id="2005" />
+<TGConnectingPoint num="22" id="2006" />
+<TGConnectingPoint num="23" id="2007" />
+<TGConnectingPoint num="24" id="2008" />
+<TGConnectingPoint num="25" id="2009" />
+<TGConnectingPoint num="26" id="2010" />
+<TGConnectingPoint num="27" id="2011" />
+<TGConnectingPoint num="28" id="2012" />
+<TGConnectingPoint num="29" id="2013" />
+<TGConnectingPoint num="30" id="2014" />
+<TGConnectingPoint num="31" id="2015" />
+<TGConnectingPoint num="32" id="2016" />
+<TGConnectingPoint num="33" id="2017" />
+<TGConnectingPoint num="34" id="2018" />
+<TGConnectingPoint num="35" id="2019" />
+<TGConnectingPoint num="36" id="2020" />
+<TGConnectingPoint num="37" id="2021" />
+<TGConnectingPoint num="38" id="2022" />
+<TGConnectingPoint num="39" id="2023" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5100" id="2026" >
+<cdparam x="400" y="50" />
+<sizeparam width="15" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="1400" minY="10" maxY="900" />
+<infoparam name="start state" value="null" />
+<TGConnectingPoint num="0" id="2025" />
+</COMPONENT>
+
+
+</AVATARStateMachineDiagramPanel>
+
+<AVATARStateMachineDiagramPanel name="CA" minX="10" maxX="2500" minY="10" maxY="1500" >
+<CONNECTOR type="5102" id="2037" >
+<cdparam x="331" y="296" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="2034" />
+<TGConnectingPoint num="1" id="2035" />
+<TGConnectingPoint num="2" id="2036" />
+<P1  x="338" y="295" id="2135" />
+<P2  x="399" y="127" id="2209" />
+<Point x="90" y="296" />
+<Point x="90" y="127" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="2027" >
+<father id="2037" num="0" />
+<cdparam x="90" y="296" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="point " value="null" />
+</SUBCOMPONENT>
+<SUBCOMPONENT type="-1" id="2028" >
+<father id="2037" num="1" />
+<cdparam x="90" y="127" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="point " value="null" />
+</SUBCOMPONENT>
+<SUBCOMPONENT type="-1" id="2033" >
+<father id="2037" num="2" />
+<cdparam x="101" y="203" />
+<sizeparam width="44" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="2029" />
+<TGConnectingPoint num="1" id="2030" />
+<TGConnectingPoint num="2" id="2031" />
+<TGConnectingPoint num="3" id="2032" />
+<extraparam>
+<guard value="[ else ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="2050" >
+<cdparam x="799" y="260" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="2046" />
+<TGConnectingPoint num="1" id="2047" />
+<TGConnectingPoint num="2" id="2048" />
+<TGConnectingPoint num="3" id="2049" />
+<P1  x="799" y="260" id="2122" />
+<P2  x="499" y="127" id="2210" />
+<Point x="799" y="295" />
+<Point x="1095" y="295" />
+<Point x="1095" y="127" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="2038" >
+<father id="2050" num="0" />
+<cdparam x="799" y="295" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="point " value="null" />
+</SUBCOMPONENT>
+<SUBCOMPONENT type="-1" id="2039" >
+<father id="2050" num="1" />
+<cdparam x="1095" y="295" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="point " value="null" />
+</SUBCOMPONENT>
+<SUBCOMPONENT type="-1" id="2040" >
+<father id="2050" num="2" />
+<cdparam x="1095" y="127" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="point " value="null" />
+</SUBCOMPONENT>
+<SUBCOMPONENT type="-1" id="2045" >
+<father id="2050" num="3" />
+<cdparam x="649" y="193" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="2041" />
+<TGConnectingPoint num="1" id="2042" />
+<TGConnectingPoint num="2" id="2043" />
+<TGConnectingPoint num="3" id="2044" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="2063" >
+<cdparam x="474" y="253" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="2059" />
+<TGConnectingPoint num="1" id="2060" />
+<TGConnectingPoint num="2" id="2061" />
+<TGConnectingPoint num="3" id="2062" />
+<P1  x="474" y="253" id="2174" />
+<P2  x="499" y="112" id="2228" />
+<Point x="474" y="351" />
+<Point x="1122" y="352" />
+<Point x="1122" y="112" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="2051" >
+<father id="2063" num="0" />
+<cdparam x="474" y="351" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="point " value="null" />
+</SUBCOMPONENT>
+<SUBCOMPONENT type="-1" id="2052" >
+<father id="2063" num="1" />
+<cdparam x="1122" y="352" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="point " value="null" />
+</SUBCOMPONENT>
+<SUBCOMPONENT type="-1" id="2053" >
+<father id="2063" num="2" />
+<cdparam x="1122" y="112" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="point " value="null" />
+</SUBCOMPONENT>
+<SUBCOMPONENT type="-1" id="2058" >
+<father id="2063" num="3" />
+<cdparam x="486" y="182" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="2054" />
+<TGConnectingPoint num="1" id="2055" />
+<TGConnectingPoint num="2" id="2056" />
+<TGConnectingPoint num="3" id="2057" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="2072" >
+<cdparam x="499" y="137" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="2070" />
+<TGConnectingPoint num="1" id="2071" />
+<P1  x="499" y="137" id="2219" />
+<P2  x="799" y="230" id="2121" />
+<Point x="799" y="137" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="2064" >
+<father id="2072" num="0" />
+<cdparam x="799" y="137" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="point " value="null" />
+</SUBCOMPONENT>
+<SUBCOMPONENT type="-1" id="2069" >
+<father id="2072" num="1" />
+<cdparam x="816" y="160" />
+<sizeparam width="168" height="75" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="2065" />
+<TGConnectingPoint num="1" id="2066" />
+<TGConnectingPoint num="2" id="2067" />
+<TGConnectingPoint num="3" id="2068" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+<actions value="m1.data = bobPubK.data" />
+<actions value="m2.data = bobID" />
+<actions value="m = concat2(m1, m2)" />
+<actions value="m1 = sign(m, privK)" />
+<actions value="newCert = concat2(m, m1)" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="2079" >
+<cdparam x="391" y="326" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="2078" />
+<P1  x="388" y="320" id="2138" />
+<P2  x="381" y="428" id="2184" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="2077" >
+<father id="2079" num="0" />
+<cdparam x="126" y="354" />
+<sizeparam width="267" height="90" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="2073" />
+<TGConnectingPoint num="1" id="2074" />
+<TGConnectingPoint num="2" id="2075" />
+<TGConnectingPoint num="3" id="2076" />
+<extraparam>
+<guard value="[ (newID != aliceID) and (newID != bobID) ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+<actions value="m1.data = newK.data" />
+<actions value="m2.data = newID" />
+<actions value="m = concat2(m1, m2)" />
+<actions value="m1 = sign(m, privK)" />
+<actions value="newCert = concat2(m, m1)" />
+<filesToIncludeLine value="" />
+<codeToIncludeLine value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="2092" >
+<cdparam x="381" y="290" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="2088" />
+<TGConnectingPoint num="1" id="2089" />
+<TGConnectingPoint num="2" id="2090" />
+<TGConnectingPoint num="3" id="2091" />
+<P1  x="381" y="458" id="2185" />
+<P2  x="399" y="117" id="2216" />
+<Point x="381" y="519" />
+<Point x="44" y="519" />
+<Point x="44" y="117" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="2080" >
+<father id="2092" num="0" />
+<cdparam x="381" y="519" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="point " value="null" />
+</SUBCOMPONENT>
+<SUBCOMPONENT type="-1" id="2081" >
+<father id="2092" num="1" />
+<cdparam x="44" y="519" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="point " value="null" />
+</SUBCOMPONENT>
+<SUBCOMPONENT type="-1" id="2082" >
+<father id="2092" num="2" />
+<cdparam x="44" y="117" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="point " value="null" />
+</SUBCOMPONENT>
+<SUBCOMPONENT type="-1" id="2087" >
+<father id="2092" num="3" />
+<cdparam x="390" y="203" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="2083" />
+<TGConnectingPoint num="1" id="2084" />
+<TGConnectingPoint num="2" id="2085" />
+<TGConnectingPoint num="3" id="2086" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="2099" >
+<cdparam x="407" y="70" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="2098" />
+<P1  x="411" y="71" id="2247" />
+<P2  x="411" y="108" id="2222" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="2097" >
+<father id="2099" num="0" />
+<cdparam x="409" y="89" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="2093" />
+<TGConnectingPoint num="1" id="2094" />
+<TGConnectingPoint num="2" id="2095" />
+<TGConnectingPoint num="3" id="2096" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="2106" >
+<cdparam x="399" y="147" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="2105" />
+<P1  x="399" y="147" id="2211" />
+<P2  x="381" y="176" id="2195" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="2104" >
+<father id="2106" num="0" />
+<cdparam x="390" y="161" />
+<sizeparam width="10" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="2100" />
+<TGConnectingPoint num="1" id="2101" />
+<TGConnectingPoint num="2" id="2102" />
+<TGConnectingPoint num="3" id="2103" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="2113" >
+<cdparam x="381" y="206" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="2112" />
+<P1  x="381" y="206" id="2196" />
+<P2  x="388" y="270" id="2133" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="2111" >
+<father id="2113" num="0" />
+<cdparam x="216" y="224" />
+<sizeparam width="135" height="45" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="2107" />
+<TGConnectingPoint num="1" id="2108" />
+<TGConnectingPoint num="2" id="2109" />
+<TGConnectingPoint num="3" id="2110" />
+<extraparam>
+<guard value="[  ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+<actions value="get2(m, m1, m2)" />
+<actions value="newK.data = m1.data" />
+<actions value="newID = m2.data" />
+</extraparam>
+</SUBCOMPONENT>
+
+<CONNECTOR type="5102" id="2120" >
+<cdparam x="499" y="147" />
+<sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<infoparam name="connector" value="null" />
+<TGConnectingPoint num="0" id="2119" />
+<P1  x="474" y="147" id="2221" />
+<P2  x="474" y="223" id="2173" />
+<AutomaticDrawing  data="true" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="2118" >
+<father id="2120" num="0" />
+<cdparam x="496" y="166" />
+<sizeparam width="168" height="75" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="List of all parameters of an Avatar SMD transition" value="" />
+<TGConnectingPoint num="0" id="2114" />
+<TGConnectingPoint num="1" id="2115" />
+<TGConnectingPoint num="2" id="2116" />
+<TGConnectingPoint num="3" id="2117" />
+<extraparam>
+<guard value="[ ]" />
+<afterMin value="" />
+<afterMax value="" />
+<computeMin value="" />
+<computeMax value="" />
+<actions value="m1.data = alicePubK.data" />
+<actions value="m2.data = aliceID" />
+<actions value="m = concat2(m1, m2)" />
+<actions value="m1 = sign(m, privK)" />
+<actions value="newCert = concat2(m, m1)" />
+</extraparam>
+</SUBCOMPONENT>
+
+<COMPONENT type="5103" id="2131" >
+<cdparam x="746" y="235" />
+<sizeparam width="107" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="Send signal" value="chout(newCert)" />
+<TGConnectingPoint num="0" id="2121" />
+<TGConnectingPoint num="1" id="2122" />
+<TGConnectingPoint num="2" id="2123" />
+<TGConnectingPoint num="3" id="2124" />
+<TGConnectingPoint num="4" id="2125" />
+<TGConnectingPoint num="5" id="2126" />
+<TGConnectingPoint num="6" id="2127" />
+<TGConnectingPoint num="7" id="2128" />
+<TGConnectingPoint num="8" id="2129" />
+<TGConnectingPoint num="9" id="2130" />
+</COMPONENT>
+
+<COMPONENT type="5106" id="2172" >
+<cdparam x="338" y="270" />
+<sizeparam width="100" height="50" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="State" value="verifyID" />
+<TGConnectingPoint num="0" id="2132" />
+<TGConnectingPoint num="1" id="2133" />
+<TGConnectingPoint num="2" id="2134" />
+<TGConnectingPoint num="3" id="2135" />
+<TGConnectingPoint num="4" id="2136" />
+<TGConnectingPoint num="5" id="2137" />
+<TGConnectingPoint num="6" id="2138" />
+<TGConnectingPoint num="7" id="2139" />
+<TGConnectingPoint num="8" id="2140" />
+<TGConnectingPoint num="9" id="2141" />
+<TGConnectingPoint num="10" id="2142" />
+<TGConnectingPoint num="11" id="2143" />
+<TGConnectingPoint num="12" id="2144" />
+<TGConnectingPoint num="13" id="2145" />
+<TGConnectingPoint num="14" id="2146" />
+<TGConnectingPoint num="15" id="2147" />
+<TGConnectingPoint num="16" id="2148" />
+<TGConnectingPoint num="17" id="2149" />
+<TGConnectingPoint num="18" id="2150" />
+<TGConnectingPoint num="19" id="2151" />
+<TGConnectingPoint num="20" id="2152" />
+<TGConnectingPoint num="21" id="2153" />
+<TGConnectingPoint num="22" id="2154" />
+<TGConnectingPoint num="23" id="2155" />
+<TGConnectingPoint num="24" id="2156" />
+<TGConnectingPoint num="25" id="2157" />
+<TGConnectingPoint num="26" id="2158" />
+<TGConnectingPoint num="27" id="2159" />
+<TGConnectingPoint num="28" id="2160" />
+<TGConnectingPoint num="29" id="2161" />
+<TGConnectingPoint num="30" id="2162" />
+<TGConnectingPoint num="31" id="2163" />
+<TGConnectingPoint num="32" id="2164" />
+<TGConnectingPoint num="33" id="2165" />
+<TGConnectingPoint num="34" id="2166" />
+<TGConnectingPoint num="35" id="2167" />
+<TGConnectingPoint num="36" id="2168" />
+<TGConnectingPoint num="37" id="2169" />
+<TGConnectingPoint num="38" id="2170" />
+<TGConnectingPoint num="39" id="2171" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5103" id="2183" >
+<cdparam x="421" y="228" />
+<sizeparam width="107" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="Send signal" value="chout(newCert)" />
+<TGConnectingPoint num="0" id="2173" />
+<TGConnectingPoint num="1" id="2174" />
+<TGConnectingPoint num="2" id="2175" />
+<TGConnectingPoint num="3" id="2176" />
+<TGConnectingPoint num="4" id="2177" />
+<TGConnectingPoint num="5" id="2178" />
+<TGConnectingPoint num="6" id="2179" />
+<TGConnectingPoint num="7" id="2180" />
+<TGConnectingPoint num="8" id="2181" />
+<TGConnectingPoint num="9" id="2182" />
+</COMPONENT>
+
+<COMPONENT type="5103" id="2194" >
+<cdparam x="328" y="433" />
+<sizeparam width="107" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="Send signal" value="chout(newCert)" />
+<TGConnectingPoint num="0" id="2184" />
+<TGConnectingPoint num="1" id="2185" />
+<TGConnectingPoint num="2" id="2186" />
+<TGConnectingPoint num="3" id="2187" />
+<TGConnectingPoint num="4" id="2188" />
+<TGConnectingPoint num="5" id="2189" />
+<TGConnectingPoint num="6" id="2190" />
+<TGConnectingPoint num="7" id="2191" />
+<TGConnectingPoint num="8" id="2192" />
+<TGConnectingPoint num="9" id="2193" />
+</COMPONENT>
+
+<COMPONENT type="5104" id="2205" >
+<cdparam x="349" y="181" />
+<sizeparam width="65" height="20" minWidth="30" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="Receive signal" value="chin(m)" />
+<TGConnectingPoint num="0" id="2195" />
+<TGConnectingPoint num="1" id="2196" />
+<TGConnectingPoint num="2" id="2197" />
+<TGConnectingPoint num="3" id="2198" />
+<TGConnectingPoint num="4" id="2199" />
+<TGConnectingPoint num="5" id="2200" />
+<TGConnectingPoint num="6" id="2201" />
+<TGConnectingPoint num="7" id="2202" />
+<TGConnectingPoint num="8" id="2203" />
+<TGConnectingPoint num="9" id="2204" />
+</COMPONENT>
+
+<COMPONENT type="5106" id="2246" >
+<cdparam x="399" y="108" />
+<sizeparam width="100" height="39" minWidth="40" minHeight="30" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="State" value="waiting" />
+<TGConnectingPoint num="0" id="2206" />
+<TGConnectingPoint num="1" id="2207" />
+<TGConnectingPoint num="2" id="2208" />
+<TGConnectingPoint num="3" id="2209" />
+<TGConnectingPoint num="4" id="2210" />
+<TGConnectingPoint num="5" id="2211" />
+<TGConnectingPoint num="6" id="2212" />
+<TGConnectingPoint num="7" id="2213" />
+<TGConnectingPoint num="8" id="2214" />
+<TGConnectingPoint num="9" id="2215" />
+<TGConnectingPoint num="10" id="2216" />
+<TGConnectingPoint num="11" id="2217" />
+<TGConnectingPoint num="12" id="2218" />
+<TGConnectingPoint num="13" id="2219" />
+<TGConnectingPoint num="14" id="2220" />
+<TGConnectingPoint num="15" id="2221" />
+<TGConnectingPoint num="16" id="2222" />
+<TGConnectingPoint num="17" id="2223" />
+<TGConnectingPoint num="18" id="2224" />
+<TGConnectingPoint num="19" id="2225" />
+<TGConnectingPoint num="20" id="2226" />
+<TGConnectingPoint num="21" id="2227" />
+<TGConnectingPoint num="22" id="2228" />
+<TGConnectingPoint num="23" id="2229" />
+<TGConnectingPoint num="24" id="2230" />
+<TGConnectingPoint num="25" id="2231" />
+<TGConnectingPoint num="26" id="2232" />
+<TGConnectingPoint num="27" id="2233" />
+<TGConnectingPoint num="28" id="2234" />
+<TGConnectingPoint num="29" id="2235" />
+<TGConnectingPoint num="30" id="2236" />
+<TGConnectingPoint num="31" id="2237" />
+<TGConnectingPoint num="32" id="2238" />
+<TGConnectingPoint num="33" id="2239" />
+<TGConnectingPoint num="34" id="2240" />
+<TGConnectingPoint num="35" id="2241" />
+<TGConnectingPoint num="36" id="2242" />
+<TGConnectingPoint num="37" id="2243" />
+<TGConnectingPoint num="38" id="2244" />
+<TGConnectingPoint num="39" id="2245" />
+<extraparam>
+</extraparam>
+</COMPONENT>
+
+<COMPONENT type="5100" id="2248" >
+<cdparam x="404" y="51" />
+<sizeparam width="15" height="15" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<hidden value="false" />
+<cdrectangleparam minX="10" maxX="2500" minY="10" maxY="1500" />
+<infoparam name="start state" value="null" />
+<TGConnectingPoint num="0" id="2247" />
+</COMPONENT>
+
+
+</AVATARStateMachineDiagramPanel>
+
+</Modeling>
+
+
+
+
 </TURTLEGMODELING>
\ No newline at end of file
diff --git a/modeling/SysMLSec/README b/modeling/SysMLSec/README
new file mode 100644
index 0000000000000000000000000000000000000000..004859fa868995cbb40ab905a4cf1958201b0bfa
--- /dev/null
+++ b/modeling/SysMLSec/README
@@ -0,0 +1 @@
+All xml files here are pushed to the website of SysMLSec with the ttoolnighltybuild script
\ No newline at end of file
diff --git a/modeling/SysMLSec/at_zeuszitmo.xml b/modeling/SysMLSec/at_zeuszitmo.xml
index d33361aad38c18554281556729a9c647018cde9c..f0feeacf2eef0a609e426d5569a8bf112a5c424e 100644
--- a/modeling/SysMLSec/at_zeuszitmo.xml
+++ b/modeling/SysMLSec/at_zeuszitmo.xml
@@ -4,54 +4,54 @@
 
 <Modeling type="AttackTree" nameTab="Attack Trees" >
 <AttackTreeDiagramPanel name="Attack Tree" minX="10" maxX="1900" minY="10" maxY="1900" zoom="1.0000000000000016" >
-<CONNECTOR type="133" id="587" >
+<CONNECTOR type="133" id="2" >
 <cdparam x="645" y="785" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector" value="" />
-<TGConnectingPoint num="0" id="588" />
-<P1  x="645" y="785" id="231" />
+<TGConnectingPoint num="0" id="1" />
+<P1  x="663" y="785" id="231" />
 <P2  x="757" y="658" id="167" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<CONNECTOR type="133" id="2" >
+<CONNECTOR type="133" id="4" >
 <cdparam x="262" y="1202" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="" />
-<TGConnectingPoint num="0" id="1" />
-<P1  x="288" y="937" id="53" />
+<TGConnectingPoint num="0" id="3" />
+<P1  x="290" y="937" id="53" />
 <P2  x="280" y="906" id="180" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<CONNECTOR type="133" id="4" >
+<CONNECTOR type="133" id="6" >
 <cdparam x="415" y="453" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="" />
-<TGConnectingPoint num="0" id="3" />
-<P1  x="568" y="361" id="98" />
+<TGConnectingPoint num="0" id="5" />
+<P1  x="581" y="361" id="98" />
 <P2  x="757" y="623" id="164" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<CONNECTOR type="133" id="6" >
+<CONNECTOR type="133" id="8" >
 <cdparam x="1033" y="642" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="" />
-<TGConnectingPoint num="0" id="5" />
-<P1  x="910" y="416" id="459" />
-<P2  x="943" y="381" id="449" />
+<TGConnectingPoint num="0" id="7" />
+<P1  x="938" y="416" id="459" />
+<P2  x="937" y="382" id="449" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<CONNECTOR type="133" id="10" >
+<CONNECTOR type="133" id="12" >
 <cdparam x="1016" y="560" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="2" />
-<TGConnectingPoint num="0" id="8" />
-<TGConnectingPoint num="1" id="9" />
-<P1  x="943" y="346" id="446" />
-<P2  x="915" y="314" id="483" />
+<TGConnectingPoint num="0" id="10" />
+<TGConnectingPoint num="1" id="11" />
+<P1  x="937" y="347" id="446" />
+<P2  x="892" y="314" id="483" />
 <Point x="931" y="331" />
 <AutomaticDrawing  data="true" />
-</CONNECTOR><SUBCOMPONENT type="-1" id="7" >
-<father id="10" num="0" />
+</CONNECTOR><SUBCOMPONENT type="-1" id="9" >
+<father id="12" num="0" />
 <cdparam x="931" y="331" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
@@ -59,120 +59,120 @@
 <infoparam name="point " value="null" />
 </SUBCOMPONENT>
 
-<CONNECTOR type="133" id="12" >
+<CONNECTOR type="133" id="14" >
 <cdparam x="916" y="476" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="" />
-<TGConnectingPoint num="0" id="11" />
-<P1  x="884" y="279" id="472" />
-<P2  x="831" y="250" id="423" />
+<TGConnectingPoint num="0" id="13" />
+<P1  x="861" y="279" id="472" />
+<P2  x="821" y="250" id="423" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<CONNECTOR type="133" id="14" >
+<CONNECTOR type="133" id="16" >
 <cdparam x="831" y="1116" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="1" />
-<TGConnectingPoint num="0" id="13" />
-<P1  x="659" y="840" id="192" />
+<TGConnectingPoint num="0" id="15" />
+<P1  x="663" y="840" id="192" />
 <P2  x="726" y="814" id="161" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<CONNECTOR type="133" id="16" >
+<CONNECTOR type="133" id="18" >
 <cdparam x="1122" y="893" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="" />
-<TGConnectingPoint num="0" id="15" />
-<P1  x="903" y="783" id="297" />
+<TGConnectingPoint num="0" id="17" />
+<P1  x="893" y="783" id="297" />
 <P2  x="917" y="682" id="148" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<CONNECTOR type="133" id="18" >
+<CONNECTOR type="133" id="20" >
 <cdparam x="1138" y="973" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="" />
-<TGConnectingPoint num="0" id="17" />
+<TGConnectingPoint num="0" id="19" />
 <P1  x="819" y="805" id="160" />
-<P2  x="852" y="800" id="294" />
+<P2  x="838" y="800" id="294" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<CONNECTOR type="133" id="20" >
+<CONNECTOR type="133" id="22" >
 <cdparam x="1098" y="980" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="" />
-<TGConnectingPoint num="0" id="19" />
+<TGConnectingPoint num="0" id="21" />
 <P1  x="948" y="647" id="138" />
-<P2  x="950" y="613" id="283" />
+<P2  x="955" y="613" id="283" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<CONNECTOR type="133" id="22" >
+<CONNECTOR type="133" id="24" >
 <cdparam x="1239" y="878" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="" />
-<TGConnectingPoint num="0" id="21" />
-<P1  x="972" y="720" id="272" />
+<TGConnectingPoint num="0" id="23" />
+<P1  x="983" y="720" id="272" />
 <P2  x="979" y="682" id="149" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<CONNECTOR type="133" id="24" >
+<CONNECTOR type="133" id="26" >
 <cdparam x="484" y="806" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="0" />
-<TGConnectingPoint num="0" id="23" />
+<TGConnectingPoint num="0" id="25" />
 <P1  x="788" y="658" id="175" />
 <P2  x="788" y="779" id="156" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<CONNECTOR type="133" id="26" >
+<CONNECTOR type="133" id="28" >
 <cdparam x="919" y="515" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="1" />
-<TGConnectingPoint num="0" id="25" />
-<P1  x="731" y="347" id="437" />
-<P2  x="853" y="314" id="482" />
+<TGConnectingPoint num="0" id="27" />
+<P1  x="711" y="347" id="437" />
+<P2  x="830" y="314" id="482" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<CONNECTOR type="133" id="28" >
+<CONNECTOR type="133" id="30" >
 <cdparam x="1010" y="578" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="0" />
-<TGConnectingPoint num="0" id="27" />
-<P1  x="821" y="435" id="487" />
-<P2  x="849" y="433" id="460" />
+<TGConnectingPoint num="0" id="29" />
+<P1  x="805" y="435" id="487" />
+<P2  x="877" y="433" id="460" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<CONNECTOR type="133" id="30" >
+<CONNECTOR type="133" id="32" >
 <cdparam x="296" y="769" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="" />
-<TGConnectingPoint num="0" id="29" />
-<P1  x="283" y="643" id="387" />
+<TGConnectingPoint num="0" id="31" />
+<P1  x="289" y="643" id="387" />
 <P2  x="491" y="589" id="531" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<CONNECTOR type="133" id="32" >
+<CONNECTOR type="133" id="34" >
 <cdparam x="1291" y="918" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="1" />
-<TGConnectingPoint num="0" id="31" />
-<P1  x="950" y="578" id="280" />
-<P2  x="910" y="451" id="462" />
+<TGConnectingPoint num="0" id="33" />
+<P1  x="955" y="578" id="280" />
+<P2  x="938" y="451" id="462" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<CONNECTOR type="133" id="34" >
+<CONNECTOR type="133" id="36" >
 <cdparam x="540" y="630" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="" />
-<TGConnectingPoint num="0" id="33" />
-<P1  x="641" y="563" id="528" />
-<P2  x="699" y="373" id="441" />
+<TGConnectingPoint num="0" id="35" />
+<P1  x="653" y="563" id="528" />
+<P2  x="676" y="373" id="441" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
-<CONNECTOR type="133" id="36" >
+<CONNECTOR type="133" id="38" >
 <cdparam x="622" y="860" />
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="" />
-<TGConnectingPoint num="0" id="35" />
-<P1  x="661" y="648" id="127" />
+<TGConnectingPoint num="0" id="37" />
+<P1  x="671" y="648" id="127" />
 <P2  x="696" y="649" id="172" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
@@ -181,7 +181,7 @@
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="" />
 <TGConnectingPoint num="0" id="39" />
-<P1  x="587" y="733" id="218" />
+<P1  x="600" y="733" id="218" />
 <P2  x="726" y="658" id="174" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
@@ -199,7 +199,7 @@
 <sizeparam width="0" height="0" minWidth="0" minHeight="0" maxWidth="1000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <infoparam name="connector from TGComponent to TGComponent" value="" />
 <TGConnectingPoint num="0" id="43" />
-<P1  x="241" y="830" id="334" />
+<P1  x="244" y="830" id="334" />
 <P2  x="249" y="871" id="181" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
@@ -218,7 +218,7 @@
 <infoparam name="connector from TGComponent to TGComponent" value="" />
 <TGConnectingPoint num="0" id="47" />
 <P1  x="249" y="747" id="344" />
-<P2  x="255" y="678" id="385" />
+<P2  x="259" y="678" id="385" />
 <AutomaticDrawing  data="true" />
 </CONNECTOR>
 <COMPONENT type="1400" id="86" >
@@ -255,10 +255,10 @@
 <SUBCOMPONENT type="1401" id="61" >
 <father id="86" num="0" />
 <cdparam x="256" y="937" />
-<sizeparam width="130" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="137" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <enabled value="true" />
-<cdrectangleparam minX="0" maxX="117" minY="0" maxY="48" />
+<cdrectangleparam minX="0" maxX="110" minY="0" maxY="48" />
 <infoparam name="TGComponent" value="ExploitVulnerability" />
 <TGConnectingPoint num="0" id="49" />
 <TGConnectingPoint num="1" id="50" />
@@ -311,10 +311,10 @@
 <SUBCOMPONENT type="1401" id="99" >
 <father id="124" num="0" />
 <cdparam x="439" y="326" />
-<sizeparam width="173" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="190" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <enabled value="true" />
-<cdrectangleparam minX="0" maxX="74" minY="0" maxY="73" />
+<cdrectangleparam minX="0" maxX="57" minY="0" maxY="73" />
 <infoparam name="TGComponent" value="GenerateFakeBankWebsite" />
 <TGConnectingPoint num="0" id="87" />
 <TGConnectingPoint num="1" id="88" />
@@ -335,7 +335,7 @@
 
 <COMPONENT type="1401" id="137" >
 <cdparam x="491" y="631" />
-<sizeparam width="170" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="180" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <enabled value="true" />
 <cdrectangleparam minX="10" maxX="1901" minY="10" maxY="1901" />
@@ -399,7 +399,7 @@
 <TGConnectingPoint num="10" id="161" />
 <TGConnectingPoint num="11" id="162" />
 <extraparam>
-<info equation="t(a1)&lt;t(a2)" />
+<info equation="" />
 </extraparam>
 </COMPONENT>
 
@@ -482,11 +482,11 @@
 </COMPONENT>
 <SUBCOMPONENT type="1401" id="202" >
 <father id="266" num="0" />
-<cdparam x="361" y="823" />
-<sizeparam width="298" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<cdparam x="340" y="823" />
+<sizeparam width="323" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <enabled value="true" />
-<cdrectangleparam minX="0" maxX="5" minY="0" maxY="205" />
+<cdrectangleparam minX="0" maxX="-20" minY="0" maxY="205" />
 <infoparam name="TGComponent" value="RequestUserToInstallMobileFakeBankApplication" />
 <TGConnectingPoint num="0" id="190" />
 <TGConnectingPoint num="1" id="191" />
@@ -507,10 +507,10 @@
 <SUBCOMPONENT type="1401" id="215" >
 <father id="266" num="1" />
 <cdparam x="395" y="871" />
-<sizeparam width="127" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="134" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <enabled value="true" />
-<cdrectangleparam minX="0" maxX="176" minY="0" maxY="205" />
+<cdrectangleparam minX="0" maxX="169" minY="0" maxY="205" />
 <infoparam name="TGComponent" value="ExploitVunerability" />
 <TGConnectingPoint num="0" id="203" />
 <TGConnectingPoint num="1" id="204" />
@@ -531,10 +531,10 @@
 <SUBCOMPONENT type="1401" id="228" >
 <father id="266" num="2" />
 <cdparam x="448" y="716" />
-<sizeparam width="139" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="152" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <enabled value="true" />
-<cdrectangleparam minX="0" maxX="164" minY="0" maxY="205" />
+<cdrectangleparam minX="0" maxX="151" minY="0" maxY="205" />
 <infoparam name="TGComponent" value="InstallMaliciousPlugin" />
 <TGConnectingPoint num="0" id="216" />
 <TGConnectingPoint num="1" id="217" />
@@ -554,11 +554,11 @@
 </SUBCOMPONENT>
 <SUBCOMPONENT type="1401" id="241" >
 <father id="266" num="3" />
-<cdparam x="371" y="768" />
-<sizeparam width="274" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<cdparam x="370" y="768" />
+<sizeparam width="293" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <enabled value="true" />
-<cdrectangleparam minX="0" maxX="29" minY="0" maxY="205" />
+<cdrectangleparam minX="0" maxX="10" minY="0" maxY="205" />
 <infoparam name="TGComponent" value="RedirectHTTPRequestFromBankToFakeBank" />
 <TGConnectingPoint num="0" id="229" />
 <TGConnectingPoint num="1" id="230" />
@@ -611,10 +611,10 @@
 <SUBCOMPONENT type="1401" id="279" >
 <father id="330" num="0" />
 <cdparam x="873" y="720" />
-<sizeparam width="132" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="147" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <enabled value="true" />
-<cdrectangleparam minX="0" maxX="92" minY="0" maxY="296" />
+<cdrectangleparam minX="0" maxX="77" minY="0" maxY="296" />
 <infoparam name="TGComponent" value="SilentlyInterceptSMS" />
 <TGConnectingPoint num="0" id="267" />
 <TGConnectingPoint num="1" id="268" />
@@ -635,10 +635,10 @@
 <SUBCOMPONENT type="1401" id="292" >
 <father id="330" num="1" />
 <cdparam x="871" y="578" />
-<sizeparam width="159" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="169" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <enabled value="true" />
-<cdrectangleparam minX="0" maxX="65" minY="0" maxY="296" />
+<cdrectangleparam minX="0" maxX="55" minY="0" maxY="296" />
 <infoparam name="TGComponent" value="RetrieveTransactionTAN" />
 <TGConnectingPoint num="0" id="280" />
 <TGConnectingPoint num="1" id="281" />
@@ -658,11 +658,11 @@
 </SUBCOMPONENT>
 <SUBCOMPONENT type="1401" id="305" >
 <father id="330" num="2" />
-<cdparam x="852" y="783" />
-<sizeparam width="204" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<cdparam x="838" y="783" />
+<sizeparam width="223" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <enabled value="true" />
-<cdrectangleparam minX="0" maxX="20" minY="0" maxY="296" />
+<cdrectangleparam minX="0" maxX="1" minY="0" maxY="296" />
 <infoparam name="TGComponent" value="UserInstallsFakeBankApplication" />
 <TGConnectingPoint num="0" id="293" />
 <TGConnectingPoint num="1" id="294" />
@@ -715,10 +715,10 @@
 <SUBCOMPONENT type="1401" id="343" >
 <father id="381" num="0" />
 <cdparam x="176" y="795" />
-<sizeparam width="130" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="137" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <enabled value="true" />
-<cdrectangleparam minX="0" maxX="14" minY="0" maxY="93" />
+<cdrectangleparam minX="0" maxX="7" minY="0" maxY="93" />
 <infoparam name="TGComponent" value="ExploitVulnerability" />
 <TGConnectingPoint num="0" id="331" />
 <TGConnectingPoint num="1" id="332" />
@@ -795,10 +795,10 @@
 <SUBCOMPONENT type="1401" id="394" >
 <father id="419" num="0" />
 <cdparam x="199" y="643" />
-<sizeparam width="113" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="121" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <enabled value="true" />
-<cdrectangleparam minX="0" maxX="390" minY="0" maxY="383" />
+<cdrectangleparam minX="0" maxX="382" minY="0" maxY="383" />
 <infoparam name="TGComponent" value="InstallKeyLogger" />
 <TGConnectingPoint num="0" id="382" />
 <TGConnectingPoint num="1" id="383" />
@@ -818,8 +818,8 @@
 </SUBCOMPONENT>
 
 <COMPONENT type="1400" id="522" >
-<cdparam x="688" y="176" />
-<sizeparam width="368" height="299" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<cdparam x="665" y="176" />
+<sizeparam width="391" height="299" minWidth="5" minHeight="2" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="10" maxX="1901" minY="10" maxY="1901" />
 <infoparam name="Block5" value="AttackerPC" />
@@ -850,11 +850,11 @@
 </COMPONENT>
 <SUBCOMPONENT type="1401" id="432" >
 <father id="522" num="0" />
-<cdparam x="691" y="215" />
-<sizeparam width="280" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<cdparam x="668" y="215" />
+<sizeparam width="306" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <enabled value="true" />
-<cdrectangleparam minX="0" maxX="88" minY="0" maxY="264" />
+<cdrectangleparam minX="0" maxX="85" minY="0" maxY="264" />
 <infoparam name="TGComponent" value="IllegalBankAccountTransactionBasedOnToken" />
 <TGConnectingPoint num="0" id="420" />
 <TGConnectingPoint num="1" id="421" />
@@ -874,11 +874,11 @@
 </SUBCOMPONENT>
 <SUBCOMPONENT type="1401" id="445" >
 <father id="522" num="1" />
-<cdparam x="699" y="347" />
-<sizeparam width="129" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<cdparam x="676" y="347" />
+<sizeparam width="141" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <enabled value="true" />
-<cdrectangleparam minX="0" maxX="239" minY="0" maxY="264" />
+<cdrectangleparam minX="0" maxX="250" minY="0" maxY="264" />
 <infoparam name="TGComponent" value="LogOnBankAccount" />
 <TGConnectingPoint num="0" id="433" />
 <TGConnectingPoint num="1" id="434" />
@@ -898,11 +898,11 @@
 </SUBCOMPONENT>
 <SUBCOMPONENT type="1401" id="458" >
 <father id="522" num="2" />
-<cdparam x="834" y="346" />
-<sizeparam width="218" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<cdparam x="818" y="347" />
+<sizeparam width="238" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <enabled value="true" />
-<cdrectangleparam minX="0" maxX="150" minY="0" maxY="264" />
+<cdrectangleparam minX="0" maxX="153" minY="0" maxY="264" />
 <infoparam name="TGComponent" value="PerformTokenBasedAuthentication" />
 <TGConnectingPoint num="0" id="446" />
 <TGConnectingPoint num="1" id="447" />
@@ -916,13 +916,14 @@
 <TGConnectingPoint num="9" id="455" />
 <TGConnectingPoint num="10" id="456" />
 <TGConnectingPoint num="11" id="457" />
+<latencyCheck />
 <extraparam>
 <info description="blah blah blah" root="false" />
 </extraparam>
 </SUBCOMPONENT>
 <SUBCOMPONENT type="1402" id="471" >
 <father id="522" num="3" />
-<cdparam x="849" y="416" />
+<cdparam x="877" y="416" />
 <sizeparam width="123" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="0" maxX="245" minY="0" maxY="264" />
@@ -945,7 +946,7 @@
 </SUBCOMPONENT>
 <SUBCOMPONENT type="1402" id="484" >
 <father id="522" num="4" />
-<cdparam x="823" y="279" />
+<cdparam x="800" y="279" />
 <sizeparam width="123" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <cdrectangleparam minX="0" maxX="245" minY="0" maxY="264" />
@@ -963,16 +964,16 @@
 <TGConnectingPoint num="10" id="482" />
 <TGConnectingPoint num="11" id="483" />
 <extraparam>
-<info equation="t(a1)&lt;t(a2)" />
+<info equation="" />
 </extraparam>
 </SUBCOMPONENT>
 <SUBCOMPONENT type="1401" id="497" >
 <father id="522" num="5" />
-<cdparam x="697" y="418" />
-<sizeparam width="124" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<cdparam x="674" y="418" />
+<sizeparam width="131" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <enabled value="true" />
-<cdrectangleparam minX="0" maxX="244" minY="0" maxY="264" />
+<cdrectangleparam minX="0" maxX="260" minY="0" maxY="264" />
 <infoparam name="TGComponent" value="SendTANToServer" />
 <TGConnectingPoint num="0" id="485" />
 <TGConnectingPoint num="1" id="486" />
@@ -1025,10 +1026,10 @@
 <SUBCOMPONENT type="1401" id="535" >
 <father id="560" num="0" />
 <cdparam x="491" y="563" />
-<sizeparam width="201" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
+<sizeparam width="217" height="35" minWidth="100" minHeight="0" maxWidth="2000" maxHeight="2000" minDesiredWidth="0" minDesiredHeight="0" />
 <hidden value="false" />
 <enabled value="true" />
-<cdrectangleparam minX="0" maxX="711" minY="0" maxY="493" />
+<cdrectangleparam minX="0" maxX="695" minY="0" maxY="493" />
 <infoparam name="TGComponent" value="RetrieveUserLoginAndPassword" />
 <TGConnectingPoint num="0" id="523" />
 <TGConnectingPoint num="1" id="524" />
diff --git a/simulators/c++2/.gitignore b/simulators/c++2/.gitignore
index 3df573fe623699c4038ba9501388748f93485913..e1c7e60115f578c0ad2dc9c5c6c4e487c36c770e 100644
--- a/simulators/c++2/.gitignore
+++ b/simulators/c++2/.gitignore
@@ -1 +1,2 @@
 /Debug/
+/lib/
diff --git a/simulators/c++2/launch_configurations/c++2 Debug.launch b/simulators/c++2/launch_configurations/c++2 Debug.launch
index f0ef513b0c13d8c923358a236829ed2250e386c0..fe7bda9208921ebac8cebdc8239787dedeecb0d9 100644
--- a/simulators/c++2/launch_configurations/c++2 Debug.launch	
+++ b/simulators/c++2/launch_configurations/c++2 Debug.launch	
@@ -16,12 +16,14 @@
 <stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_ID" value="gdb"/>
 <stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
 <stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
-<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
+<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="false"/>
 <stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
+<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_ARGUMENTS" value="-ohtml /home/dblouin/temp/vcddump.html"/>
 <stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug/c++2"/>
 <stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="c++2"/>
 <booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
 <stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="cdt.managedbuild.config.gnu.cygwin.exe.debug.999163173"/>
+<stringAttribute key="org.eclipse.cdt.launch.WORKING_DIRECTORY" value="${workspace_loc:bin}"/>
 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
 <listEntry value="/c++2"/>
 </listAttribute>
diff --git a/simulators/c++2/schedstyle.css b/simulators/c++2/schedstyle.css
deleted file mode 100755
index 4a2dbd77f9a03147885ce51b51116def6fc055a1..0000000000000000000000000000000000000000
--- a/simulators/c++2/schedstyle.css
+++ /dev/null
@@ -1,55 +0,0 @@
-table{
-	border-collapse: collapse;
-	empty-cells: show;
-	margin: 0.4cm;
-}
-
-td{
-	padding: 10px 5px;
-	border: 1px solid black;
-}
-
-th{
-	padding: 5px;
-	border-left: 1px dotted black;
-	border-right: 1px dotted black;
-}
-
-.sc{
-	border-style: none;
-	padding: 0px;
-}
-
-h2 {
-	border-bottom: 1px solid #666;
-}
-
-h2 span {
-	position: relative; 
-	left: -0.3em; 
-	bottom: -0.6em; 
-	padding: 1px 0.5em; 
-	border-style: solid; 
-	border-width: 1px 1px 1px 0.8em;  
-	border-color: #666 #666 #666 #008;
-	background-color: #ddd;
-}
-
-.space{border-style: none;}
-.not{background-color: white;}
-.t1{background-color: yellow;}
-.t2{background-color: purple;}
-.t3{background-color: red;}
-.t4{background-color: silver;}
-.t5{background-color: teal;}
-.t6{background-color: aqua;}
-.t7{background-color: olive;}
-.t8{background-color: navy;}
-.t9{background-color: maroon;}
-.t10{background-color: lime;}
-.t11{background-color: green;}
-.t12{background-color: gray;}
-.t13{background-color: fuchsia;}
-.t14{background-color: blue;}
-.t15{background-color: black;}
-.t16{background-color: white;}
\ No newline at end of file
diff --git a/simulators/c++2/src_simulator/definitions.h b/simulators/c++2/src_simulator/definitions.h
index 2e8d282878e012516a9f20bb76698428ef8d6d7b..fca965bbce261bb5c16dc59c8218405fac7fbf01 100644
--- a/simulators/c++2/src_simulator/definitions.h
+++ b/simulators/c++2/src_simulator/definitions.h
@@ -225,6 +225,74 @@ using std::max;
 #define TAG_ENERGYo "<energy>"
 #define TAG_ENERGYc "</energy>"
 
+// Issue #4 HTML Trace Constants
+#define EXT_SEP "."
+#define CSS "css"
+#define SCHED_CSS_FILE_NAME "schedstyle.css"
+#define SCHED_HTML_DOC "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"
+#define SCHED_HTML_BEG_HTML "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n"
+#define SCHED_HTML_END_HTML "</html>\n"
+#define SCHED_HTML_BEG_HEAD "<head>\n"
+#define SCHED_HTML_END_HEAD "</head>\n"
+#define SCHED_HTML_META "<meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-1\" />\n"
+#define SCHED_HTML_BEG_TITLE "<title>"
+#define SCHED_HTML_END_TITLE "</title>\n"
+#define SCHED_HTML_BEG_BODY "<body>\n"
+#define SCHED_HTML_END_BODY "</body>\n"
+#define SCHED_HTML_BEG_STYLE "<style>\n"
+#define SCHED_HTML_END_STYLE "</style>\n"
+#define SCHED_HTML_CSS_BEG_LINK "<link rel=\"stylesheet\" type=\"text/css\" href=\""
+#define SCHED_HTML_CSS_END_LINK "\" />\n"
+
+#define SCHED_HTML_CSS_CONTENT "table{\n \
+	border-collapse: collapse;\n \
+	empty-cells: show;\n \
+	margin: 0.4cm;\n \
+}\n \
+td{\n \
+	padding: 10px 5px;\n \
+	border: 1px solid black;\n \
+}\n \
+th{\n \
+	padding: 5px;\n \
+	border-left: 1px dotted black;\n \
+	border-right: 1px dotted black;\n \
+}\n \
+.sc{\n \
+	border-style: none;\n \
+	padding: 0px;\n \
+}\n \
+h2 {\n \
+	border-bottom: 1px solid #666;\n \
+}\n \
+h2 span {\n \
+	position: relative;\n \
+	left: -0.3em;\n \
+	bottom: -0.6em;\n \
+	padding: 1px 0.5em;\n \
+	border-style: solid;\n \
+	border-width: 1px 1px 1px 0.8em;\n \
+	border-color: #666 #666 #666 #008;\n \
+	background-color: #ddd;\n \
+}\n \
+.space{border-style: none;}\n \
+.not{background-color: white;}\n \
+.t1{background-color: yellow;}\n \
+.t2{background-color: purple;}\n \
+.t3{background-color: red;}\n \
+.t4{background-color: silver;}\n \
+.t5{background-color: teal;}\n \
+.t6{background-color: aqua;}\n \
+.t7{background-color: olive;}\n \
+.t8{background-color: navy;}\n \
+.t9{background-color: maroon;}\n \
+.t10{background-color: lime;}\n \
+.t11{background-color: green;}\n \
+.t12{background-color: gray;}\n \
+.t13{background-color: fuchsia;}\n \
+.t14{background-color: blue;}\n \
+.t15{background-color: black;}\n \
+.t16{background-color: white;}"
 
 class TMLTask;
 class TMLTransaction;
diff --git a/simulators/c++2/src_simulator/sim/Simulator.cpp b/simulators/c++2/src_simulator/sim/Simulator.cpp
index 3f510478132a95a1e479ae2a18577d23255178b6..b1c2360bdebd1cfcfc7c9d08f3e699f4ad1f2873 100644
--- a/simulators/c++2/src_simulator/sim/Simulator.cpp
+++ b/simulators/c++2/src_simulator/sim/Simulator.cpp
@@ -191,7 +191,6 @@ ID Simulator::schedule2GraphDOT(std::ostream& iDOTFile, std::ostream& iAUTFile,
   return aStartState;
 }
 
-
 void Simulator::schedule2Graph(std::string& iTraceFileName) const{
   struct timeval aBegin,aEnd;
   gettimeofday(&aBegin,NULL);
@@ -282,14 +281,52 @@ void Simulator::latencies2XML(std::ostringstream& glob, int id1, int id2) {
   }
 }
 
-
-void Simulator::schedule2HTML(std::string& iTraceFileName) const{
+void Simulator::schedule2HTML(std::string& iTraceFileName) const {
   struct timeval aBegin,aEnd;
   gettimeofday(&aBegin,NULL);
   std::ofstream myfile (iTraceFileName.c_str());
-  if (myfile.is_open()){
-    myfile << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
-    myfile << "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n<head>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"schedstyle.css\" />\n<meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-1\" />\n<title>Scheduling</title>\n</head>\n<body>\n";
+
+  if (myfile.is_open()) {
+  	// DB: Issue #4
+    myfile << SCHED_HTML_DOC; // <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n
+    myfile << SCHED_HTML_BEG_HTML; // <html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n
+    myfile << SCHED_HTML_BEG_HEAD; // <head>\n
+
+    const int indexSlash = iTraceFileName.find_last_of( "/" );
+    const int indexExt = iTraceFileName.find_last_of( EXT_SEP );
+    std::string cssFileName;
+
+    if ( indexExt >= 0 ) {
+    	cssFileName = iTraceFileName.substr( indexSlash + 1, indexExt - indexSlash ) + CSS;
+    }
+    else {
+    	cssFileName = iTraceFileName.substr( indexSlash + 1 ).append( EXT_SEP ).append( CSS );
+    }
+
+    const std::string cssFullFileName = iTraceFileName.substr( 0, indexSlash + 1 ) + cssFileName;
+    std::ofstream cssfile( cssFullFileName.c_str() );
+
+    if ( cssfile.is_open() ) {
+    	cssfile << SCHED_HTML_CSS_CONTENT;
+        cssfile.close();
+
+        myfile << SCHED_HTML_CSS_BEG_LINK;
+        myfile << cssFileName;
+        myfile << SCHED_HTML_CSS_END_LINK;
+    }
+    else {
+        myfile << SCHED_HTML_BEG_STYLE; // <style>\n";
+        myfile << SCHED_HTML_CSS_CONTENT;
+        myfile << SCHED_HTML_END_STYLE; // <style>\n";
+    }
+
+    myfile << SCHED_HTML_META; // <meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-1\" />\n
+    myfile << SCHED_HTML_BEG_TITLE; // <title>
+    myfile << "Scheduling";
+    myfile << SCHED_HTML_END_TITLE; // </title>\n
+    myfile << SCHED_HTML_END_HEAD; // </head>\n
+    myfile << SCHED_HTML_BEG_BODY; // <body>\n
+
     //for(CPUList::const_iterator i=_simComp->getCPUIterator(false); i != _simComp->getCPUIterator(true); ++i){
     for(CPUList::const_iterator i=_simComp->getCPUList().begin(); i != _simComp->getCPUList().end(); ++i){
       (*i)->schedule2HTML(myfile);
@@ -299,11 +336,16 @@ void Simulator::schedule2HTML(std::string& iTraceFileName) const{
       (*j)->schedule2HTML(myfile);
     }
     //for_each(iCPUlist.begin(), iCPUlist.end(),std::bind2nd(std::mem_fun(&CPU::schedule2HTML),myfile));
-    myfile << "</body>\n</html>\n";
+
+    myfile << SCHED_HTML_END_BODY; // </body>\n
+    myfile << SCHED_HTML_END_HTML; // </html>\n
+
     myfile.close();
   }
-  else
+  else {
     std::cout << "Unable to open HTML output file." << std::endl;
+  }
+
   gettimeofday(&aEnd,NULL);
   std::cout << "The HTML output took " << getTimeDiff(aBegin,aEnd) << "usec. File: " << iTraceFileName << std::endl;
 }
diff --git a/src/.classpath b/src/.classpath
index b2389cc1db7702f29a95ac740312456c4e248d87..b0a20ce480faefffa9e02bf6dd2e750473b5b15a 100644
--- a/src/.classpath
+++ b/src/.classpath
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry excluding="android/|tmltranslator/modelcompiler/DMAContext.java|tmltranslator/toavatar/TML2AvatarDP.java|ui/sd/TGConnectorMessageAsyncOrSyncSD.java|tmltranslator/modelcompiler/PECUnit.java|launch_configurations/|compiler/tmlgrammar/|compiler/tmlCPparser/" kind="src" path=""/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="lib" path="/bin/commons-codec-1.10.jar"/>
-	<classpathentry kind="lib" path="/bin/commons-io-2.4.jar"/>
-	<classpathentry kind="lib" path="/bin/derby.jar"/>
-	<classpathentry kind="lib" path="/bin/derbynet.jar"/>
-	<classpathentry kind="lib" path="/bin/JavaPlot.jar"/>
-	<classpathentry kind="lib" path="/bin/jsoup-1.8.1.jar"/>
-	<classpathentry kind="lib" path="/bin/opencloud.jar"/>
-	<classpathentry kind="lib" path="/bin/gs-core-1.3.jar"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="android/|tmltranslator/modelcompiler/DMAContext.java|tmltranslator/toavatar/TML2AvatarDP.java|ui/sd/TGConnectorMessageAsyncOrSyncSD.java|tmltranslator/modelcompiler/PECUnit.java|launch_configurations/|compiler/tmlgrammar/|compiler/tmlCPparser/" kind="src" path=""/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="lib" path="/bin/commons-codec-1.10.jar"/>
+	<classpathentry kind="lib" path="/bin/commons-io-2.4.jar"/>
+	<classpathentry kind="lib" path="/bin/derby.jar"/>
+	<classpathentry kind="lib" path="/bin/derbynet.jar"/>
+	<classpathentry kind="lib" path="/bin/JavaPlot.jar"/>
+	<classpathentry kind="lib" path="/bin/jsoup-1.8.1.jar"/>
+	<classpathentry kind="lib" path="/bin/opencloud.jar"/>
+	<classpathentry kind="lib" path="/bin/gs-core-1.3.jar"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/src/Test.java b/src/Test.java
index 2307fb3cfa4b652ecceeeab2471741b69b234049..9d61fdb80fdd85f4123398ffb8368c0257f30c14 100755
--- a/src/Test.java
+++ b/src/Test.java
@@ -110,6 +110,9 @@ public class Test  {
     	nbOfPb += evalBoolInt("1+2==3", true, false);
 	nbOfPb += evalBoolInt("1+2+3+4+5==3+7", false, false);
 	nbOfPb += evalBoolInt("(1+2==3)==(8==4+5)", false, false);
+	nbOfPb += evalBoolInt("2*3==6", true, false);
+	nbOfPb += evalBoolInt("1*4+2==6", true, false);
+	nbOfPb += evalBoolInt("2+1*4==6", true, false);
 	//nbOfPb += evalBoolInt("1+2==3", true, false);
     	
     	System.out.println("Nb of problems found:" + nbOfPb);
@@ -125,13 +128,15 @@ public class Test  {
     	
     	if ((val != expectedValue) || (err != expectedError)) {
     	
-    	System.out.println("\nUnexpected result or error-------------------->Result of " + s + " =" + val);
-    	if (bee.hasError()) {
+	    System.out.println("\nUnexpected result or error-------------------->Result of " + s + " =" + val);
+	    if (bee.hasError()) {
     		System.out.println("Error = " + bee.getFullError());
-    	}
-    	System.out.println("\n\n");
-    	return 1;
-    	}
+	    }
+	    System.out.println("\n\n");
+	    return 1;
+    	} else {
+	    System.out.println("all ok\n\n");
+	}
     	
     	return 0;
     	
diff --git a/src/avatartranslator/toproverif/AVATAR2ProVerif.java b/src/avatartranslator/toproverif/AVATAR2ProVerif.java
index a95368b344094abc1b5fe44cd69c5b59f0702ee1..082abfe7f62fb011139bb477cd37bd68955620a8 100755
--- a/src/avatartranslator/toproverif/AVATAR2ProVerif.java
+++ b/src/avatartranslator/toproverif/AVATAR2ProVerif.java
@@ -83,6 +83,8 @@ public class AVATAR2ProVerif implements AvatarTranslator {
     private final static String SK_ENCRYPT = "sencrypt";
     private final static String SK_DECRYPT = "sdecrypt";
 
+    private final static String DH_DH = "DH";
+
     private final static String MAC_MAC = "MAC";
     private final static String MAC_VERIFYMAC = "verifyMAC";
 
@@ -447,6 +449,10 @@ public class AVATAR2ProVerif implements AvatarTranslator {
         this.spec.addDeclaration (new ProVerifFunc       (SK_ENCRYPT, new String[] {"bitstring", "bitstring"}, "bitstring"));
         this.spec.addDeclaration (new ProVerifReduc      (new ProVerifVar[] {new ProVerifVar ("x", "bitstring"), new ProVerifVar ("k", "bitstring")}, SK_DECRYPT + " (" + SK_ENCRYPT + " (x, k), k) = x"));
 
+        this.spec.addDeclaration (new ProVerifComment    ("Diffie-Hellman"));
+        this.spec.addDeclaration (new ProVerifFunc       (DH_DH, new String[] {"bitstring", "bitstring"}, "bitstring"));
+        this.spec.addDeclaration (new ProVerifEquation   (new ProVerifVar[] {new ProVerifVar ("x", "bitstring"), new ProVerifVar ("y", "bitstring")}, DH_DH + " (" + PK_PK + " (x), y) = " + DH_DH + " (" + PK_PK + " (y), x)"));
+
         this.spec.addDeclaration (new ProVerifComment    ("MAC"));
         this.spec.addDeclaration (new ProVerifFunc       (MAC_MAC, new String[] {"bitstring", "bitstring"}, "bitstring"));
         this.spec.addDeclaration (new ProVerifFunc       (MAC_VERIFYMAC, new String[] {"bitstring", "bitstring", "bitstring"}, "bitstring",
diff --git a/src/myutil/BoolExpressionEvaluator.java b/src/myutil/BoolExpressionEvaluator.java
index 9d149d7ebdf9cc0476d9a5c1919978e1040b18e8..b339a950adf8f472ddead46be1313389e98c3ea6 100755
--- a/src/myutil/BoolExpressionEvaluator.java
+++ b/src/myutil/BoolExpressionEvaluator.java
@@ -57,9 +57,9 @@ public class BoolExpressionEvaluator {
         public static final int INT_BINARY_OP = 3;
         public static final int BOOL_BINARY_OP = 4;
         public static final int BOOL_UNARY_OP = 5;
-	public static final int OPEN_PARENTHESIS = 6;
+        public static final int OPEN_PARENTHESIS = 6;
 
-	public int id = (int)(Math.ceil(Math.random() * 10000000));
+        public int id = (int)(Math.ceil(Math.random() * 10000000));
         public int i = -18;
         public boolean b;
         public int res; //-1: available, 0:int, 2:bool, 3:ko, others : OPs
@@ -126,34 +126,34 @@ public class BoolExpressionEvaluator {
             return news;
         }
 
-	public IntBoolRes addOpenParenthesis() {
-	    if ((left != null) && (right != null)) {
-		return null;
-	    }
+        public IntBoolRes addOpenParenthesis() {
+            if ((left != null) && (right != null)) {
+                return null;
+            }
 
-	    if ((left != null) && (op == 0)) {
-		return null;
-	    }
+            if ((left != null) && (op == 0)) {
+                return null;
+            }
 
-	    IntBoolRes newE = new IntBoolRes(OPEN_PARENTHESIS, OPEN_PAR_TOKEN, this);
+            IntBoolRes newE = new IntBoolRes(OPEN_PARENTHESIS, OPEN_PAR_TOKEN, this);
 
-	    if (left == null) {
-		left = newE;
-	    } else {
-		right = newE;
-	    }
+            if (left == null) {
+                left = newE;
+            } else {
+                right = newE;
+            }
 
-	    
-	    IntBoolRes topPar = new IntBoolRes();
-	    topPar.father = newE;
-	    newE.left = topPar;
-	    
-	    return topPar;
-	    
-	}
 
+            IntBoolRes topPar = new IntBoolRes();
+            topPar.father = newE;
+            newE.left = topPar;
 
-	public IntBoolRes addIntOperator(int _op) {
+            return topPar;
+
+        }
+
+
+        public IntBoolRes addIntOperator(int _op) {
             // Must have at least one right operator
             TraceManager.addDev("Add int op");
             if (left == null) {
@@ -164,11 +164,12 @@ public class BoolExpressionEvaluator {
             if (right != null) {
                 // Must change the tree structure according to the operator priority
                 IntBoolRes newE = new IntBoolRes(INT_BINARY_OP, _op, this);
-                newE.left = right;
-		newE.father = right.father;
+		return addBinaryChangeTreeStruct(newE);
+                /*newE.left = right;
+                newE.father = right.father;
                 right.father = newE;
-		this.right = newE;
-                return newE;
+                this.right = newE;
+                return newE;*/
             }
 
 
@@ -177,6 +178,7 @@ public class BoolExpressionEvaluator {
             if (!isAvailable()) {
                 return null;
             }
+	    
             res = INT_BINARY_OP;
             op = _op;
             return this;
@@ -193,70 +195,82 @@ public class BoolExpressionEvaluator {
             if (right != null) {
                 // Must change the tree structure accoding to the operator priority
                 IntBoolRes newE = new IntBoolRes(BOOL_BINARY_OP, _op, this);
+                return addBinaryChangeTreeStruct(newE);
 
-		// Look for the father
-		if (isABinaryOperator() && (newE.getPriority()>=getPriority())) {
-		     newE.left = right;
-		     right.father = newE;
-		     this.right = newE;
-		     return newE;
-		} else {
-		    // We must find the father where to add the operator
-		    // We thus look for the first father with no binary operator
-		    // or with a binary operator that has a higher priority
-		    IntBoolRes targetF = this.father;
-
-		    boolean go = true;
-		    while(go == true) {
-			if (targetF == null) {
-			    go = false;
-			} else {
-			    if (!(targetF.isABinaryOperator())) {
-				go = false;
-			    } else if (targetF.hasAHigherPriorityThan(newE)) {
-				targetF = targetF.father;
-			    }
-			}
-		    }
-
-		    if (targetF == null) {
-			newE.left = top;
-			top.father = newE;
-			top = newE;
-			return top;
-		    } else {
-			if (targetF.isABinaryOperator()) {
-			    newE.right = targetF.left;
-			    targetF.left = newE;
-			    newE.father = targetF.father;
-			    targetF.father = newE;
-			    return newE;
-			} else {
-			    newE.right = targetF.right;
-			    targetF.right = newE;
-			    newE.father = targetF;
-			    return newE;
-			}
-			
-		    }
-
-		    
-		}
-		
-                
             }
 
-
             // Element added at the root of the current
             // If the current has no type ..
             if (!isAvailable()) {
                 return null;
             }
+	    
             res = BOOL_BINARY_OP;
             op = _op;
             return this;
         }
 
+        public IntBoolRes addBinaryChangeTreeStruct(IntBoolRes newE) {
+
+            // Look for the father
+            if (isABinaryOperator() && (newE.getPriority()>=getPriority())) {
+                newE.left = right;
+                right.father = newE;
+                this.right = newE;
+                return newE;
+            } else {
+                // We must find the father where to add the operator
+                // We thus look for the first father with no binary operator
+                // or with a binary operator that has a higher priority
+                TraceManager.addDev("----- Must find a target");
+                IntBoolRes targetF = this.father;
+
+                boolean go = true;
+                while(go == true) {
+		    TraceManager.addDev("in loop targetF=" + targetF);
+                    if (targetF == null) {
+                        go = false;
+                    } else {
+                        if (!(targetF.isABinaryOperator())) {
+                            go = false;
+                        } else if (targetF.hasAHigherPriorityThan(newE)) {
+			    IntBoolRes nexT = targetF.father;
+			    if (nexT == targetF) {
+				go = false;
+			    }
+			    targetF = nexT;
+                        } else {
+			    go = false;
+			}
+                    }
+                }
+
+                TraceManager.addDev("**************** Considering targetF=" + targetF);
+
+                if (targetF == null) {
+                    newE.left = top;
+                    top.father = newE;
+		    newE.father = null;
+                    top = newE;
+                    return top;
+                } else {
+                    if (targetF.isABinaryOperator()) {
+                        newE.right = targetF.left;
+                        targetF.left = newE;
+                        newE.father = targetF.father;
+                        targetF.father = newE;
+                        return newE;
+                    } else {
+                        TraceManager.addDev("Unaryoperator");
+                        newE.left = targetF.left;
+                        targetF.left = newE;
+                        newE.father = targetF;
+                        return newE;
+                    }
+                }
+            }
+        }
+
 
         public boolean isAvailable() {
             return res == AVAILABLE;
@@ -274,44 +288,45 @@ public class BoolExpressionEvaluator {
             return (res == INT_TERM) || (res == BOOL_TERM);
         }
 
-	public boolean isRight() {
-	    if (father != null) {
-		return father.right == this;
-	    }
-	    return false;
-	}
-
-	public boolean isLeft() {
-	    if (father != null) {
-		return father.left == this;
-	    }
-	    return false;
-	}
-
-	public boolean isABinaryOperator(){
-	    return (res == INT_BINARY_OP) || (res == BOOL_BINARY_OP);
-	}
-
-	public boolean hasAHigherPriorityThan(IntBoolRes _other) {
-	    return (getPriority() > _other.getPriority());
-	}
-
-	public int getPriority() {
-	    if (res == BOOL_BINARY_OP) {
-		return 1;
-	    }
-
-	    if (res == INT_BINARY_OP) {
-		if ((op == PLUS_TOKEN) || (op == MINUS_TOKEN))
-		    return 2;
-		else {
-		    return 3;
-		}
-	    }
-
-	    return 0;
-	}
-	
+        public boolean isRight() {
+            if (father != null) {
+                return father.right == this;
+            }
+            return false;
+        }
+
+        public boolean isLeft() {
+            if (father != null) {
+                return father.left == this;
+            }
+            return false;
+        }
+
+        public boolean isABinaryOperator(){
+            return (res == INT_BINARY_OP) || (res == BOOL_BINARY_OP);
+        }
+
+        public boolean hasAHigherPriorityThan(IntBoolRes _other) {
+            return (getPriority() > _other.getPriority());
+        }
+
+        public int getPriority() {
+            if (res == BOOL_BINARY_OP) {
+                return 1;
+            }
+
+            if (res == INT_BINARY_OP) {
+                if ((op == PLUS_TOKEN) || (op == MINUS_TOKEN))
+                    return 2;
+                else {
+                    TraceManager.addDev("HAVE PRIORITY 3");
+                    return 3;
+                }
+            }
+
+            return 0;
+        }
+
 
         public String getValueString() {
             if (res == 0) {
@@ -351,11 +366,23 @@ public class BoolExpressionEvaluator {
             return null;
         }
 
-	private Integer makeIntegerOp(int op, int elt1, int elt2) {
+        private Integer makeIntegerOp(int op, int elt1, int elt2) {
             if (op == PLUS_TOKEN) {
                 return new Integer(elt1 + elt2);
             }
 
+            if (op == MINUS_TOKEN) {
+                return new Integer(elt1 - elt2);
+            }
+
+            if (op == MULT_TOKEN) {
+                return new Integer(elt1 * elt2);
+            }
+
+            if (op == DIV_TOKEN) {
+                return new Integer(elt1 / elt2);
+            }
+
             return null;
         }
 
@@ -384,19 +411,19 @@ public class BoolExpressionEvaluator {
                 }
             }
 
-	    if (res == INT_BINARY_OP) {
-		TraceManager.addDev("Found binary int expr");
+            if (res == INT_BINARY_OP) {
+                TraceManager.addDev("Found binary int expr");
                 if ((right == null) || (left == null)) {
                     errorMessage = "Badly formatted binary int operator";
-		    TraceManager.addDev("Found binary int expr in null");
+                    TraceManager.addDev("Found binary int expr in null");
                     return null;
                 }
                 Object ob1 = right.computeValue();
                 Object ob2 = left.computeValue();
                 if ((ob1 == null) || (ob2 == null)) {
-		    TraceManager.addDev("Found binary int expr in null elt");
+                    TraceManager.addDev("Found binary int expr in null elt");
                     return null;
-		}
+                }
                 if ((ob1 instanceof Integer) && (ob2 instanceof Integer)) {
                     int elt1 = analysisArg(ob1);
                     int elt2 = analysisArg(ob2);
@@ -405,62 +432,62 @@ public class BoolExpressionEvaluator {
                     TraceManager.addDev("Result int=" + result);
                     return result;
                 } else {
-		    errorMessage = "Invalid operands in integer operations";
-		    return null;
-		}
+                    errorMessage = "Invalid operands in integer operations";
+                    return null;
+                }
             }
 
-            
-	    if (res == OPEN_PARENTHESIS) {
-		if (left == null) {
-		    return null;
-		}
-		return left.computeValue();
-	    }
 
-	    errorMessage = "Badly formatted expression from:" + this;
-	    
+            if (res == OPEN_PARENTHESIS) {
+                if (left == null) {
+                    return null;
+                }
+                return left.computeValue();
+            }
+
+            errorMessage = "Badly formatted expression from:" + this;
+
             return null;
         }
 
 
-	public String toString() {
-	    return toString(0);
-	}
-
-	public String toString(int dec) {
-	    String s = "\n" + newLine(dec);
-	    if (isRight()) {
-		s = s + "R->";
-	    }
-	    if (isLeft()) {
-		s = s + "L->";
-	    }
-	    s += id;
-	    if (father == null) {
-		s += " father= no";
-	    } else {
-		s += " father=" + id;
-	    }
-	    s += " type:" + res + " op:" + toStringAction(op) + " int:" + i + " bool:" + b;
-	    
-	    if (left != null) {
-		s += left.toString(dec+1);
-	    }
-	    if (right != null) {
-		s += right.toString(dec+1);
-	    }
-	    return s;
-	}
-
-	private String newLine(int dec) {
-	    String s = "";
-	    for (int i=0; i<dec; i++) {
-		s += "\t";
-	    }
-	    return s;
-	}
-	
+        public String toString() {
+            return toString(0);
+        }
+
+        public String toString(int dec) {
+            String s = "\n" + newLine(dec);
+            if (isRight()) {
+                s = s + "R->";
+            }
+            if (isLeft()) {
+                s = s + "L->";
+            }
+            s += id;
+            if (father == null) {
+                s += " father= no";
+            } else {
+                s += " father=" + id;
+            }
+            s += " type:" + res + " op:" + toStringAction(op) + " int:" + i + " bool:" + b;
+
+            if (left != null) {
+                s += left.toString(dec+1);
+            }
+            if (right != null) {
+                s += right.toString(dec+1);
+            }
+            return s;
+        }
+
+        private String newLine(int dec) {
+            String s = "";
+            for (int i=0; i<dec; i++) {
+                s += "\t";
+            }
+            return s;
+        }
+
     }
 
     //  ----------------------------------------
@@ -472,7 +499,7 @@ public class BoolExpressionEvaluator {
     public static final int FALSE_VALUE = 0;
 
 
-    
+
     public static final int NUMBER_TOKEN = -1;
     public static final int BOOL_TOKEN = -2;
     public static final int EQUAL_TOKEN = -3;
@@ -496,13 +523,13 @@ public class BoolExpressionEvaluator {
     public static final String [] VAL_S = {"true", "false", "nb", "bool", "==", "<", ">", "not", "or", "and", "=<", ">=", "eol", "(", ")", " ", "!=", "-", "/", "*", "+"};
 
     public static String toStringAction(int val) {
-	if (val >= 0) {
-	    return VAL_S[val];
-	}
+        if (val >= 0) {
+            return VAL_S[val];
+        }
 
-	return VAL_S[Math.abs(val) + 1];
+        return VAL_S[Math.abs(val) + 1];
     }
-    
+
 
     public static int ID = 0;
 
@@ -1497,18 +1524,18 @@ public class BoolExpressionEvaluator {
             return false;
         }
 
-	
-	TraceManager.addDev("Tree of " + _expr + ": " + resIBR.toString() + "\nEnd of tree");
+
+        TraceManager.addDev("Tree of " + _expr + ": " + resIBR.toString() + "\nEnd of tree");
 
 
         Object res = resIBR.computeValue();
 
-	if (res == null) {
+        if (res == null) {
             return false;
         }
 
-	TraceManager.addDev("Tree of " + _expr + ": " + resIBR.toString() + "\nEnd of tree");
-	
+        TraceManager.addDev("Tree of " + _expr + ": " + resIBR.toString() + "\nEnd of tree");
+
         if(res instanceof Integer) {
             errorMessage = "Integer expression. Was expecting a boolean expression";
         }
@@ -1517,13 +1544,13 @@ public class BoolExpressionEvaluator {
             TraceManager.addDev("Error: " + getError());
         }
 
-	if (res instanceof Boolean) {
-	    boolean result = ((Boolean)(res)).booleanValue();
-	    return result;
-	}
+        if (res instanceof Boolean) {
+            boolean result = ((Boolean)(res)).booleanValue();
+            return result;
+        }
+
+        errorMessage = "Invalid boolean expression";
 
-	errorMessage = "Invalid boolean expression";
- 
         return false;
     }
 
@@ -1563,11 +1590,11 @@ public class BoolExpressionEvaluator {
     }
 
     public IntBoolRes parseAndMakeTree(IntBoolRes current, String token) {
-	ID = 0;
+        ID = 0;
         IntBoolRes newElt;
 
-	TraceManager.addDev("Dealing with token=" + token + " with current=" + current);
-	
+        TraceManager.addDev("<><><><><><> Dealing with token:" + token);
+
 
         char c1 = token.charAt(0);
 
@@ -1602,103 +1629,88 @@ public class BoolExpressionEvaluator {
 
         }
 
-	// INT BINARY OP
-	if (c1 == '+') {
+        // INT BINARY OP
+        if (c1 == '+') {
             newElt = current.addIntOperator(PLUS_TOKEN);
             if (newElt == null) {
-                errorMessage = "Badly placed bool operator:" + token;
+                errorMessage = "Badly placed int operator:" + token;
                 return null;
             }
             return newElt;
         }
 
-        // BOOL BINARY OP
-        if (c1 == '=') {
-            newElt = current.addBinaryOperator(EQUAL_TOKEN);
+        if (c1 == '-') {
+            newElt = current.addIntOperator(MINUS_TOKEN);
             if (newElt == null) {
-                errorMessage = "Badly placed bool operator:" + token;
+                errorMessage = "Badly placed int operator:" + token;
                 return null;
             }
             return newElt;
         }
 
-	// PARENTHESIS
-	if (c1 == '(') {
-	    
-	    newElt = current.addOpenParenthesis();
+        if (c1 == '*') {
+            newElt = current.addIntOperator(MULT_TOKEN);
             if (newElt == null) {
-                errorMessage = "Badly placed parenthesis:";
+                errorMessage = "Badly placed int operator:" + token;
                 return null;
             }
             return newElt;
-	}
-
-
-	if (c1 == ')') {
-	    // Must find corresponding parenthesis
-	    // Looking for father of the correspoing parenthesis;
-	    IntBoolRes father = current.father;
-	    while(father != null) {
-		if (father.op == OPEN_PAR_TOKEN) {
-		    break;
-		}
-		father = father.father;
-	    }
-	    if (father == null) {
-		return null;
-	    }
-	    return father.father;
-	    
-	}
-
-
-        return null;
-
-
-    }
-
-    /*public IntBoolRes findValueFromExpr() {
-      String s = getNextToken();
-      if (s == null) {
-      return null;
-      }
+        }
 
-      // Space symbol
-      if (c1 == ' ') {
-      return findValueFromExpr();
-      }
+        if (c1 == '/') {
+            newElt = current.addIntOperator(DIV_TOKEN);
+            if (newElt == null) {
+                errorMessage = "Badly placed int operator:" + token;
+                return null;
+            }
+            return newElt;
+        }
 
-      // Terminal symbol
-      if (Character.isDigit(c1)) {
-      try {
-      return new IntBoolRes(Integer.valueOf(s).intValue());
-      } catch (NumberFormatException x) {
-      errorMessage = "Illegal format for a number.";
-      return null;
-      }
-      }
 
-      if (c1 == 't') {
+        // BOOL BINARY OP
+        if (c1 == '=') {
+            newElt = current.addBinaryOperator(EQUAL_TOKEN);
+            if (newElt == null) {
+                errorMessage = "Badly placed bool operator:" + token;
+                return null;
+            }
+            return newElt;
+        }
 
-      return IntBoolRes(true);
-      }
+        // PARENTHESIS
+        if (c1 == '(') {
 
-      if (c1 == 'f') {
-      return IntBoolRes(false);
-      }
+            newElt = current.addOpenParenthesis();
+            if (newElt == null) {
+                errorMessage = "Badly placed parenthesis:";
+                return null;
+            }
+            return newElt;
+        }
 
-      // int operator
-      if (c1 == '+') {
-      return IntBoolRes(IntBoolRes.INT_OP, PLUS, c1);
-      }
 
+        if (c1 == ')') {
+            // Must find corresponding parenthesis
+            // Looking for father of the correspoing parenthesis;
+            IntBoolRes father = current.father;
+            while(father != null) {
+                if (father.op == OPEN_PAR_TOKEN) {
+                    break;
+                }
+                father = father.father;
+            }
+            if (father == null) {
+                return null;
+            }
+            return father.father;
 
+        }
 
 
-      return null;
-      }*/
+        return null;
 
 
+    }
 
 
 }
diff --git a/src/proverifspec/ProVerifEquation.java b/src/proverifspec/ProVerifEquation.java
new file mode 100644
index 0000000000000000000000000000000000000000..53ca95e6572377783e9b01231a2ce75ffea91ad1
--- /dev/null
+++ b/src/proverifspec/ProVerifEquation.java
@@ -0,0 +1,60 @@
+/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille
+ *
+ * ludovic.apvrille AT enst.fr
+ *
+ * This software is a computer program whose purpose is to allow the
+ * edition of TURTLE analysis, design and deployment diagrams, to
+ * allow the generation of RT-LOTOS or Java code from this diagram,
+ * and at last to allow the analysis of formal validation traces
+ * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP
+ * from INRIA Rhone-Alpes.
+ *
+ * This software is governed by the CeCILL  license under French law and
+ * abiding by the rules of distribution of free software.  You can  use,
+ * modify and/ or redistribute the software under the terms of the CeCILL
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * "http://www.cecill.info".
+ *
+ * As a counterpart to the access to the source code and  rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty  and the software's author,  the holder of the
+ * economic rights,  and the successive licensors  have only  limited
+ * liability.
+ *
+ * In this respect, the user's attention is drawn to the risks associated
+ * with loading,  using,  modifying and/or developing or reproducing the
+ * software by the user in light of its specific status of free software,
+ * that may mean  that it is complicated to manipulate,  and  that  also
+ * therefore means  that it is reserved for developers  and  experienced
+ * professionals having in-depth computer knowledge. Users are therefore
+ * encouraged to load and test the software's suitability as regards their
+ * requirements in conditions enabling the security of their systems and/or
+ * data to be ensured and,  more generally, to use and operate it in the
+ * same conditions as regards security.
+ *
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL license and that you accept its terms.
+ *
+ * /**
+ * Class ProVerifFunc
+ * Creation: 06/04/2017
+ * @version 1.0 06/04/2017
+ * @author Florian LUGOU
+ * @see
+ */
+
+package proverifspec;
+
+public class ProVerifEquation implements ProVerifDeclaration {
+    protected ProVerifVar[] vars;
+    protected String formula;
+
+    public ProVerifEquation (ProVerifVar[] _vars, String _formula) {
+        this.vars = _vars;
+        this.formula = _formula;
+    }
+
+    public void translate (ProVerifSyntaxer _syntaxer, int _alinea) {
+        _syntaxer.translateEquation (this, _alinea);
+    }
+}
diff --git a/src/proverifspec/ProVerifPiSyntaxer.java b/src/proverifspec/ProVerifPiSyntaxer.java
index 7b3f1749f6e6b09a6969ea46ada7ce2659bbb948..731852d25057bdeba81d7d640dfe2f71971248c8 100644
--- a/src/proverifspec/ProVerifPiSyntaxer.java
+++ b/src/proverifspec/ProVerifPiSyntaxer.java
@@ -83,6 +83,11 @@ public class ProVerifPiSyntaxer extends ProVerifSyntaxer {
         this.fullSpec += ".";
     }
 
+    protected void translateEquation (ProVerifEquation _node, int _alinea) {
+        this.fullSpec += "\n" + this.printAlinea (_alinea);
+        this.fullSpec += "equation " + _node.formula + ".";
+    }
+
     protected void translateVar (ProVerifVar _node, int _alinea) {
         this.fullSpec += "\n" + this.printAlinea (_alinea);
         if (_node.priv)
diff --git a/src/proverifspec/ProVerifPitypeSyntaxer.java b/src/proverifspec/ProVerifPitypeSyntaxer.java
index be64de5a75b0fc2e71dd2ebd7653119b1bba9917..ed39452f829cd20da303b311f85718a83e1b44eb 100644
--- a/src/proverifspec/ProVerifPitypeSyntaxer.java
+++ b/src/proverifspec/ProVerifPitypeSyntaxer.java
@@ -117,6 +117,24 @@ public class ProVerifPitypeSyntaxer extends ProVerifSyntaxer {
         this.fullSpec += ".";
     }
 
+    protected void translateEquation (ProVerifEquation _node, int _alinea) {
+        this.fullSpec += "\n" + this.printAlinea (_alinea);
+        this.fullSpec += "equation ";
+        if (_node.vars.length > 0) {
+            this.fullSpec += "forall ";
+            boolean first = true;
+            for (ProVerifVar var: _node.vars) {
+                if (first)
+                    first = false;
+                else
+                    this.fullSpec += ", ";
+                this.fullSpec += var.name + ": " + var.type;
+            }
+            this.fullSpec += "; ";
+        }
+        this.fullSpec += _node.formula + ".";
+    }
+
     protected void translateVar (ProVerifVar _node, int _alinea) {
         this.fullSpec += "\n" + this.printAlinea (_alinea);
         this.fullSpec += "free " + _node.name + ": " + _node.type;
diff --git a/src/proverifspec/ProVerifSyntaxer.java b/src/proverifspec/ProVerifSyntaxer.java
index 9ed8d2440c939f8edbadabb7e8b456ee88d5c31e..318cd20b1c2553b1f4d173f983900b77e9cfbc51 100644
--- a/src/proverifspec/ProVerifSyntaxer.java
+++ b/src/proverifspec/ProVerifSyntaxer.java
@@ -185,6 +185,7 @@ public abstract class ProVerifSyntaxer {
     protected abstract void translateConst (ProVerifConst _node, int _alinea);
     protected abstract void translateFunc (ProVerifFunc _node, int _alinea);
     protected abstract void translateReduc (ProVerifReduc _node, int _alinea);
+    protected abstract void translateEquation (ProVerifEquation _node, int _alinea);
     protected abstract void translateVar (ProVerifVar _node, int _alinea);
     protected abstract void translateQueryAtt (ProVerifQueryAtt _node, int _alinea);
     protected abstract void translateQueryEv (ProVerifQueryEv _node, int _alinea);
diff --git a/src/tmltranslator/toproverif/TML2ProVerif.java b/src/tmltranslator/toproverif/TML2ProVerif.java
index 6ecbf603504e342e44803a59aa6abd9ba82dbc02..af640f50fd4f49491d94eb6638a0043c021d13b9 100644
--- a/src/tmltranslator/toproverif/TML2ProVerif.java
+++ b/src/tmltranslator/toproverif/TML2ProVerif.java
@@ -82,6 +82,8 @@ public class TML2ProVerif {
     private final static String SK_ENCRYPT = "sencrypt";
     private final static String SK_DECRYPT = "sdecrypt";
 
+    private final static String DH_DH = "DH";
+
     private final static String MAC_MAC = "MAC";
     private final static String MAC_VERIFYMAC = "verifyMAC";
 
@@ -317,6 +319,10 @@ public class TML2ProVerif {
         this.spec.addDeclaration (new ProVerifFunc       (SK_ENCRYPT, new String[] {"bitstring", "bitstring"}, "bitstring"));
         this.spec.addDeclaration (new ProVerifReduc      (new ProVerifVar[] {new ProVerifVar ("x", "bitstring"), new ProVerifVar ("k", "bitstring")}, SK_DECRYPT + " (" + SK_ENCRYPT + " (x, k), k) = x"));
 
+        this.spec.addDeclaration (new ProVerifComment    ("Diffie-Hellman"));
+        this.spec.addDeclaration (new ProVerifFunc       (DH_DH, new String[] {"bitstring", "bitstring"}, "bitstring"));
+        this.spec.addDeclaration (new ProVerifEquation   (new ProVerifVar[] {new ProVerifVar ("x", "bitstring"), new ProVerifVar ("y", "bitstring")}, DH_DH + " (" + PK_PK + " (x), y) = " + DH_DH + " (" + PK_PK + " (y), x)"));
+
         this.spec.addDeclaration (new ProVerifComment    ("MAC"));
         this.spec.addDeclaration (new ProVerifFunc       (MAC_MAC, new String[] {"bitstring", "bitstring"}, "bitstring"));
         this.spec.addDeclaration (new ProVerifFunc       (MAC_VERIFYMAC, new String[] {"bitstring", "bitstring", "bitstring"}, "bitstring",
diff --git a/src/ui/ADDPanel.java b/src/ui/ADDPanel.java
index e4f99484a478d62ffc879a26fc6ab3ee5891b9f4..2007521124e7343687ca3497631e76f741136c18 100755
--- a/src/ui/ADDPanel.java
+++ b/src/ui/ADDPanel.java
@@ -98,8 +98,11 @@ public class ADDPanel extends TURTLEPanel {
         return true;
     }
 
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"ADD\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+    public String saveHeaderInXml(String extensionToName) {
+	if (extensionToName == null) {
+	    return "<Modeling type=\"ADD\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	}
+	return "<Modeling type=\"ADD\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
     }
 
     public String saveTailInXml() {
diff --git a/src/ui/AnalysisPanel.java b/src/ui/AnalysisPanel.java
index e1c337f714ab5ad7a3bc0bc427b5e7ba6cf6f9d2..d8400451a4bfca79c326eb9f02ee51c7ada44231 100755
--- a/src/ui/AnalysisPanel.java
+++ b/src/ui/AnalysisPanel.java
@@ -245,8 +245,11 @@ public class AnalysisPanel extends TURTLEPanel {
       }*/
 
 
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"Analysis\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+    public String saveHeaderInXml(String extensionToName) {
+	if (extensionToName == null) {
+	    return "<Modeling type=\"Analysis\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	}
+	return "<Modeling type=\"Analysis\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
     }
 
     public String saveTailInXml() {
diff --git a/src/ui/AttackTreePanel.java b/src/ui/AttackTreePanel.java
index 3825bfe93e7a82ad3dff9d2a64a1267267dbbe44..8243a898e81d21e1735c4c3722282a8dd6eeb545 100755
--- a/src/ui/AttackTreePanel.java
+++ b/src/ui/AttackTreePanel.java
@@ -112,9 +112,11 @@ public class AttackTreePanel extends TURTLEPanel {
         return true;
     }
 
-
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"AttackTree\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+    public String saveHeaderInXml(String extensionToName) {
+	if (extensionToName == null) {
+	    return "<Modeling type=\"AttackTree\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	}
+	return "<Modeling type=\"AttackTree\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
     }
 
     public String saveTailInXml() {
diff --git a/src/ui/AvatarAnalysisPanel.java b/src/ui/AvatarAnalysisPanel.java
index a286eb445bc674f285daf58ab507f93357b01af2..d71622d6469a52b51f319a0ccfe71f6730293087 100755
--- a/src/ui/AvatarAnalysisPanel.java
+++ b/src/ui/AvatarAnalysisPanel.java
@@ -199,8 +199,12 @@ public class AvatarAnalysisPanel extends TURTLEPanel {
     }
 
 
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"Avatar Analysis\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+    public String saveHeaderInXml(String extensionToName) {
+	if (extensionToName == null) {
+	    return "<Modeling type=\"Avatar Analysis\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	}
+	return "<Modeling type=\"Avatar Analysis\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
+	
     }
 
     public String saveTailInXml() {
diff --git a/src/ui/AvatarDesignPanel.java b/src/ui/AvatarDesignPanel.java
index 825fbd3ac8daa88e0da77238ca4238a47da5b443..daa5a61fb0fae5c60eb45c9e1dbd8fcfad4b85b7 100644
--- a/src/ui/AvatarDesignPanel.java
+++ b/src/ui/AvatarDesignPanel.java
@@ -202,9 +202,12 @@ public class AvatarDesignPanel extends TURTLEPanel {
     public LinkedList<String> getAllTimers(String _name) {
         return abdp.getAllTimersOfBlock(_name);
     }
-
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"AVATAR Design\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+    
+    public String saveHeaderInXml(String extensionToName) {
+	if (extensionToName == null) {
+	    return "<Modeling type=\"AVATAR Design\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	}
+	return "<Modeling type=\"AVATAR Design\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
     }
 
     public String saveTailInXml() {
diff --git a/src/ui/AvatarMADsPanel.java b/src/ui/AvatarMADsPanel.java
index 3be35dd185385be7ffb2ceaf2717eed5195f124d..f3591db9c5a0ec5444460020142d60e606008b6d 100644
--- a/src/ui/AvatarMADsPanel.java
+++ b/src/ui/AvatarMADsPanel.java
@@ -132,9 +132,12 @@ public class AvatarMADsPanel extends TURTLEPanel {
  
     }
 	
-    
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"Avatar MAD\" nameTab=\"" + mgui.getTabName(this) + "\" >\n"; 
+
+    public String saveHeaderInXml(String extensionToName) {
+	if (extensionToName == null) {
+	    return "<Modeling type=\"Avatar MAD\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	}
+	return "<Modeling type=\"Avatar MAD\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
     }
     
     public String saveTailInXml() {
diff --git a/src/ui/AvatarMethod.java b/src/ui/AvatarMethod.java
index 44954829087d3b879960105d4260c6d9c1415cf7..6ed469873fcc2300d8155710c15f9367caf6d804 100644
--- a/src/ui/AvatarMethod.java
+++ b/src/ui/AvatarMethod.java
@@ -66,6 +66,7 @@ public class AvatarMethod {
         "Key getpk(Message cert)",
         "Message sencrypt(Message msg, Key k)",
         "Message sdecrypt(Message msg, Key k)",
+        "Key DH(Key pubK, Key privK)",
         "Message hash(Message msg)",
         "Message MAC(Message msg, Key k)",
         "bool verifyMAC(Message msg, Key k, Message macmsg)",
diff --git a/src/ui/AvatarMethodologyPanel.java b/src/ui/AvatarMethodologyPanel.java
index ec1eb3e178d828792f0d0dbcc0e27b1a9a75cfff..b1de004ee3c4512b0d6e99b56240945d1ef2510f 100755
--- a/src/ui/AvatarMethodologyPanel.java
+++ b/src/ui/AvatarMethodologyPanel.java
@@ -1,48 +1,48 @@
 /**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille
 
-ludovic.apvrille AT enst.fr
-
-This software is a computer program whose purpose is to allow the 
-edition of TURTLE analysis, design and deployment diagrams, to 
-allow the generation of RT-LOTOS or Java code from this diagram, 
-and at last to allow the analysis of formal validation traces 
-obtained from external tools, e.g. RTL from LAAS-CNRS and CADP 
-from INRIA Rhone-Alpes.
-
-This software is governed by the CeCILL  license under French law and
-abiding by the rules of distribution of free software.  You can  use, 
-modify and/ or redistribute the software under the terms of the CeCILL
-license as circulated by CEA, CNRS and INRIA at the following URL
-"http://www.cecill.info". 
-
-As a counterpart to the access to the source code and  rights to copy,
-modify and redistribute granted by the license, users are provided only
-with a limited warranty  and the software's author,  the holder of the
-economic rights,  and the successive licensors  have only  limited
-liability. 
-
-In this respect, the user's attention is drawn to the risks associated
-with loading,  using,  modifying and/or developing or reproducing the
-software by the user in light of its specific status of free software,
-that may mean  that it is complicated to manipulate,  and  that  also
-therefore means  that it is reserved for developers  and  experienced
-professionals having in-depth computer knowledge. Users are therefore
-encouraged to load and test the software's suitability as regards their
-requirements in conditions enabling the security of their systems and/or 
-data to be ensured and,  more generally, to use and operate it in the 
-same conditions as regards security. 
-
-The fact that you are presently reading this means that you have had
-knowledge of the CeCILL license and that you accept its terms.
-
-/**
- * Class AvatarMethodologyPanel
- * Managenemt of the avatar methodology panels
- * Creation: 27/08/2014
- * @version 1.1 27/08/2014
- * @author Ludovic APVRILLE
- * @see MainGUI
- */
+   ludovic.apvrille AT enst.fr
+
+   This software is a computer program whose purpose is to allow the
+   edition of TURTLE analysis, design and deployment diagrams, to
+   allow the generation of RT-LOTOS or Java code from this diagram,
+   and at last to allow the analysis of formal validation traces
+   obtained from external tools, e.g. RTL from LAAS-CNRS and CADP
+   from INRIA Rhone-Alpes.
+
+   This software is governed by the CeCILL  license under French law and
+   abiding by the rules of distribution of free software.  You can  use,
+   modify and/ or redistribute the software under the terms of the CeCILL
+   license as circulated by CEA, CNRS and INRIA at the following URL
+   "http://www.cecill.info".
+
+   As a counterpart to the access to the source code and  rights to copy,
+   modify and redistribute granted by the license, users are provided only
+   with a limited warranty  and the software's author,  the holder of the
+   economic rights,  and the successive licensors  have only  limited
+   liability.
+
+   In this respect, the user's attention is drawn to the risks associated
+   with loading,  using,  modifying and/or developing or reproducing the
+   software by the user in light of its specific status of free software,
+   that may mean  that it is complicated to manipulate,  and  that  also
+   therefore means  that it is reserved for developers  and  experienced
+   professionals having in-depth computer knowledge. Users are therefore
+   encouraged to load and test the software's suitability as regards their
+   requirements in conditions enabling the security of their systems and/or
+   data to be ensured and,  more generally, to use and operate it in the
+   same conditions as regards security.
+
+   The fact that you are presently reading this means that you have had
+   knowledge of the CeCILL license and that you accept its terms.
+
+   /**
+   * Class AvatarMethodologyPanel
+   * Managenemt of the avatar methodology panels
+   * Creation: 27/08/2014
+   * @version 1.1 27/08/2014
+   * @author Ludovic APVRILLE
+   * @see MainGUI
+   */
 
 package ui;
 
@@ -56,174 +56,176 @@ import java.util.*;
 
 public class AvatarMethodologyPanel extends TURTLEPanel {
     public AvatarMethodologyDiagramPanel dmd;
-    
+
     public AvatarMethodologyPanel(MainGUI _mgui) {
         super(_mgui);
-		
+
         tabbedPane = new JTabbedPane();
-		UIManager.put("TabbedPane.tabAreaBackground", _mgui.BACK_COLOR);
-		UIManager.put("TabbedPane.selected", _mgui.BACK_COLOR);
-		SwingUtilities.updateComponentTreeUI(tabbedPane);
-		//tabbedPane.setOpaque(true);
-		
+        UIManager.put("TabbedPane.tabAreaBackground", _mgui.BACK_COLOR);
+        UIManager.put("TabbedPane.selected", _mgui.BACK_COLOR);
+        SwingUtilities.updateComponentTreeUI(tabbedPane);
+        //tabbedPane.setOpaque(true);
+
         cl = new ChangeListener() {
-            public void stateChanged(ChangeEvent e){
-                mgui.paneDiplodocusMethodologyAction(e);
-            }
-        };
+                public void stateChanged(ChangeEvent e){
+                    mgui.paneDiplodocusMethodologyAction(e);
+                }
+            };
         tabbedPane.addChangeListener(cl);
         tabbedPane.addMouseListener(new TURTLEPanelPopupListener(this, mgui));
-		
+
     }
-    
+
     // Put the methodology
     public void initElements() {
-    	 TGComponent tgc1 = dmd.addComponent(150, 100, TGComponentManager.AVATARMETHODOLOGY_REF_ASSUMPTIONS, false);
-    	 TGComponent tgc2 = dmd.addComponent(250, 200, TGComponentManager.AVATARMETHODOLOGY_REF_REQUIREMENT, false);
-    	 TGComponent tgc3 = dmd.addComponent(350, 300, TGComponentManager.AVATARMETHODOLOGY_REF_ANALYSIS, false);   
-    	 TGComponent tgc4 = dmd.addComponent(450, 400, TGComponentManager.AVATARMETHODOLOGY_REF_DESIGN, false);
-    	 TGComponent tgc5 = dmd.addComponent(550, 500, TGComponentManager.AVATARMETHODOLOGY_REF_PROTOTYPE, false);
-    	 TGComponent tgc6 = dmd.addComponent(200, 400, TGComponentManager.AVATARMETHODOLOGY_REF_PROPERTIES, false);
-    	 
-    	 
-    	 //Connectors
-    	 
-    	 // Assumptions -> reqs
-    	 TGConnectingPoint p1, p2;
-    	 p1 = tgc1.getTGConnectingPointAtIndex(0);
-    	 p2 = tgc2.getTGConnectingPointAtIndex(0);
-    	 Vector listPoint = new Vector();
-    	 Point p = new Point(210, 235);
-    	 listPoint.add(p);
-    	 TGConnector tgco = TGComponentManager.addConnector(p1.getX(), p1.getY(), TGComponentManager.AVATARMETHODOLOGY_CONNECTOR, dmd, p1, p2, listPoint);
-    	 p1.setFree(false);
-    	 p2.setFree(false);
-    	 dmd.getComponentList().add(0, tgco);
-    	 
-    	 // Reqs -> Analysis
-    	 p1 = tgc2.getTGConnectingPointAtIndex(1);
-    	 p2 = tgc3.getTGConnectingPointAtIndex(0);
-    	 listPoint = new Vector();
-    	 p = new Point(310, 335);
-    	 listPoint.add(p);
-    	 tgco = TGComponentManager.addConnector(p1.getX(), p1.getY(), TGComponentManager.AVATARMETHODOLOGY_CONNECTOR, dmd, p1, p2, listPoint);
-    	 p1.setFree(false);
-    	 p2.setFree(false);
-    	 dmd.getComponentList().add(0, tgco);    
-    	 
-    	 // Analysis -> Design
-    	 p1 = tgc3.getTGConnectingPointAtIndex(1);
-    	 p2 = tgc4.getTGConnectingPointAtIndex(0);
-    	 listPoint = new Vector();
-    	 p = new Point(410, 435);
-    	 listPoint.add(p);
-    	 tgco = TGComponentManager.addConnector(p1.getX(), p1.getY(), TGComponentManager.AVATARMETHODOLOGY_CONNECTOR, dmd, p1, p2, listPoint);
-    	 p1.setFree(false);
-    	 p2.setFree(false);
-    	 dmd.getComponentList().add(0, tgco);      
-    	 
-    	 // Design -> Prototyping
-    	 p1 = tgc4.getTGConnectingPointAtIndex(1);
-    	 p2 = tgc5.getTGConnectingPointAtIndex(0);
-    	 listPoint = new Vector();
-    	 p = new Point(510, 535);
-    	 listPoint.add(p);
-    	 tgco = TGComponentManager.addConnector(p1.getX(), p1.getY(), TGComponentManager.AVATARMETHODOLOGY_CONNECTOR, dmd, p1, p2, listPoint);
-    	 p1.setFree(false);
-    	 p2.setFree(false);
-    	 dmd.getComponentList().add(0, tgco);
-    	 
-    	 // Reqs -> Prop
-    	 p1 = tgc2.getTGConnectingPointAtIndex(2);
-    	 p2 = tgc6.getTGConnectingPointAtIndex(0);
-    	 listPoint = new Vector();
-    	 tgco = TGComponentManager.addConnector(p1.getX(), p1.getY(), TGComponentManager.AVATARMETHODOLOGY_CONNECTOR, dmd, p1, p2, listPoint);
-    	 p1.setFree(false);
-    	 p2.setFree(false);
-    	 dmd.getComponentList().add(0, tgco);
-    	 
-    	 
+        TGComponent tgc1 = dmd.addComponent(150, 100, TGComponentManager.AVATARMETHODOLOGY_REF_ASSUMPTIONS, false);
+        TGComponent tgc2 = dmd.addComponent(250, 200, TGComponentManager.AVATARMETHODOLOGY_REF_REQUIREMENT, false);
+        TGComponent tgc3 = dmd.addComponent(350, 300, TGComponentManager.AVATARMETHODOLOGY_REF_ANALYSIS, false);
+        TGComponent tgc4 = dmd.addComponent(450, 400, TGComponentManager.AVATARMETHODOLOGY_REF_DESIGN, false);
+        TGComponent tgc5 = dmd.addComponent(550, 500, TGComponentManager.AVATARMETHODOLOGY_REF_PROTOTYPE, false);
+        TGComponent tgc6 = dmd.addComponent(200, 400, TGComponentManager.AVATARMETHODOLOGY_REF_PROPERTIES, false);
+
+
+        //Connectors
+
+        // Assumptions -> reqs
+        TGConnectingPoint p1, p2;
+        p1 = tgc1.getTGConnectingPointAtIndex(0);
+        p2 = tgc2.getTGConnectingPointAtIndex(0);
+        Vector listPoint = new Vector();
+        Point p = new Point(210, 235);
+        listPoint.add(p);
+        TGConnector tgco = TGComponentManager.addConnector(p1.getX(), p1.getY(), TGComponentManager.AVATARMETHODOLOGY_CONNECTOR, dmd, p1, p2, listPoint);
+        p1.setFree(false);
+        p2.setFree(false);
+        dmd.getComponentList().add(0, tgco);
+
+        // Reqs -> Analysis
+        p1 = tgc2.getTGConnectingPointAtIndex(1);
+        p2 = tgc3.getTGConnectingPointAtIndex(0);
+        listPoint = new Vector();
+        p = new Point(310, 335);
+        listPoint.add(p);
+        tgco = TGComponentManager.addConnector(p1.getX(), p1.getY(), TGComponentManager.AVATARMETHODOLOGY_CONNECTOR, dmd, p1, p2, listPoint);
+        p1.setFree(false);
+        p2.setFree(false);
+        dmd.getComponentList().add(0, tgco);
+
+        // Analysis -> Design
+        p1 = tgc3.getTGConnectingPointAtIndex(1);
+        p2 = tgc4.getTGConnectingPointAtIndex(0);
+        listPoint = new Vector();
+        p = new Point(410, 435);
+        listPoint.add(p);
+        tgco = TGComponentManager.addConnector(p1.getX(), p1.getY(), TGComponentManager.AVATARMETHODOLOGY_CONNECTOR, dmd, p1, p2, listPoint);
+        p1.setFree(false);
+        p2.setFree(false);
+        dmd.getComponentList().add(0, tgco);
+
+        // Design -> Prototyping
+        p1 = tgc4.getTGConnectingPointAtIndex(1);
+        p2 = tgc5.getTGConnectingPointAtIndex(0);
+        listPoint = new Vector();
+        p = new Point(510, 535);
+        listPoint.add(p);
+        tgco = TGComponentManager.addConnector(p1.getX(), p1.getY(), TGComponentManager.AVATARMETHODOLOGY_CONNECTOR, dmd, p1, p2, listPoint);
+        p1.setFree(false);
+        p2.setFree(false);
+        dmd.getComponentList().add(0, tgco);
+
+        // Reqs -> Prop
+        p1 = tgc2.getTGConnectingPointAtIndex(2);
+        p2 = tgc6.getTGConnectingPointAtIndex(0);
+        listPoint = new Vector();
+        tgco = TGComponentManager.addConnector(p1.getX(), p1.getY(), TGComponentManager.AVATARMETHODOLOGY_CONNECTOR, dmd, p1, p2, listPoint);
+        p1.setFree(false);
+        p2.setFree(false);
+        dmd.getComponentList().add(0, tgco);
+
+
     }
-    
+
     public void init() {
-    	init("Avatar methodology");
+        init("Avatar methodology");
     }
-    
+
     public void init(String name) {
         addAvatarMethodologyDiagram(name);
-       
+
         // Requirement Diagram toolbar
         //addRequirementDiagram("Requirement Diagram");
-        
+
         //jsp.setVisible(true);
     }
-    
+
     public boolean addAvatarMethodologyDiagram(String s) {
         AvatarMethodologyDiagramToolbar dmdt = new AvatarMethodologyDiagramToolbar(mgui);
         toolbars.add(dmdt);
-        
+
         toolBarPanel = new JPanel();
-		//toolBarPanel.setBackground(Color.red);
+        //toolBarPanel.setBackground(Color.red);
         toolBarPanel.setLayout(new BorderLayout());
-		//toolBarPanel.setBackground(ColorManager.MainTabbedPaneSelect);
-        
-        //Class	diagram
+        //toolBarPanel.setBackground(ColorManager.MainTabbedPaneSelect);
+
+        //Class diagram
         dmd = new AvatarMethodologyDiagramPanel(mgui, dmdt);
         dmd.setName(s);
         dmd.tp = this;
         tdp = dmd;
         panels.add(dmd);
-        JScrollDiagramPanel jsp	= new JScrollDiagramPanel(dmd);
+        JScrollDiagramPanel jsp = new JScrollDiagramPanel(dmd);
         dmd.jsp = jsp;
         jsp.setWheelScrollingEnabled(true);
         jsp.getVerticalScrollBar().setUnitIncrement(mgui.INCREMENT);
         toolBarPanel.add(dmdt, BorderLayout.NORTH);
         toolBarPanel.add(jsp, BorderLayout.CENTER);
         tabbedPane.addTab(s, IconManager.imgic99, toolBarPanel, "Opens avatar methodology");
-        tabbedPane.setSelectedIndex(0); 
+        tabbedPane.setSelectedIndex(0);
         JPanel toolBarPanel = new JPanel();
         toolBarPanel.setLayout(new BorderLayout());
-        
+
         //TGComponent tgc = TGComponentManager.addComponent(100, 100, TGComponentManager.DIPLODODUSMETHODOLOGY_REF_APPLICATION, dmd);
         mgui.changeMade(dmd, TDiagramPanel.NEW_COMPONENT);
-        
+
         return true;
     }
-	
 
-	
 
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"Avatar Methodology\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+
+    public String saveHeaderInXml(String extensionToName) {
+	if (extensionToName == null) {
+	    return "<Modeling type=\"Avatar Methodology\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	}
+	return "<Modeling type=\"Avatar Methodology\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
     }
-    
+
     public String saveTailInXml() {
         return "</Modeling>\n\n\n";
     }
-    
+
     public String toString() {
         return mgui.getTitleAt(this) + " (Avatar Methodology)";
     }
-    
+
     public boolean removeEnabled(int index) {
         if (panels.size() > 1) {
             return true;
         }
         return false;
     }
-    
+
     public boolean renameEnabled(int index) {
         if (panels.size() == 0) {
             return false;
         }
-        
-		
+
+
         return true;
     }
-	
-	public boolean isAvatarMethodologyEnabled() {
-		return true;
-	}
-    
 
-}
\ No newline at end of file
+    public boolean isAvatarMethodologyEnabled() {
+        return true;
+    }
+
+
+}
diff --git a/src/ui/AvatarRequirementPanel.java b/src/ui/AvatarRequirementPanel.java
index 74d76a28a627078d439a7976190dd105f0e20c80..7bdd7d2f82de589ddad5b66810bf1874a1bae47e 100755
--- a/src/ui/AvatarRequirementPanel.java
+++ b/src/ui/AvatarRequirementPanel.java
@@ -145,9 +145,11 @@ public class AvatarRequirementPanel extends TURTLEPanel {
         return true;
     }
 
-
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"Avatar Requirement\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+    public String saveHeaderInXml(String extensionToName) {
+        if (extensionToName == null) {
+            return "<Modeling type=\"Avatar Requirement\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+        }
+        return "<Modeling type=\"Avatar Requirement\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
     }
 
     public String saveTailInXml() {
diff --git a/src/ui/DefaultText.java b/src/ui/DefaultText.java
index 434d1e9201d426f8b1b54eeef39b9e4cb149b126..e0703c71c8f60e7463e5b5b10dad75110378bcf8 100755
--- a/src/ui/DefaultText.java
+++ b/src/ui/DefaultText.java
@@ -49,8 +49,8 @@ package ui;
 
 public class DefaultText  {
 
-    public static String BUILD = "12180";
-    public static String DATE = "2017/04/04 02:01:04 CET";
+    public static String BUILD = "12187";
+    public static String DATE = "2017/04/10 02:01:03 CET";
     
     
     public static StringBuffer sbAbout = makeAbout();
@@ -60,7 +60,7 @@ public class DefaultText  {
     }
     
     public static String getVersion() {
-        return "0.99-beta2"; /* Set new release March. 30th, 2017 */
+        return "0.99-beta4"; /* Set new release April. 6th, 2017 (to come)*/
     }
     
     public static String getFullVersion() {
diff --git a/src/ui/DeploymentPanel.java b/src/ui/DeploymentPanel.java
index 71998c44abd1e11c9f40898b705a9ad925a917e0..5da70b25339270387a19248a3de6d3615450ef67 100755
--- a/src/ui/DeploymentPanel.java
+++ b/src/ui/DeploymentPanel.java
@@ -97,8 +97,12 @@ public class DeploymentPanel extends TURTLEPanel {
  
     }
     
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"Deployment\" nameTab=\"" + mgui.getTabName(this) + "\" >\n"; 
+    public String saveHeaderInXml(String extensionToName) {
+	if (extensionToName == null) {
+	    return "<Modeling type=\"Deployment\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	}
+	return "<Modeling type=\"Deployment\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
+	
     }
     
     public String saveTailInXml() {
diff --git a/src/ui/DesignPanel.java b/src/ui/DesignPanel.java
index 054630708d2e2a439e62c3158ee5dc9e32ff69ca..2378089435aa561f8fa783ca121ad3abefa932c8 100755
--- a/src/ui/DesignPanel.java
+++ b/src/ui/DesignPanel.java
@@ -141,9 +141,13 @@ public class DesignPanel extends TURTLEPanel implements TURTLEDesignPanelInterfa
         //jsp.setVisible(true);
  
     }
-    
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"Design\" nameTab=\"" + mgui.getTabName(this) + "\" >\n"; 
+
+    public String saveHeaderInXml(String extensionToName) {
+	if (extensionToName == null) {
+	    return "<Modeling type=\"Design\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	}
+	return "<Modeling type=\"Design\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
+	
     }
     
     public String saveTailInXml() {
diff --git a/src/ui/DiplodocusMethodologyPanel.java b/src/ui/DiplodocusMethodologyPanel.java
index 80d1507cada225c4f8ad0f24afe512f127ad8410..323b0d7cccbddb1ced632de9b32a34be4edc6a06 100755
--- a/src/ui/DiplodocusMethodologyPanel.java
+++ b/src/ui/DiplodocusMethodologyPanel.java
@@ -163,9 +163,11 @@ public class DiplodocusMethodologyPanel extends TURTLEPanel {
 
 
 
-
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"Diplodocus Methodology\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+    public String saveHeaderInXml(String extensionToName) {
+	if (extensionToName == null) {
+	    return "<Modeling type=\"Diplodocus Methodology\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	}
+	return "<Modeling type=\"Diplodocus Methodology\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
     }
 
     public String saveTailInXml() {
diff --git a/src/ui/GTURTLEModeling.java b/src/ui/GTURTLEModeling.java
index 778ec7cd70003e30d53f5d611f6fc8bbe26871e3..f4675115b001e217d8126c5a5c211c20ca773ad8 100755
--- a/src/ui/GTURTLEModeling.java
+++ b/src/ui/GTURTLEModeling.java
@@ -4308,6 +4308,10 @@ public class GTURTLEModeling {
     }
 
     public String makeXMLFromTurtleModeling(int index) {
+	return makeXMLFromTurtleModeling(index, null);
+    }
+
+    public String makeXMLFromTurtleModeling(int index, String extensionToName) {
         StringBuffer sb = new StringBuffer();
         //sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<TURTLEGMODELING>\n\n");
         sb.append("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n\n<TURTLEGMODELING version=\"" + DefaultText.getVersion() + "\">\n\n");
@@ -4321,7 +4325,7 @@ public class GTURTLEModeling {
         for(i=0; i<panels.size(); i++) {
             if ((index == -1) || (i == index)) {
                 tp = (TURTLEPanel)(panels.elementAt(i));
-                s = tp.saveInXML();
+                s = tp.saveInXML(extensionToName);
                 if (s == null) {
                     return null;
                 }
diff --git a/src/ui/MainGUI.java b/src/ui/MainGUI.java
index ac8e18d0a97f06e98fd023e7ca0d2b2c92355b29..a3622f0977646cba618b7fbfd28bdde0f6cde179 100644
--- a/src/ui/MainGUI.java
+++ b/src/ui/MainGUI.java
@@ -151,8 +151,6 @@ import ui.osad.TURTLEOSActivityDiagramPanel;
 import ui.prosmd.ProactiveSMDPanel;
 import ui.req.Requirement;
 import ui.req.RequirementDiagramPanel;
-import ui.sd.*;
-import ui.sd2.*;
 import ui.tmlad.TMLActivityDiagramPanel;
 import ui.tmlcd.TMLTaskDiagramPanel;
 import ui.tmlcompd.TMLCCompositeComponent;
@@ -7130,7 +7128,7 @@ public  class MainGUI implements ActionListener, WindowListener, KeyListener, Pe
     }
 
     public void cloneTab(int index) {
-        String s = gtm.makeXMLFromTurtleModeling(index);
+        String s = gtm.makeXMLFromTurtleModeling(index, "_cloned");
         try {
             gtm.loadModelingFromXML(s);
             changeMade(null, -1);
diff --git a/src/ui/NCPanel.java b/src/ui/NCPanel.java
index af50c3ac41462aba03ebe7c12b84cd57da045e1a..611f0ddb3c4441ce9bc6ea51e9d0d6ffe571ea12 100755
--- a/src/ui/NCPanel.java
+++ b/src/ui/NCPanel.java
@@ -1,49 +1,49 @@
 /**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille
 
-ludovic.apvrille AT enst.fr
-
-This software is a computer program whose purpose is to allow the 
-edition of TURTLE analysis, design and deployment diagrams, to 
-allow the generation of RT-LOTOS or Java code from this diagram, 
-and at last to allow the analysis of formal validation traces 
-obtained from external tools, e.g. RTL from LAAS-CNRS and CADP 
-from INRIA Rhone-Alpes.
-
-This software is governed by the CeCILL  license under French law and
-abiding by the rules of distribution of free software.  You can  use, 
-modify and/ or redistribute the software under the terms of the CeCILL
-license as circulated by CEA, CNRS and INRIA at the following URL
-"http://www.cecill.info". 
-
-As a counterpart to the access to the source code and  rights to copy,
-modify and redistribute granted by the license, users are provided only
-with a limited warranty  and the software's author,  the holder of the
-economic rights,  and the successive licensors  have only  limited
-liability. 
-
-In this respect, the user's attention is drawn to the risks associated
-with loading,  using,  modifying and/or developing or reproducing the
-software by the user in light of its specific status of free software,
-that may mean  that it is complicated to manipulate,  and  that  also
-therefore means  that it is reserved for developers  and  experienced
-professionals having in-depth computer knowledge. Users are therefore
-encouraged to load and test the software's suitability as regards their
-requirements in conditions enabling the security of their systems and/or 
-data to be ensured and,  more generally, to use and operate it in the 
-same conditions as regards security. 
-
-The fact that you are presently reading this means that you have had
-knowledge of the CeCILL license and that you accept its terms.
-
-/**
- * Class NCPanel
- * Managenemt of NC panels
- * Creation: 18/11/2008
- * @version 1.0 18/11/2008
- * @author Ludovic APVRILLE
- * @see MainGUI
- */
- 
+   ludovic.apvrille AT enst.fr
+
+   This software is a computer program whose purpose is to allow the
+   edition of TURTLE analysis, design and deployment diagrams, to
+   allow the generation of RT-LOTOS or Java code from this diagram,
+   and at last to allow the analysis of formal validation traces
+   obtained from external tools, e.g. RTL from LAAS-CNRS and CADP
+   from INRIA Rhone-Alpes.
+
+   This software is governed by the CeCILL  license under French law and
+   abiding by the rules of distribution of free software.  You can  use,
+   modify and/ or redistribute the software under the terms of the CeCILL
+   license as circulated by CEA, CNRS and INRIA at the following URL
+   "http://www.cecill.info".
+
+   As a counterpart to the access to the source code and  rights to copy,
+   modify and redistribute granted by the license, users are provided only
+   with a limited warranty  and the software's author,  the holder of the
+   economic rights,  and the successive licensors  have only  limited
+   liability.
+
+   In this respect, the user's attention is drawn to the risks associated
+   with loading,  using,  modifying and/or developing or reproducing the
+   software by the user in light of its specific status of free software,
+   that may mean  that it is complicated to manipulate,  and  that  also
+   therefore means  that it is reserved for developers  and  experienced
+   professionals having in-depth computer knowledge. Users are therefore
+   encouraged to load and test the software's suitability as regards their
+   requirements in conditions enabling the security of their systems and/or
+   data to be ensured and,  more generally, to use and operate it in the
+   same conditions as regards security.
+
+   The fact that you are presently reading this means that you have had
+   knowledge of the CeCILL license and that you accept its terms.
+
+   /**
+   * Class NCPanel
+   * Managenemt of NC panels
+   * Creation: 18/11/2008
+   * @version 1.0 18/11/2008
+   * @author Ludovic APVRILLE
+   * @see MainGUI
+   */
+
 package ui;
 
 import java.awt.*;
@@ -53,37 +53,37 @@ import java.util.*;
 import ui.ncdd.*;
 
 public class NCPanel extends TURTLEPanel {
-    public NCDiagramPanel ncdp; 
+    public NCDiagramPanel ncdp;
     public Vector validated, ignored;
-    
+
     public NCPanel(MainGUI _mgui) {
         super(_mgui);
         tabbedPane = new JTabbedPane();
         cl = new ChangeListener() {
-            public void stateChanged(ChangeEvent e){
-                mgui.paneDesignAction(e);
-            }
-        };
+                public void stateChanged(ChangeEvent e){
+                    mgui.paneDesignAction(e);
+                }
+            };
         tabbedPane.addChangeListener(cl);
         tabbedPane.addMouseListener(new TURTLEPanelPopupListener(this, mgui));
     }
-    
+
     public void init() {
-         
+
         //  Class Diagram toolbar
         NCDiagramToolBar toolBarNC = new NCDiagramToolBar(mgui);
         toolbars.add(toolBarNC);
-        
+
         toolBarPanel = new JPanel();
         toolBarPanel.setLayout(new BorderLayout());
-        
-        //Class	diagram
+
+        //Class diagram
         ncdp = new NCDiagramPanel(mgui, toolBarNC);
         ncdp.setName("Network Calculus Diagram");
         //tmlap.tp = this;
         tdp = ncdp;
         panels.add(ncdp); // Always first in list
-        JScrollDiagramPanel jsp	= new JScrollDiagramPanel(ncdp);
+        JScrollDiagramPanel jsp = new JScrollDiagramPanel(ncdp);
         ncdp.jsp = jsp;
         jsp.setWheelScrollingEnabled(true);
         jsp.getVerticalScrollBar().setUnitIncrement(mgui.INCREMENT);
@@ -91,27 +91,30 @@ public class NCPanel extends TURTLEPanel {
         toolBarPanel.add(jsp, BorderLayout.CENTER);
         tabbedPane.addTab("Network Calculus Diagram", IconManager.imgic60, toolBarPanel, "Opens network calculus diagram");
         tabbedPane.setSelectedIndex(0);
-        
+
         //jsp.setVisible(true);
- 
+
     }
     
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"NC diagram\" nameTab=\"" + mgui.getTabName(this) + "\" >\n"; 
+    public String saveHeaderInXml(String extensionToName) {
+	if (extensionToName == null) {
+	    return "<Modeling type=\"NC diagram\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	}
+	return "<Modeling type=\"NC diagram\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
     }
-    
+
     public String saveTailInXml() {
         return "</Modeling>\n\n\n";
     }
-    
+
     public String toString() {
         return "NC diagram: " + mgui.getTitleAt(this);
     }
-	
-	/*public void renameMapping(String oldName, String newName) {
-		if (tmlap != null) {
-			tmlap.renameMapping(oldName, newName);
-		}
-	}*/
-    
-}
\ No newline at end of file
+
+    /*public void renameMapping(String oldName, String newName) {
+      if (tmlap != null) {
+      tmlap.renameMapping(oldName, newName);
+      }
+      }*/
+
+}
diff --git a/src/ui/ProactiveDesignPanel.java b/src/ui/ProactiveDesignPanel.java
index c7585822c9d84f129fe5f3a8fa8ba4851a741dd7..20665e5275fad93f4fc9a11b7bd6c23ff80f8b8f 100755
--- a/src/ui/ProactiveDesignPanel.java
+++ b/src/ui/ProactiveDesignPanel.java
@@ -190,8 +190,12 @@ public class ProactiveDesignPanel extends TURTLEPanel {
         
     } 
 
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"ProActive Design\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+    public String saveHeaderInXml(String extensionToName) {
+	if (extensionToName == null) {
+	    return "<Modeling type=\"ProActive Design\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	}
+	return "<Modeling type=\"ProActive Design\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
+	
     }
     
     public String saveTailInXml() {
@@ -301,4 +305,4 @@ public class ProactiveDesignPanel extends TURTLEPanel {
 
 
 
-}
\ No newline at end of file
+}
diff --git a/src/ui/RequirementPanel.java b/src/ui/RequirementPanel.java
index 7e7bb27beb3bce46b3042ad356184261ac97732a..8f685a8ba4a0badc4b1022aba2ae4a363aee58a2 100755
--- a/src/ui/RequirementPanel.java
+++ b/src/ui/RequirementPanel.java
@@ -1,48 +1,48 @@
 /**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille
 
-ludovic.apvrille AT enst.fr
-
-This software is a computer program whose purpose is to allow the 
-edition of TURTLE analysis, design and deployment diagrams, to 
-allow the generation of RT-LOTOS or Java code from this diagram, 
-and at last to allow the analysis of formal validation traces 
-obtained from external tools, e.g. RTL from LAAS-CNRS and CADP 
-from INRIA Rhone-Alpes.
-
-This software is governed by the CeCILL  license under French law and
-abiding by the rules of distribution of free software.  You can  use, 
-modify and/ or redistribute the software under the terms of the CeCILL
-license as circulated by CEA, CNRS and INRIA at the following URL
-"http://www.cecill.info". 
-
-As a counterpart to the access to the source code and  rights to copy,
-modify and redistribute granted by the license, users are provided only
-with a limited warranty  and the software's author,  the holder of the
-economic rights,  and the successive licensors  have only  limited
-liability. 
-
-In this respect, the user's attention is drawn to the risks associated
-with loading,  using,  modifying and/or developing or reproducing the
-software by the user in light of its specific status of free software,
-that may mean  that it is complicated to manipulate,  and  that  also
-therefore means  that it is reserved for developers  and  experienced
-professionals having in-depth computer knowledge. Users are therefore
-encouraged to load and test the software's suitability as regards their
-requirements in conditions enabling the security of their systems and/or 
-data to be ensured and,  more generally, to use and operate it in the 
-same conditions as regards security. 
-
-The fact that you are presently reading this means that you have had
-knowledge of the CeCILL license and that you accept its terms.
-
-/**
- * Class RequirementPanel
- * Managenemt of requirement panels
- * Creation: 15/05/2006
- * @version 1.1 08/09/2009
- * @author Ludovic APVRILLE
- * @see MainGUI
- */
+   ludovic.apvrille AT enst.fr
+
+   This software is a computer program whose purpose is to allow the
+   edition of TURTLE analysis, design and deployment diagrams, to
+   allow the generation of RT-LOTOS or Java code from this diagram,
+   and at last to allow the analysis of formal validation traces
+   obtained from external tools, e.g. RTL from LAAS-CNRS and CADP
+   from INRIA Rhone-Alpes.
+
+   This software is governed by the CeCILL  license under French law and
+   abiding by the rules of distribution of free software.  You can  use,
+   modify and/ or redistribute the software under the terms of the CeCILL
+   license as circulated by CEA, CNRS and INRIA at the following URL
+   "http://www.cecill.info".
+
+   As a counterpart to the access to the source code and  rights to copy,
+   modify and redistribute granted by the license, users are provided only
+   with a limited warranty  and the software's author,  the holder of the
+   economic rights,  and the successive licensors  have only  limited
+   liability.
+
+   In this respect, the user's attention is drawn to the risks associated
+   with loading,  using,  modifying and/or developing or reproducing the
+   software by the user in light of its specific status of free software,
+   that may mean  that it is complicated to manipulate,  and  that  also
+   therefore means  that it is reserved for developers  and  experienced
+   professionals having in-depth computer knowledge. Users are therefore
+   encouraged to load and test the software's suitability as regards their
+   requirements in conditions enabling the security of their systems and/or
+   data to be ensured and,  more generally, to use and operate it in the
+   same conditions as regards security.
+
+   The fact that you are presently reading this means that you have had
+   knowledge of the CeCILL license and that you accept its terms.
+
+   /**
+   * Class RequirementPanel
+   * Managenemt of requirement panels
+   * Creation: 15/05/2006
+   * @version 1.1 08/09/2009
+   * @author Ludovic APVRILLE
+   * @see MainGUI
+   */
 
 package ui;
 
@@ -56,113 +56,116 @@ import java.util.*;
 
 public class RequirementPanel extends TURTLEPanel {
     public RequirementDiagramPanel rdp;
-	public EBRDDPanel ebrdd;
-    
+    public EBRDDPanel ebrdd;
+
     public RequirementPanel(MainGUI _mgui) {
         super(_mgui);
-		
+
         tabbedPane = new JTabbedPane();
-		UIManager.put("TabbedPane.tabAreaBackground", _mgui.BACK_COLOR);
-		UIManager.put("TabbedPane.selected", _mgui.BACK_COLOR);
-		SwingUtilities.updateComponentTreeUI(tabbedPane);
-		//tabbedPane.setOpaque(true);
-		
+        UIManager.put("TabbedPane.tabAreaBackground", _mgui.BACK_COLOR);
+        UIManager.put("TabbedPane.selected", _mgui.BACK_COLOR);
+        SwingUtilities.updateComponentTreeUI(tabbedPane);
+        //tabbedPane.setOpaque(true);
+
         cl = new ChangeListener() {
-            public void stateChanged(ChangeEvent e){
-                mgui.paneRequirementAction(e);
-            }
-        };
+                public void stateChanged(ChangeEvent e){
+                    mgui.paneRequirementAction(e);
+                }
+            };
         tabbedPane.addChangeListener(cl);
         tabbedPane.addMouseListener(new TURTLEPanelPopupListener(this, mgui));
-		
+
     }
-    
+
     public void init() {
-        
+
         // Requirement Diagram toolbar
         //addRequirementDiagram("Requirement Diagram");
-        
+
         //jsp.setVisible(true);
     }
-    
+
     public boolean addRequirementDiagram(String s) {
         RequirementDiagramToolBar toolBarReq = new RequirementDiagramToolBar(mgui);
         toolbars.add(toolBarReq);
-        
+
         toolBarPanel = new JPanel();
-		//toolBarPanel.setBackground(Color.red);
+        //toolBarPanel.setBackground(Color.red);
         toolBarPanel.setLayout(new BorderLayout());
-		//toolBarPanel.setBackground(ColorManager.MainTabbedPaneSelect);
-        
-        //Class	diagram
+        //toolBarPanel.setBackground(ColorManager.MainTabbedPaneSelect);
+
+        //Class diagram
         rdp = new RequirementDiagramPanel(mgui, toolBarReq);
         rdp.setName(s);
         rdp.tp = this;
         tdp = rdp;
         panels.add(rdp);
-        JScrollDiagramPanel jsp	= new JScrollDiagramPanel(rdp);
+        JScrollDiagramPanel jsp = new JScrollDiagramPanel(rdp);
         rdp.jsp = jsp;
         jsp.setWheelScrollingEnabled(true);
         jsp.getVerticalScrollBar().setUnitIncrement(mgui.INCREMENT);
         toolBarPanel.add(toolBarReq, BorderLayout.NORTH);
         toolBarPanel.add(jsp, BorderLayout.CENTER);
         tabbedPane.addTab(s, IconManager.imgic1000, toolBarPanel, "Opens requirement diagram");
-        tabbedPane.setSelectedIndex(0); 
+        tabbedPane.setSelectedIndex(0);
         JPanel toolBarPanel = new JPanel();
         toolBarPanel.setLayout(new BorderLayout());
-       
+
         return true;
     }
-	
-	public boolean addEBRDD(String s) {
+
+    public boolean addEBRDD(String s) {
         EBRDDToolBar toolBarEBRDD = new EBRDDToolBar(mgui);
         toolbars.add(toolBarEBRDD);
-        
+
         toolBarPanel = new JPanel();
-		//toolBarPanel.setBackground(Color.red);
+        //toolBarPanel.setBackground(Color.red);
         toolBarPanel.setLayout(new BorderLayout());
-		//toolBarPanel.setBackground(ColorManager.MainTabbedPaneSelect);
-        
-        //	diagram
+        //toolBarPanel.setBackground(ColorManager.MainTabbedPaneSelect);
+
+        //      diagram
         ebrdd = new EBRDDPanel(mgui, toolBarEBRDD);
         ebrdd.setName(s);
         ebrdd.tp = this;
         //tdp = rdp;
         panels.add(ebrdd);
-        JScrollDiagramPanel jsp	= new JScrollDiagramPanel(ebrdd);
+        JScrollDiagramPanel jsp = new JScrollDiagramPanel(ebrdd);
         ebrdd.jsp = jsp;
         jsp.setWheelScrollingEnabled(true);
         jsp.getVerticalScrollBar().setUnitIncrement(mgui.INCREMENT);
         toolBarPanel.add(toolBarEBRDD, BorderLayout.NORTH);
         toolBarPanel.add(jsp, BorderLayout.CENTER);
         tabbedPane.addTab(s, IconManager.imgic1058, toolBarPanel, "Opens EBRDD");
-        tabbedPane.setSelectedIndex(0); 
+        tabbedPane.setSelectedIndex(0);
         JPanel toolBarPanel = new JPanel();
         toolBarPanel.setLayout(new BorderLayout());
-       
+
         return true;
     }
-    
 
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"Requirement\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+
+    public String saveHeaderInXml(String extensionToName) {
+	if (extensionToName == null) {
+	    return "<Modeling type=\"Requirement\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	}
+	return "<Modeling type=\"Requirement\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
     }
-    
+
     public String saveTailInXml() {
         return "</Modeling>\n\n\n";
     }
-    
+
     public String toString() {
         return mgui.getTitleAt(this) + " (SysML Requirement Diagrams)";
     }
-    
+
     public boolean removeEnabled(int index) {
         if (panels.size() > 1) {
             return true;
         }
         return false;
     }
-    
+
     public boolean renameEnabled(int index) {
         if (panels.size() == 0) {
             return false;
@@ -170,26 +173,26 @@ public class RequirementPanel extends TURTLEPanel {
         if ((panels.elementAt(index) instanceof RequirementDiagramPanel)){
             return true;
         }
-		
-		if ((panels.elementAt(index) instanceof EBRDDPanel)){
+
+        if ((panels.elementAt(index) instanceof EBRDDPanel)){
             return true;
         }
-		
-		
+
+
         return false;
     }
-    
-     public boolean isReqEnabled() {
+
+    public boolean isReqEnabled() {
         return true;
     }
-	
-	public void addAllEBRDDPanels(ArrayList<EBRDDPanel> _al) {
-		for(int i=0; i<panels.size(); i++) {
-			if (panelAt(i) instanceof EBRDDPanel) {
-				_al.add(((EBRDDPanel)panelAt(i)));
-			}
-		}
-	}
-    
 
-}
\ No newline at end of file
+    public void addAllEBRDDPanels(ArrayList<EBRDDPanel> _al) {
+        for(int i=0; i<panels.size(); i++) {
+            if (panelAt(i) instanceof EBRDDPanel) {
+                _al.add(((EBRDDPanel)panelAt(i)));
+            }
+        }
+    }
+
+
+}
diff --git a/src/ui/SysmlsecMethodologyPanel.java b/src/ui/SysmlsecMethodologyPanel.java
index 6e412c5f392c4e45ea8ed3ca952b1ee25a7fb430..78b01c4e2e710d6f59cf0eac9f1dab9efa04d079 100755
--- a/src/ui/SysmlsecMethodologyPanel.java
+++ b/src/ui/SysmlsecMethodologyPanel.java
@@ -38,7 +38,7 @@
    /**
    * Class SysmlsecMethodologyPanel
    * Managenemt of the sysmlsec methodology panels
-   * Creation: 26/0&/2016
+   * Creation: 26/01/2016
    * @version 1.1 26/01/2016
    * @author Ludovic APVRILLE
    * @see MainGUI
@@ -280,9 +280,11 @@ public class SysmlsecMethodologyPanel extends TURTLEPanel {
 
 
 
-
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"Sysmlsec Methodology\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+    public String saveHeaderInXml(String extensionToName) {
+	if (extensionToName == null) {
+	    return "<Modeling type=\"Sysmlsec Methodology\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	}
+	return "<Modeling type=\"Sysmlsec Methodology\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
     }
 
     public String saveTailInXml() {
diff --git a/src/ui/TDiagramPanel.java b/src/ui/TDiagramPanel.java
index 659f69dded82a9c48098d7e18762a26ce06c7b7a..fb5973f94187ed634029ac78fdefa08cecac1baa 100755
--- a/src/ui/TDiagramPanel.java
+++ b/src/ui/TDiagramPanel.java
@@ -88,7 +88,6 @@ import ui.cd.TCDTClass;
 import ui.cd.TCDTData;
 import ui.cd.TCDTObject;
 import ui.cd.TGConnectorAssociation;
-import ui.ncdd.NCConnectorNode;
 import ui.ncdd.NCEqNode;
 import ui.ncdd.NCRouteArtifact;
 import ui.ncdd.NCSwitchNode;
@@ -2559,9 +2558,9 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree {
             public boolean checkTCDTObject (TCDTObject o, String name) {
                 return o.getObjectName ().equals (name);
             }
-            public boolean checkTCDTClass (TCDTClass o, String name) {
-                return o.getClassName ().startsWith (name);
-            }
+//            public boolean checkTCDTClass (TCDTClass o, String name) {
+//                return o.getClassName ().startsWith (name);
+//            }
         });
     }
 
@@ -2601,9 +2600,9 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree {
                         return true;
                 return false;
             }
-            public boolean checkNCConnectorNode (NCConnectorNode o, String name) {
-                return o.getInterfaceName ().equals (name);
-            }
+//            public boolean checkNCConnectorNode (NCConnectorNode o, String name) {
+//                return o.getInterfaceName ().equals (name);
+//            }
         });
     }
 
@@ -2722,9 +2721,9 @@ public abstract class TDiagramPanel extends JPanel implements GenericTree {
                         return true;
                 return false;
             }
-            public boolean checkNCConnectorNode (NCConnectorNode o, String name) {
-                return o.getInterfaceName ().equals (name);
-            }
+//            public boolean checkNCConnectorNode (NCConnectorNode o, String name) {
+//                return o.getInterfaceName ().equals (name);
+//            }
         });
     }
 
diff --git a/src/ui/TMLArchiPanel.java b/src/ui/TMLArchiPanel.java
index 50c3cd5d029f661a4515fd0ed4eb618c538b95a9..0302cf8d7d8df95a5fd17dfc91542c03ff981193 100755
--- a/src/ui/TMLArchiPanel.java
+++ b/src/ui/TMLArchiPanel.java
@@ -101,8 +101,11 @@ public class TMLArchiPanel extends TURTLEPanel {
  
     }
     
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"TML Architecture\" nameTab=\"" + mgui.getTabName(this) + "\" >\n"; 
+    public String saveHeaderInXml(String extensionToName) {
+	if (extensionToName == null) {
+	    return "<Modeling type=\"TML Architecture\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	}
+	return "<Modeling type=\"TML Architecture\" nameTab=\"" + mgui.getTabName(this) + extensionToName +"\" >\n";
     }
     
     public String saveTailInXml() {
diff --git a/src/ui/TMLCommunicationPatternPanel.java b/src/ui/TMLCommunicationPatternPanel.java
index d468db0f4b42e0cf2e2528dbd05b6bf3e0851235..5faf2ad58353d7e5620caf181d4cbc34473dbe01 100755
--- a/src/ui/TMLCommunicationPatternPanel.java
+++ b/src/ui/TMLCommunicationPatternPanel.java
@@ -163,8 +163,12 @@ public class TMLCommunicationPatternPanel extends TURTLEPanel {
 
     }
 
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"TML CP\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+
+    public String saveHeaderInXml(String extensionToName) {
+	if (extensionToName == null) {
+	    return "<Modeling type=\"TML CP\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	}
+	return "<Modeling type=\"TML CP\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
     }
 
     public String saveTailInXml() {
diff --git a/src/ui/TMLComponentDesignPanel.java b/src/ui/TMLComponentDesignPanel.java
index c5eaab940e3ded609e8160d0156ce40a86235200..f11f05c999c39f2d4eb6a07aa10d99ffbf00b80b 100755
--- a/src/ui/TMLComponentDesignPanel.java
+++ b/src/ui/TMLComponentDesignPanel.java
@@ -147,8 +147,12 @@ public class TMLComponentDesignPanel extends TURTLEPanel {
 
     }
 
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"TML Component Design\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+     public String saveHeaderInXml(String extensionToName) {
+	 if (extensionToName == null) {
+	     return "<Modeling type=\"TML Component Design\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	 }
+	 return "<Modeling type=\"TML Component Design\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
+	 
     }
 
     public String saveTailInXml() {
diff --git a/src/ui/TMLDesignPanel.java b/src/ui/TMLDesignPanel.java
index f841c483cfa85807f74141c3eafd87f8ae1fce82..38705e3b00c6da96cf0b6eaa19c36584bc0fff4a 100755
--- a/src/ui/TMLDesignPanel.java
+++ b/src/ui/TMLDesignPanel.java
@@ -1,50 +1,50 @@
 /**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille, Andrea Enrici
 
-ludovic.apvrille AT enst.fr
-andrea.enrici AT enst.fr
-
-This software is a computer program whose purpose is to allow the 
-edition of TURTLE analysis, design and deployment diagrams, to 
-allow the generation of RT-LOTOS or Java code from this diagram, 
-and at last to allow the analysis of formal validation traces 
-obtained from external tools, e.g. RTL from LAAS-CNRS and CADP 
-from INRIA Rhone-Alpes.
-
-This software is governed by the CeCILL  license under French law and
-abiding by the rules of distribution of free software.  You can  use, 
-modify and/ or redistribute the software under the terms of the CeCILL
-license as circulated by CEA, CNRS and INRIA at the following URL
-"http://www.cecill.info". 
-
-As a counterpart to the access to the source code and  rights to copy,
-modify and redistribute granted by the license, users are provided only
-with a limited warranty  and the software's author,  the holder of the
-economic rights,  and the successive licensors  have only  limited
-liability. 
-
-In this respect, the user's attention is drawn to the risks associated
-with loading,  using,  modifying and/or developing or reproducing the
-software by the user in light of its specific status of free software,
-that may mean  that it is complicated to manipulate,  and  that  also
-therefore means  that it is reserved for developers  and  experienced
-professionals having in-depth computer knowledge. Users are therefore
-encouraged to load and test the software's suitability as regards their
-requirements in conditions enabling the security of their systems and/or 
-data to be ensured and,  more generally, to use and operate it in the 
-same conditions as regards security. 
-
-The fact that you are presently reading this means that you have had
-knowledge of the CeCILL license and that you accept its terms.
-
-/**
- * Class TMLDesignPanel
- * Managenemt of TML design panels
- * Creation: 27/10/2006
- * @version 1.0 28/05/2014
- * @author Ludovic APVRILLE, Andrea ENRICI
- * @see MainGUI
- */
- 
+   ludovic.apvrille AT enst.fr
+   andrea.enrici AT enst.fr
+
+   This software is a computer program whose purpose is to allow the
+   edition of TURTLE analysis, design and deployment diagrams, to
+   allow the generation of RT-LOTOS or Java code from this diagram,
+   and at last to allow the analysis of formal validation traces
+   obtained from external tools, e.g. RTL from LAAS-CNRS and CADP
+   from INRIA Rhone-Alpes.
+
+   This software is governed by the CeCILL  license under French law and
+   abiding by the rules of distribution of free software.  You can  use,
+   modify and/ or redistribute the software under the terms of the CeCILL
+   license as circulated by CEA, CNRS and INRIA at the following URL
+   "http://www.cecill.info".
+
+   As a counterpart to the access to the source code and  rights to copy,
+   modify and redistribute granted by the license, users are provided only
+   with a limited warranty  and the software's author,  the holder of the
+   economic rights,  and the successive licensors  have only  limited
+   liability.
+
+   In this respect, the user's attention is drawn to the risks associated
+   with loading,  using,  modifying and/or developing or reproducing the
+   software by the user in light of its specific status of free software,
+   that may mean  that it is complicated to manipulate,  and  that  also
+   therefore means  that it is reserved for developers  and  experienced
+   professionals having in-depth computer knowledge. Users are therefore
+   encouraged to load and test the software's suitability as regards their
+   requirements in conditions enabling the security of their systems and/or
+   data to be ensured and,  more generally, to use and operate it in the
+   same conditions as regards security.
+
+   The fact that you are presently reading this means that you have had
+   knowledge of the CeCILL license and that you accept its terms.
+
+   /**
+   * Class TMLDesignPanel
+   * Managenemt of TML design panels
+   * Creation: 27/10/2006
+   * @version 1.0 28/05/2014
+   * @author Ludovic APVRILLE, Andrea ENRICI
+   * @see MainGUI
+   */
+
 package ui;
 
 import java.awt.*;
@@ -56,22 +56,22 @@ import ui.tmlad.*;
 import ui.tmldd.*;
 
 public class TMLDesignPanel extends TURTLEPanel {
-    public TMLTaskDiagramPanel tmltdp; 
+    public TMLTaskDiagramPanel tmltdp;
     public Vector<TGComponent> validated, ignored;
-    
+
     public TMLDesignPanel(MainGUI _mgui) {
         super(_mgui);
         tabbedPane = new JTabbedPane();
         cl = new ChangeListener() {
-            public void stateChanged(ChangeEvent e){
-                mgui.paneDesignAction(e);
-            }
-        };
+                public void stateChanged(ChangeEvent e){
+                    mgui.paneDesignAction(e);
+                }
+            };
         tabbedPane.addChangeListener(cl);
         tabbedPane.addMouseListener(new TURTLEPanelPopupListener(this, mgui));
     }
-    
-   public TMLActivityDiagramPanel getTMLActivityDiagramPanel(String name) {
+
+    public TMLActivityDiagramPanel getTMLActivityDiagramPanel(String name) {
         TMLActivityDiagramPanel tmladp;
         for(int i=1; i<panels.size(); i++) {
             tmladp = (TMLActivityDiagramPanel)(panels.elementAt(i));
@@ -84,14 +84,14 @@ public class TMLDesignPanel extends TURTLEPanel {
     public void addTMLActivityDiagram(String s) {
         JPanel toolBarPanel = new JPanel();
         toolBarPanel.setLayout(new BorderLayout());
-        
-        TMLActivityDiagramToolBar toolBarActivity	= new TMLActivityDiagramToolBar(mgui);
+
+        TMLActivityDiagramToolBar toolBarActivity       = new TMLActivityDiagramToolBar(mgui);
         toolbars.add(toolBarActivity);
-        
+
         TMLActivityDiagramPanel tmladp = new TMLActivityDiagramPanel(mgui, toolBarActivity);
         tmladp.tp = this;
         tmladp.setName(s);
-        JScrollDiagramPanel jsp	= new JScrollDiagramPanel(tmladp);
+        JScrollDiagramPanel jsp = new JScrollDiagramPanel(tmladp);
         tmladp.jsp = jsp;
         jsp.setWheelScrollingEnabled(true);
         jsp.getVerticalScrollBar().setUnitIncrement( MainGUI.INCREMENT );
@@ -99,26 +99,26 @@ public class TMLDesignPanel extends TURTLEPanel {
         toolBarPanel.add(jsp, BorderLayout.CENTER);
         panels.add(tmladp);
         tabbedPane.addTab(s, IconManager.imgic63, toolBarPanel, "Opens the activity diagram of " + s);
-   
+
         return;
     }
-    
+
     public void init() {
-         
+
         //  Class Diagram toolbar
         TMLTaskDiagramToolBar toolBarTML = new TMLTaskDiagramToolBar(mgui);
         toolbars.add(toolBarTML);
-        
+
         toolBarPanel = new JPanel();
         toolBarPanel.setLayout(new BorderLayout());
-        
-        //Class	diagram
+
+        //Class diagram
         tmltdp = new TMLTaskDiagramPanel(mgui, toolBarTML);
         tmltdp.setName("TML Task Diagram");
         tmltdp.tp = this;
         tdp = tmltdp;
         panels.add(tmltdp); // Always first in list
-        JScrollDiagramPanel jsp	= new JScrollDiagramPanel(tmltdp);
+        JScrollDiagramPanel jsp = new JScrollDiagramPanel(tmltdp);
         tmltdp.jsp = jsp;
         jsp.setWheelScrollingEnabled(true);
         jsp.getVerticalScrollBar().setUnitIncrement( MainGUI.INCREMENT );
@@ -126,62 +126,65 @@ public class TMLDesignPanel extends TURTLEPanel {
         toolBarPanel.add(jsp, BorderLayout.CENTER);
         tabbedPane.addTab("TML Task Diagram", IconManager.imgic62, toolBarPanel, "Opens TML task diagram");
         tabbedPane.setSelectedIndex(0);
-        
+
         mgui.changeMade(tmltdp, TDiagramPanel.NEW_COMPONENT);
-        
+
         //jsp.setVisible(true);
- 
+
     }
-    
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"TML Design\" nameTab=\"" + mgui.getTabName(this) + "\" >\n"; 
+
+    public String saveHeaderInXml(String extensionToName) {
+	if (extensionToName == null) {
+	    return "<Modeling type=\"TML Design\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	}
+	return "<Modeling type=\"TML Design\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
     }
-    
+
     public String saveTailInXml() {
         return "</Modeling>\n\n\n";
     }
-    
+
     public String toString() {
         return mgui.getTitleAt(this) + " (TML Functional View)";
     }
-	
-	public ArrayList<String> getAllTMLTaskNames(String _name) {
-		return tmltdp.getAllTMLTaskNames(_name);
-	}
 
-	public ArrayList<String> getAllTMLCommunicationNames(String _name) {
-		return tmltdp.getAllTMLCommunicationNames(_name);
-	}
-	
-	public ArrayList<String> getAllTMLEventNames( String _name ) {
-		return tmltdp.getAllTMLEventNames( _name );
-	}
+    public ArrayList<String> getAllTMLTaskNames(String _name) {
+        return tmltdp.getAllTMLTaskNames(_name);
+    }
+
+    public ArrayList<String> getAllTMLCommunicationNames(String _name) {
+        return tmltdp.getAllTMLCommunicationNames(_name);
+    }
+
+    public ArrayList<String> getAllTMLEventNames( String _name ) {
+        return tmltdp.getAllTMLEventNames( _name );
+    }
+
+    public java.util.List<String> getAllNonMappedTMLTaskNames(String _name, TMLArchiDiagramPanel _tadp, boolean ref, String name) {
+        return tmltdp.getAllNonMappedTMLTaskNames(_name, _tadp, ref, name);
+    }
+
+    public TMLTaskOperator getTaskByName(String _name) {
+        return tmltdp.getTaskByName(_name);
+    }
+
+    public void getListOfBreakPoints(ArrayList<Point> points) {
+        TGComponent tgc;
+        Iterator<TGComponent> iterator = tmltdp.getComponentList().listIterator();
+        TMLTaskOperator tmlto;
+        TMLActivityDiagramPanel tmladp;
 
-	public java.util.List<String> getAllNonMappedTMLTaskNames(String _name, TMLArchiDiagramPanel _tadp, boolean ref, String name) {
-		return tmltdp.getAllNonMappedTMLTaskNames(_name, _tadp, ref, name);
-	}
-	
-	public TMLTaskOperator getTaskByName(String _name) {
-		return tmltdp.getTaskByName(_name);
-	}
-	
-	public void getListOfBreakPoints(ArrayList<Point> points) {
-		TGComponent tgc;
-		Iterator<TGComponent> iterator = tmltdp.getComponentList().listIterator();
-		TMLTaskOperator tmlto;
-		TMLActivityDiagramPanel tmladp;
-		
         while(iterator.hasNext()) {
             tgc = iterator.next();
-            
+
             if (tgc instanceof TMLTaskOperator) {
                 tmlto = (TMLTaskOperator)tgc;
-				
+
                 if (tmlto.getDIPLOID() != -1) {
-					tmladp = getTMLActivityDiagramPanel(tmlto.getValue());
-					tmladp.getListOfBreakPoints(points, tmlto.getDIPLOID());
-				}
-			}
-		}
-	}
+                    tmladp = getTMLActivityDiagramPanel(tmlto.getValue());
+                    tmladp.getListOfBreakPoints(points, tmlto.getDIPLOID());
+                }
+            }
+        }
+    }
 }
diff --git a/src/ui/TURTLEOSDesignPanel.java b/src/ui/TURTLEOSDesignPanel.java
index 53a23b173ec105062699064fcc4a934a9f78cab9..e8125f1925a44eafbeb35cfc1c7c927cbe481719 100755
--- a/src/ui/TURTLEOSDesignPanel.java
+++ b/src/ui/TURTLEOSDesignPanel.java
@@ -135,8 +135,11 @@ public class TURTLEOSDesignPanel extends TURTLEPanel implements TURTLEDesignPane
           tabbedPane.setSelectedIndex(0);
     }
 
-    public String saveHeaderInXml() {
-        return "<Modeling type=\"TURTLE-OS Design\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+    public String saveHeaderInXml(String extensionToName) {
+	if (extensionToName == null) {
+	    return "<Modeling type=\"TURTLE-OS Design\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
+	}
+	return "<Modeling type=\"TURTLE-OS Design\" nameTab=\"" + mgui.getTabName(this) + extensionToName + "\" >\n";
     }
 
     public String saveTailInXml() {
@@ -147,4 +150,4 @@ public class TURTLEOSDesignPanel extends TURTLEPanel implements TURTLEDesignPane
         return "TURTLE-OS: " + mgui.getTitleAt(this);
     }
 
-}
\ No newline at end of file
+}
diff --git a/src/ui/TURTLEPanel.java b/src/ui/TURTLEPanel.java
index 4cf9dd39acd13034cf9ac7c6a19441be375f38e1..3c0f39bd6bfe5737f80d56518128f4e6df9ce662 100755
--- a/src/ui/TURTLEPanel.java
+++ b/src/ui/TURTLEPanel.java
@@ -68,7 +68,7 @@ public abstract class TURTLEPanel implements GenericTree {
     }
 
     public abstract void init();
-    public abstract String saveHeaderInXml();
+    public abstract String saveHeaderInXml(String extensionToName);
     public abstract String saveTailInXml();
 
     public TDiagramPanel panelAt(int index) {
@@ -97,16 +97,20 @@ public abstract class TURTLEPanel implements GenericTree {
     }
 
     public StringBuffer saveInXML() {
+	return saveInXML(null);
+    }
+
+    public StringBuffer saveInXML(String extensionToName) {
 
         TDiagramPanel tdp;
         StringBuffer sb = new StringBuffer();
-        sb.append(saveHeaderInXml());
+        sb.append(saveHeaderInXml(extensionToName));
         StringBuffer s;
         for(int i=0; i<panels.size(); i++) {
             tdp = (TDiagramPanel)(panels.elementAt(i));
             s = tdp.saveInXML();
             if (s == null) {
-                System.out.println("Null diagram");
+                //System.out.println("Null diagram");
                 return null;
             }
             sb.append(s);
@@ -120,13 +124,13 @@ public abstract class TURTLEPanel implements GenericTree {
 
         TDiagramPanel tdp;
         StringBuffer sb = new StringBuffer();
-        sb.append(saveHeaderInXml());
+        sb.append(saveHeaderInXml(null));
         StringBuffer s;
 
         tdp = (TDiagramPanel)(panels.elementAt(indexOfDiagram));
         s = tdp.saveInXML();
         if (s == null) {
-            System.out.println("Null diagram");
+            //System.out.println("Null diagram");
             return null;
         }
         sb.append(s);
@@ -327,7 +331,7 @@ public abstract class TURTLEPanel implements GenericTree {
 
     public void searchForText(String text, Vector<Object> elements) {
         if (panelAt(0) != null) {
-            String s = saveHeaderInXml().toLowerCase();
+            String s = saveHeaderInXml(null).toLowerCase();
             if (s.indexOf(text) >= 0) {
                 elements.add(this);
                 /*CheckingError ce = new CheckingError(CheckingError.INFO, "Diagram");
diff --git a/src/ui/avatarbd/AvatarBDBlock.java b/src/ui/avatarbd/AvatarBDBlock.java
index 006a5326bc553ea13c279ee4b1a6fd970f9969e5..c0fc938fed0dcec3d0db025d6bee7854c29ba937 100644
--- a/src/ui/avatarbd/AvatarBDBlock.java
+++ b/src/ui/avatarbd/AvatarBDBlock.java
@@ -801,6 +801,7 @@ public class AvatarBDBlock extends TGCScalableWithInternalComponent implements S
             boolean implementation = false;
             String crypt;
 	    String attached;
+	    boolean mustAddCryptoFunctions = false;
 
 
             //System.out.println("Loading attributes");
@@ -861,14 +862,18 @@ public class AvatarBDBlock extends TGCScalableWithInternalComponent implements S
                                     implementation = false;
                                 }
 
-                                if (method.startsWith("aencrypt(")) {
+				//TraceManager.addDev("Method = " + method + ". Starting with aencrypt?");
+                                if (method.startsWith("bool verifyMAC(")) {
                                     isCryptoBlock = true;
+				    //TraceManager.addDev("Add crypto methods");
+				    //addCryptoElements();
                                 }
 
                                 am = AvatarMethod.isAValidMethod(method);
                                 if (am != null) {
                                     //TraceManager.addDev("Setting to " + implementation + " the implementation of " + am);
                                     am.setImplementationProvided(implementation);
+				    //addMethodIfApplicable(am);
                                     this.myMethods.add(am);
                                 }
                             }
@@ -907,6 +912,10 @@ public class AvatarBDBlock extends TGCScalableWithInternalComponent implements S
             throw new MalformedModelingException();
         }
 
+	if (isCryptoBlock()) {
+	    addCryptoElements();
+	}
+
         if (tmpGlobalCode.trim().length() == 0) {
             globalCode = null;
         } else {
diff --git a/src/ui/interactivesimulation/JFrameInteractiveSimulation.java b/src/ui/interactivesimulation/JFrameInteractiveSimulation.java
index a5ca6c0620a222a90d0429eeeab3e3f7e303fe87..3c3d18508b3af3907a99113ea5bad4deb0705c1c 100755
--- a/src/ui/interactivesimulation/JFrameInteractiveSimulation.java
+++ b/src/ui/interactivesimulation/JFrameInteractiveSimulation.java
@@ -69,6 +69,8 @@ import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
 import java.util.HashMap;
 import java.util.Vector;
 import java.util.Collections;
@@ -81,6 +83,7 @@ import javax.swing.JCheckBox;
 import javax.swing.JComboBox;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
+import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JSlider;
@@ -102,7 +105,6 @@ import org.w3c.dom.NodeList;
 import org.xml.sax.SAXException;
 
 import java.util.Date;
-import java.util.concurrent.TimeUnit;
 import java.text.*;
 
 import launcher.LauncherException;
@@ -127,11 +129,8 @@ import ui.ConfigurationTTool;
 import ui.IconManager;
 import ui.MainGUI;
 import ui.TGComponent;
-import ui.graph.*;
 
-
-
-public  class JFrameInteractiveSimulation extends JFrame implements ActionListener, Runnable, MouseListener, ItemListener, ChangeListener/*, StoppableGUIElement, SteppedAlgorithm, ExternalCall*/ {
+public class JFrameInteractiveSimulation extends JFrame implements ActionListener, Runnable, MouseListener, ItemListener, ChangeListener/*, StoppableGUIElement, SteppedAlgorithm, ExternalCall*/ {
 
     protected static final int NB_OF_TRANSACTIONS = 10;
 
@@ -224,7 +223,7 @@ public  class JFrameInteractiveSimulation extends JFrame implements ActionListen
     JSlider minimalCommandCoverage, minimalBranchCoverage;
     JLabel labelMinimalCommandCoverage, labelMinimalBranchCoverage;
     private String lastGraphName;
-    private RG lastRG;
+   // private RG lastRG;
     
     // Tasks
     JPanel taskPanel;
@@ -253,12 +252,12 @@ public  class JFrameInteractiveSimulation extends JFrame implements ActionListen
 
     //Latency
     JPanel latencyPanel;
-    JComboBox transaction1;
-    JComboBox transaction2;
+    JComboBox<String> transaction1;
+    JComboBox<String> transaction2;
     JButton addLatencyCheckButton;
     JButton updateLatencyButton;
     LatencyTableModel latm;
-    public Vector checkedTransactions = new Vector();
+    public Vector<String> checkedTransactions = new Vector<String>();
     private JScrollPane jspLatency;
 
     private int mode = 0;
@@ -268,9 +267,9 @@ public  class JFrameInteractiveSimulation extends JFrame implements ActionListen
     private boolean gotTimeAnswerFromServer = false;
 
     // For managing actions
-    public      InteractiveSimulationActions [] actions;
-    public      MouseHandler mouseHandler;
-    public  KeyListener keyHandler;
+    public InteractiveSimulationActions [] actions;
+    public MouseHandler mouseHandler;
+    public KeyListener keyHandler;
 
     private TMLMapping tmap;
     private int hashCode;
@@ -282,11 +281,12 @@ public  class JFrameInteractiveSimulation extends JFrame implements ActionListen
     private Hashtable <Integer, Integer> runningTable;
     private Hashtable <String, String> diagramTable;
 
-    private ArrayList<Point> points;
-    private HashMap<String, String> checkTable=new HashMap<String, String>();
-    private HashMap<String, ArrayList<String>> transTimes = new HashMap<String, ArrayList<String>>();
-    private Vector latencies=new Vector();
-    public JFrameInteractiveSimulation(Frame _f, MainGUI _mgui, String _title, String _hostSystemC, String _pathExecute, TMLMapping _tmap, ArrayList<Point> _points) {
+    private List<Point> points;
+    private Map<String, String> checkTable = new HashMap<String, String>();
+    private Map<String, List<String>> transTimes = new HashMap<String, List<String>>();
+    private Vector<SimulationLatency> latencies = new Vector<SimulationLatency>();
+    
+    public JFrameInteractiveSimulation(Frame _f, MainGUI _mgui, String _title, String _hostSystemC, String _pathExecute, TMLMapping _tmap, List<Point> _points) {
         super(_title);
 
         // f = _f;
@@ -985,13 +985,13 @@ public  class JFrameInteractiveSimulation extends JFrame implements ActionListen
         c0.gridheight=1;
         latencyPanel.add(new JLabel("Checkpoint 1:"),c0);
         c0.gridwidth = GridBagConstraints.REMAINDER;
-        transaction1 = new JComboBox(checkedTransactions);
+        transaction1 = new JComboBox<String>(checkedTransactions);
         latencyPanel.add(transaction1, c0);
 
         c0.gridwidth=1;
         latencyPanel.add(new JLabel("Checkpoint 2:"),c0);
         c0.gridwidth= GridBagConstraints.REMAINDER;
-        transaction2 = new JComboBox(checkedTransactions);
+        transaction2 = new JComboBox<String>(checkedTransactions);
         latencyPanel.add(transaction2, c0);
 
 
@@ -1473,11 +1473,8 @@ public  class JFrameInteractiveSimulation extends JFrame implements ActionListen
 
         int k;
 
-        //System.out.println("toto0");
-
         try {
             for(int j=0; j<diagramNl.getLength(); j++) {
-                //System.out.println("Ndes: " + j);
                 node = diagramNl.item(j);
 
                 if (node == null) {
@@ -1650,7 +1647,6 @@ public  class JFrameInteractiveSimulation extends JFrame implements ActionListen
                             nl = elt.getElementsByTagName("extime");
                             if ((nl != null) && (nl.getLength() > 0)) {
                                 node0 = nl.item(0);
-                                //System.out.println("nl:" + nl + " value=" + node0.getNodeValue() + " content=" + node0.getTextContent());
                                 extime =  node0.getTextContent();
                             }
 
@@ -1658,7 +1654,6 @@ public  class JFrameInteractiveSimulation extends JFrame implements ActionListen
                             nl = elt.getElementsByTagName("tskstate");
                             if ((nl != null) && (nl.getLength() > 0)) {
                                 node0 = nl.item(0);
-                                //System.out.println("nl:" + nl + " value=" + node0.getNodeValue() + " content=" + node0.getTextContent());
                                 state =  node0.getTextContent();
                                 //TraceManager.addDev("TASK STATE: " + state);
                             }
@@ -1670,12 +1665,13 @@ public  class JFrameInteractiveSimulation extends JFrame implements ActionListen
 
 
                             if ((id != null) && (command != null)) {
-                                if (nextCommand ==null) {
+                                
+                            	if (nextCommand ==null) {
                                     nextCommand = "-1";
                                 }
                                 updateRunningCommand(id, command, progression, startTime, finishTime, nextCommand, transStartTime, transFinishTime, state);
+
                                 if (checkTable.containsKey(command)){
-                                    //System.out.println("added trans " + command + " " +finishTime);
                                     if (!transTimes.containsKey(command)){
                                         ArrayList<String> timeList = new ArrayList<String>();
                                         transTimes.put(command, timeList);
@@ -1683,8 +1679,6 @@ public  class JFrameInteractiveSimulation extends JFrame implements ActionListen
                                     if (!transTimes.get(command).contains(finishTime)){
                                         transTimes.get(command).add(finishTime);
                                     }
-                                    //System.out.println("nl:" + nl + " value=" + node0.getNodeValue() + " content=" + node0.getTextContent());
-
                                 }
                             }
 
@@ -1692,10 +1686,8 @@ public  class JFrameInteractiveSimulation extends JFrame implements ActionListen
                                 updateOpenDiagram(name, command, progression, startTime, finishTime, transStartTime, transFinishTime);
                             }
 
-
-
-
                             nl = elt.getElementsByTagName("var");
+
                             if ((nl != null) && (nl.getLength() > 0)) {
                                 idvar = null;
                                 value = null;
@@ -1714,59 +1706,6 @@ public  class JFrameInteractiveSimulation extends JFrame implements ActionListen
                             }
                         }
 
-                        //System.out.println("toto1");
-
-
-                        /*nl = elt.getElementsByTagName(SIMULATION_TRANS);
-                          if (nl.getLength() == 0) {
-                          //updateTableOfTransactions(0);
-                          //ttm.fireTableStructureChanged();
-                          } else {
-                          System.out.println("toto1.1");
-                          for(int kk=0; kk<nl.getLength(); kk++) {
-                          node0 = nl.item(kk);
-                          elt0 = (Element)node0;
-
-
-                          if (elt0 != null) {
-                          TraceManager.addDev("transinfo found: " + elt0);
-                          SimulationTransaction st = new SimulationTransaction();
-                          st.nodeType = elt0.getAttribute("deviceid");
-
-                          st.deviceName = elt0.getAttribute("devicename");
-                          String commandT = elt0.getAttribute("command");
-                          //TraceManager.addDev("command found: " + commandT);
-                          if (commandT != null) {
-                          int index = commandT.indexOf(": ");
-                          if (index == -1){
-                          st.taskName = "Unknown";
-                          st.command = commandT;
-                          } else {
-                          st.taskName = commandT.substring(0, index).trim();
-                          st.command = commandT.substring(index+1, commandT.length()).trim();
-                          }
-                          }
-                          //TraceManager.addDev("Command handled");
-                          st.startTime = elt0.getAttribute("starttime");
-                          st.length = elt0.getAttribute("length");
-                          st.virtualLength = elt0.getAttribute("virtuallength");
-                          st.channelName = elt0.getAttribute("ch");
-
-                          if (trans == null) {
-                          trans = new Vector<SimulationTransaction>();
-                          }
-
-                          trans.add(st);
-                          //updateTableOfTransactions(trans.size()-1);
-                          //TraceManager.addDev("Nb of trans:" + trans.size());
-                          }
-                          //ttm.fireTableStructureChanged();
-                          //updateTableOfTransactions(trans.size()-1);
-                          }
-                          TraceManager.addDev("Transactions updated");
-                          //ttm.setData(trans);
-
-                          }*/
                         if (elt.getTagName().compareTo(SIMULATION_TRANS) == 0) {
 
                             SimulationTransaction st = new SimulationTransaction();
@@ -2220,13 +2159,25 @@ public  class JFrameInteractiveSimulation extends JFrame implements ActionListen
 
     public void sendSaveTraceCommand(String format) {
         String param = saveFileName.getText().trim();
-        if (saveDirName.getText().length() > 0) {
-            param = saveDirName.getText() + File.separator + param;
+        
+        if ( param.isEmpty() ) {
+        	final String message = "Please enter a file name for the trace.";
+        	JOptionPane.showMessageDialog( this, message, "Output File Name not Specified", JOptionPane.ERROR_MESSAGE );
+        	error( message );
         }
-        if (param.length() >0) {
-            sendCommand("save-trace-in-file" + " " + format + " " + param);
-        } else {
-            error("Wrong parameter: must be a file name");
+        else {
+        	final String directory = saveDirName.getText().trim();
+        	
+	        if ( !directory.isEmpty() ) {
+	            param = directory + File.separator + param;
+	        }
+
+	        // DB: now useless check
+//	        if (param.length() >0) {
+	        sendCommand( "save-trace-in-file" + " " + format + " " + param );
+//	        } else {
+//	            error("Wrong parameter: must be a file name");
+//	        }
         }
     }
 
@@ -2270,7 +2221,7 @@ public  class JFrameInteractiveSimulation extends JFrame implements ActionListen
 
     private void addGraph() {
 	TraceManager.addDev("Adding graph");
-	lastRG = mgui.setLastRGDiplodocus(lastGraphName);
+	/*lastRG =*/ mgui.setLastRGDiplodocus(lastGraphName);
     }
 
     private String getCurrentRGName() {
@@ -2907,7 +2858,7 @@ public  class JFrameInteractiveSimulation extends JFrame implements ActionListen
             mgui.resetTransactions();
             mgui.resetStatus();
             sendCommand("reset");
-            transTimes=new HashMap<String, ArrayList<String>>();
+            transTimes=new HashMap<String, List<String>>();
             processLatency();
             askForUpdate();
         } else if (command.equals(actions[InteractiveSimulationActions.ACT_STOP_SIMU].getActionCommand())) {
@@ -3154,23 +3105,17 @@ public  class JFrameInteractiveSimulation extends JFrame implements ActionListen
 
         return tmap.makeVariableIDs(index);
     }
+
     public void fillCheckedTrans(){
         if (tmap==null){
             return;
         }
 
-        //System.out.println(tmap.getTMLModeling().getCheckedComps());
-       
         for (TGComponent tgc: tmap.getTMLModeling().getCheckedComps().keySet()){
-            //System.out.println(tmap.getTMLModeling().getCheckedComps().get(s).getDIPLOID() + " "+s);
             TraceManager.addDev(tmap.getTMLModeling().getCheckedComps().get(tgc)+" (ID: " + tgc.getDIPLOID() + ")");
 			checkedTransactions.add(tmap.getTMLModeling().getCheckedComps().get(tgc)+" (ID: " + tgc.getDIPLOID() + ")");
             checkTable.put(Integer.toString(tgc.getDIPLOID()),tmap.getTMLModeling().getCheckedComps().get(tgc)+" (ID: " + tgc.getDIPLOID() + ")");
-        //    checkedTransactions.add(s+"(ID: " + tmap.getTMLModeling().getCheckedComps().get(s).getDIPLOID()+")");
-          //  checkTable.put(Integer.toString(tmap.getTMLModeling().getCheckedComps().get(s).getDIPLOID()),s+"(ID: " + tmap.getTMLModeling().getCheckedComps().get(s).getDIPLOID()+")");
         }
-        //System.out.println(checkedTransactions);
-        //System.out.println(checkTable);
     }
     public void activeBreakPoint(boolean active) {
         if (mode == STARTED_AND_CONNECTED) {
@@ -3190,6 +3135,4 @@ public  class JFrameInteractiveSimulation extends JFrame implements ActionListen
     public Vector<SimulationTransaction> getListOfRecentTransactions() {
         return trans;
     }
-
-
 } // Class
diff --git a/src/ui/interactivesimulation/JPanelBreakPoints.java b/src/ui/interactivesimulation/JPanelBreakPoints.java
index e105d1f030486c5523b888ff3e9b0563187785fd..f2b07f7230e443b02f579c49a42cfb37ee4b180c 100755
--- a/src/ui/interactivesimulation/JPanelBreakPoints.java
+++ b/src/ui/interactivesimulation/JPanelBreakPoints.java
@@ -45,49 +45,31 @@ knowledge of the CeCILL license and that you accept its terms.
 
 package ui.interactivesimulation;
 
-//import java.io.*;
 import javax.swing.*;
 import javax.swing.event.*;
-import javax.swing.table.*;
 import java.awt.*;
 import java.awt.event.*;
-import java.io.*;
 import java.util.*;
 
-
-import myutil.*;
-import ui.*;
-import ui.file.*;
-
-import tmltranslator.*; 
-
-import launcher.*;
-import remotesimulation.*;
-
-import org.w3c.dom.*;
-import org.xml.sax.*;
-import javax.xml.parsers.*;
-
-
 public	class JPanelBreakPoints extends JPanel implements ActionListener, ListSelectionListener  {
 	
 	
 	private JFrameInteractiveSimulation jfis;
-	private ArrayList<Point> points;
-	private Vector breakpoints;
+	private java.util.List<Point> points;
+	private Vector<String> breakpoints;
 	
 	
-	private JList listBreakpoints;
+	private JList<String> listBreakpoints;
     private JButton removeButton;
 	private JButton addButton;
-	private JComboBox tasks;
-	private JComboBox commands;
+	private JComboBox<String> tasks;
+	private JComboBox<String> commands;
 	private JCheckBox activate;
 	
 	private String[] taskIDs, commandIDs;
 	
 	
-	public JPanelBreakPoints(JFrameInteractiveSimulation _jfis, ArrayList<Point> _points) {
+	public JPanelBreakPoints(JFrameInteractiveSimulation _jfis, java.util.List<Point> _points) {
 		super();
 		
 		jfis = _jfis;
@@ -96,7 +78,7 @@ public	class JPanelBreakPoints extends JPanel implements ActionListener, ListSel
 		
 		//setBackground(new Color(50, 40, 40, 200));
 		
-		breakpoints = new Vector();
+		breakpoints = new Vector<String>();
         
         for(int i=0; i<points.size(); i++) {
             breakpoints.addElement("Task=" + points.get(i).x +  " Command=" + points.get(i).y);
@@ -114,7 +96,7 @@ public	class JPanelBreakPoints extends JPanel implements ActionListener, ListSel
 		setLayout(gridbag2);
 		setBorder(new javax.swing.border.TitledBorder("Managing breakpoints"));
 		
-		listBreakpoints = new JList(breakpoints);
+		listBreakpoints = new JList<String>(breakpoints);
         //listAttribute.setFixedCellWidth(150);
         //listAttribute.setFixedCellHeight(20);
         listBreakpoints.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
@@ -146,18 +128,18 @@ public	class JPanelBreakPoints extends JPanel implements ActionListener, ListSel
 		add(new JLabel(" "), c2);
 		
 		if (taskIDs == null) {
-			tasks = new JComboBox();
+			tasks = new JComboBox<String>();
 		} else {
-			tasks = new JComboBox(taskIDs);
+			tasks = new JComboBox<String>(taskIDs);
 			tasks.addActionListener(this);
 		}
 		add(tasks, c2);
 		
 		if ((taskIDs == null) || (taskIDs.length == 0)) {
-			commands = new JComboBox();
+			commands = new JComboBox<String>();
 		} else {
 			commandIDs = jfis.makeCommandIDs(0);
-			commands = new JComboBox(commandIDs);
+			commands = new JComboBox<String>(commandIDs);
 		}
 		add(commands, c2);
         
@@ -278,7 +260,7 @@ public	class JPanelBreakPoints extends JPanel implements ActionListener, ListSel
 	}
 	
 	public void unsetElements() {
-		Vector v = new Vector();
+		Vector<String> v = new Vector<String>();
 		listBreakpoints.setListData(v);
 		removeButton.setEnabled(false);
 		addButton.setEnabled(false);
diff --git a/src/ui/sd2/SDActionState.java b/src/ui/sd2/SDActionState.java
index 239481fffa192135074d90601080c93b215da4a5..3b704f946c9c529d6fac4bc21d16af29e1ed6a21 100755
--- a/src/ui/sd2/SDActionState.java
+++ b/src/ui/sd2/SDActionState.java
@@ -81,7 +81,7 @@ public class SDActionState extends TGCScalableOneLineText implements SwallowedTG
     
     public void internalDrawing(Graphics g) {
         w  = g.getFontMetrics().stringWidth(value);
-	int h = g.getFontMetrics().getHeight();
+//	int h = g.getFontMetrics().getHeight();
         int w1 = Math.max(minWidth, w + 2 * textX);
         if ((w1 != width) && (!tdp.isScaled())) {
             width = w1;
diff --git a/src/ui/sd2/SDInstance.java b/src/ui/sd2/SDInstance.java
index a77294f353019440b5898d1f017a09e62b4a7458..51c60b4ba5327b532bed3d26723d8d9d4d5a39c5 100755
--- a/src/ui/sd2/SDInstance.java
+++ b/src/ui/sd2/SDInstance.java
@@ -71,15 +71,15 @@ public class SDInstance extends TGCScalableWithInternalComponent implements Swal
     public SDInstance(int _x, int _y, int _minX, int _maxX, int _minY, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp)  {
         super(_x, _y, _minX, _maxX, _minY, _maxY, _pos, _father, _tdp);
 
-	width = (int)(10 * tdp.getZoom());
-        height = (int)(500 * tdp.getZoom());
-	minWidth = (int)(10 * tdp.getZoom());
-	maxWidth = (int)(10 * tdp.getZoom());
-	minHeight = (int)(250 * tdp.getZoom());
-	maxHeight = (int)(1500 * tdp.getZoom());
-	//TraceManager.addDev("Init tgc= " + this + " minHeight=" + minHeight);
-	//TraceManager.addDev("Init tgc= " + this + " maxHeight=" + maxHeight);
-	oldScaleFactor = tdp.getZoom();
+		width = (int)(10 * tdp.getZoom());
+	    height = (int)(500 * tdp.getZoom());
+	    minWidth = (int)(10 * tdp.getZoom());
+		maxWidth = (int)(10 * tdp.getZoom());
+		minHeight = (int)(250 * tdp.getZoom());
+		maxHeight = (int)(1500 * tdp.getZoom());
+		//TraceManager.addDev("Init tgc= " + this + " minHeight=" + minHeight);
+		//TraceManager.addDev("Init tgc= " + this + " maxHeight=" + maxHeight);
+		oldScaleFactor = tdp.getZoom();
 
 	
         //makeTGConnectingPoints();
@@ -95,13 +95,12 @@ public class SDInstance extends TGCScalableWithInternalComponent implements Swal
         userResizable = true;
 
         value = "Instance name";
-	name = "instance";
+        name = "instance";
         isActor = false;
 
         myImageIcon = IconManager.imgic500;
     }
 
-    
     public void internalDrawing(Graphics g) {
 
         if( !tdp.isScaled() ) {
@@ -168,58 +167,57 @@ public class SDInstance extends TGCScalableWithInternalComponent implements Swal
     }
 
     public int spacePt() {
-	return (int)(Math.floor(spacePt*tdp.getZoom()));
+    	return (int)(Math.floor(spacePt*tdp.getZoom()));
     }
 
     public double spacePtDouble() {
-	return spacePt*tdp.getZoom();
+    	return spacePt*tdp.getZoom();
     }
 
     public void rescale(double scaleFactor){
 	//TraceManager.addDev("my rescale");
 	
-	super.rescale(scaleFactor);
+    	super.rescale(scaleFactor);
 
 	// update TG Connecting Points
-	int yh = spacePt();
+	//int yh = spacePt();
 	/*for(int i=0; i<nbConnectingPoint; i++, yh+=spacePt()) {
 	    connectingPoint[i].setCdX(width/2);
 	    connectingPoint[i].setCdY(yh);
 	    }*/
 
-	//height = Math.max(getMinHeightSize(), height);
-	hasBeenResized();
+		//height = Math.max(getMinHeightSize(), height);
+		hasBeenResized();
     }
 
     public void computeMinHeight() {
-	height = Math.max(getMinHeightSize(), height);
+    	height = Math.max(getMinHeightSize(), height);
     }
 
     public int getNbOfConnectingPoints() {
-	return 100;
+    	return 100;
 	//return (int)(((height - (2 * spacePt())) / spacePt()));
     }
 
 
     public void makePortMessage() {
-	int nbOfInternal = 30;
-	for(int i=0; i<nbOfInternal; i ++) {
-	    double ratio = ((i)/(double)(nbOfInternal));//+(spacePt*tdp.getZoom()/height);
-	    SDPortForMessage port = new SDPortForMessage(100, 200+ (int)(y + ratio*height), tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp);
-	    
-	    //tdp.addComponent(port, x+width/2, y+100, true, true);
-	    
-	    //TraceManager.addDev("Adding internal components");
-	    if (!addSwallowedTGComponent(port, x+width/2, (int)(5*spacePt*tdp.getZoom()) + (int)(y + ratio*height))) {
-		TraceManager.addDev("Adding PortForMessage failed");
-	    } else {
-		port.wasSwallowed();
-	    }
-	    port.setMoveCd(0, (int)(10*spacePt*tdp.getZoom()) + (int)(ratio*height), false);
-	    //TraceManager.addDev("Nb of internal components:" + nbInternalTGComponent);
-
-	}
-
+    	int nbOfInternal = 30;
+    	
+    	for(int i=0; i<nbOfInternal; i ++) {
+    		double ratio = ((i)/(double)(nbOfInternal));//+(spacePt*tdp.getZoom()/height);
+    		SDPortForMessage port = new SDPortForMessage(100, 200+ (int)(y + ratio*height), tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp);
+
+    		//tdp.addComponent(port, x+width/2, y+100, true, true);
+
+    		//TraceManager.addDev("Adding internal components");
+    		if (!addSwallowedTGComponent(port, x+width/2, (int)(5*spacePt*tdp.getZoom()) + (int)(y + ratio*height))) {
+    			TraceManager.addDev("Adding PortForMessage failed");
+    		} else {
+    			port.wasSwallowed();
+    		}
+    		port.setMoveCd(0, (int)(10*spacePt*tdp.getZoom()) + (int)(ratio*height), false);
+    		//TraceManager.addDev("Nb of internal components:" + nbInternalTGComponent);
+    	}
     }
 
     /*private void makeTGConnectingPoints() {
diff --git a/src/ui/sd2/TGConnectorMessageAsyncOrSyncSD.java b/src/ui/sd2/TGConnectorMessageAsyncOrSyncSD.java
deleted file mode 100755
index a0045a82a86d8935538a4e9071bf771bcb7370f6..0000000000000000000000000000000000000000
--- a/src/ui/sd2/TGConnectorMessageAsyncOrSyncSD.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille
-
-   ludovic.apvrille AT enst.fr
-
-   This software is a computer program whose purpose is to allow the
-   edition of TURTLE analysis, design and deployment diagrams, to
-   allow the generation of RT-LOTOS or Java code from this diagram,
-   and at last to allow the analysis of formal validation traces
-   obtained from external tools, e.g. RTL from LAAS-CNRS and CADP
-   from INRIA Rhone-Alpes.
-
-   This software is governed by the CeCILL  license under French law and
-   abiding by the rules of distribution of free software.  You can  use,
-   modify and/ or redistribute the software under the terms of the CeCILL
-   license as circulated by CEA, CNRS and INRIA at the following URL
-   "http://www.cecill.info".
-
-   As a counterpart to the access to the source code and  rights to copy,
-   modify and redistribute granted by the license, users are provided only
-   with a limited warranty  and the software's author,  the holder of the
-   economic rights,  and the successive licensors  have only  limited
-   liability.
-
-   In this respect, the user's attention is drawn to the risks associated
-   with loading,  using,  modifying and/or developing or reproducing the
-   software by the user in light of its specific status of free software,
-   that may mean  that it is complicated to manipulate,  and  that  also
-   therefore means  that it is reserved for developers  and  experienced
-   professionals having in-depth computer knowledge. Users are therefore
-   encouraged to load and test the software's suitability as regards their
-   requirements in conditions enabling the security of their systems and/or
-   data to be ensured and,  more generally, to use and operate it in the
-   same conditions as regards security.
-
-   The fact that you are presently reading this means that you have had
-   knowledge of the CeCILL license and that you accept its terms.
-
-   /**
-   * Class TGConnectorMessageAsyncOrSyncSD
-   * Connector used in SD for exchanging messages between instances
-   * Creation: 18/04/2016
-   * @version 1.0 18/04/2016
-   * @author Ludovic APVRILLE
-   * @see
-   */
-
-package ui.sd2;
-
-
-import java.awt.*;
-import java.awt.geom.*;
-import java.util.*;
-
-import myutil.*;
-import ui.*;
-
-
-public  class TGConnectorMessageAsyncOrSyncSD extends TGConnectorMessageSD {
-    public boolean isAsync;
-
-    protected int arrowLength = 10;
-
-    public TGConnectorMessageAsyncOrSyncSD( int _x, int _y, int _minX, int _minY, int _maxX, int _maxY, boolean _pos,
-                                            TGComponent _father, TDiagramPanel _tdp, TGConnectingPoint _p1, TGConnectingPoint _p2,
-                                            Vector _listPoint ) {
-        super(_x, _y,  _minX, _minY, _maxX, _maxY, _pos, _father, _tdp, _p1, _p2, _listPoint);
-        myImageIcon = IconManager.imgic504;
-    }
-
-    protected void drawLastSegment(Graphics g, int x1, int y1, int x2, int y2){
-        if (isAsync) {
-            if (Point2D.distance(x1, y1, x2, y2) < GraphicLib.longueur * 1.5) {
-                g.drawLine(x1, y1, x2, y2);
-            } else {
-                GraphicLib.arrowWithLine(g, 1, 1, 10, x1, y1, x2, y2, false);
-            }
-
-            if (!tdp.isScaled()) {
-                widthValue  = g.getFontMetrics().stringWidth(value);
-                heightValue = g.getFontMetrics().getHeight();
-            }
-
-            g.drawString(value, ((p1.getX() + p2.getX()) / 2)-widthValue/2, ((p1.getY() + p2.getY()) / 2) - 5);
-        } else {
-            if (Point2D.distance(x1, y1, x2, y2) < GraphicLib.longueur * 1.5) {
-                g.drawLine(x1, y1, x2, y2);
-            } else {
-                GraphicLib.arrowWithLine(g, 1, 0, 10, x1, y1, x2, y2, true);
-            }
-
-            if (!tdp.isScaled()) {
-                widthValue  = g.getFontMetrics().stringWidth(value);
-                heightValue = g.getFontMetrics().getHeight();
-            }
-
-            //g.drawString(value, (p1.getX() + p2.getX()) / 2, ((p1.getY() + p2.getY()) / 2) - 5);
-            g.drawString(value, ((p1.getX() + p2.getX()) / 2)-widthValue/2, ((p1.getY() + p2.getY()) / 2) - 5);
-        }
-    }
-
-    public void setType(boolean _isAsync) {
-        isAsync = _isAsync;
-    }
-
-    public int getType() {
-        if (isAsync) {
-            return TGComponentManager.CONNECTOR_MESSAGE_ASYNC_SD;
-        } else {
-            return  TGComponentManager.CONNECTOR_MESSAGE_SYNC_SD;
-        }
-    }
-
-    protected String translateExtraParam() {
-        StringBuffer sb = new StringBuffer("<extraparam>\n");
-        sb.append("<isAsync value=\"" + isAsync + "\" /> ");
-        sb.append("</extraparam>\n");
-        return new String(sb);
-    }
-
-
-    public void loadExtraParam(NodeList nl, int decX, int decY, int decId) throws MalformedModelingException{
-
-        String s;
-        String tmpGlobalCode = "";
-
-        try {
-            NodeList nli;
-            Node n1, n2;
-            Element elt;
-            isAsync = false;
-
-
-            //System.out.println("Loading attributes");
-            //System.out.println(nl.toString());
-
-            for(int i=0; i<nl.getLength(); i++) {
-                n1 = nl.item(i);
-                //System.out.println(n1);
-                if (n1.getNodeType() == Node.ELEMENT_NODE) {
-                    nli = n1.getChildNodes();
-                    for(int j=0; j<nli.getLength(); j++) {
-                        n2 = nli.item(j);
-                        //System.out.println(n2);
-                        if (n2.getNodeType() == Node.ELEMENT_NODE) {
-                            elt = (Element) n2;
-                            if (elt.getTagName().equals("isAsync")) {
-                                s = elt.getAttribute("value");
-                                if (s.equals("true")) {
-                                    isAsync = true;
-                                } else {
-                                    isAsync = false;
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-
-        } catch (Exception e) {
-            throw new MalformedModelingException();
-        }
-    }
-
-}
diff --git a/src/ui/tmldd/TMLArchiPortArtifact.java b/src/ui/tmldd/TMLArchiPortArtifact.java
index f1c6a4d4575192660fc2e29f5a3c0f4ef8bd8993..6650ebcb454f356ef8697c800e3cbf59369306c8 100644
--- a/src/ui/tmldd/TMLArchiPortArtifact.java
+++ b/src/ui/tmldd/TMLArchiPortArtifact.java
@@ -157,9 +157,9 @@ public class TMLArchiPortArtifact extends TGCWithoutInternalComponent implements
             TGComponent tgc;
             if (tdp != null) {
                 if (mappedMemory.length() > 0) {
-                    ListIterator<TGComponent> iterator = tdp.getComponentList().listIterator();
+                    ListIterator iterator = tdp.getComponentList().listIterator();
                     while(iterator.hasNext()) {
-                        tgc = iterator.next();
+                        tgc = (TGComponent)(iterator.next());
                         if (tgc instanceof TMLArchiMemoryNode) {
                             if (tgc.getName().compareTo(mappedMemory) == 0) {
                                 GraphicLib.dashedLine(g, getX() + getWidth()/2, getY() + getHeight()/2, tgc.getX() + tgc.getWidth()/2, tgc.getY() + tgc.getHeight()/2);
@@ -200,14 +200,17 @@ public class TMLArchiPortArtifact extends TGCWithoutInternalComponent implements
         String tmp;
         boolean error = false;
 
-        TraceManager.addDev( "bufferParameters before opening the window: " + bufferParameters.toString() );
-        JDialogPortArtifact dialog = new JDialogPortArtifact(frame, "Setting port artifact attributes", this, mappedMemory, bufferParameters, value );
-        //dialog.setSize(700, 600);
-        GraphicLib.centerOnParent(dialog, 700, 600);
-        dialog.setVisible( true ); // blocked until dialog has been closed
+        // Get the list of all other TMLArchiPortArtifact.java and retrieve the mapped ports
+		Vector<String> portsList = this.getTDiagramPanel().getMGUI().getAllTMLInputPorts();
+
+        //TraceManager.addDev( "bufferParameters before opening the window: " + bufferParameters.toString() );
+        JDialogPortArtifact dialog = new JDialogPortArtifact( frame, "Setting port artifact attributes", this, mappedMemory, portsList, value );
+        dialog.setSize(700, 600);
+        GraphicLib.centerOnParent(dialog);
+        dialog.show(); // blocked until dialog has been closed
         mappedMemory = dialog.getMappedMemory();
         bufferParameters = dialog.getBufferParameters();        //becomes empty if closing the window without pushing Save
-        TraceManager.addDev( "bufferParameters after closing the window: " + bufferParameters.toString() );
+        //TraceManager.addDev( "bufferParameters after closing the window: " + bufferParameters.toString() );
         bufferType = bufferParameters.get( Buffer.BUFFER_TYPE_INDEX );
 
         TraceManager.addDev( "mapped Port: " + dialog.getMappedPort() );
@@ -313,7 +316,7 @@ public class TMLArchiPortArtifact extends TGCWithoutInternalComponent implements
             NodeList nli;
             Node n1, n2;
             Element elt;
-   //         int t1id;
+            int t1id;
             String svalue = null, sname = null, sreferenceCommunication = null, stype = null;
             //String prio = null;
 
@@ -322,8 +325,8 @@ public class TMLArchiPortArtifact extends TGCWithoutInternalComponent implements
                 //System.out.println(n1);
                 if (n1.getNodeType() == Node.ELEMENT_NODE) {
                     nli = n1.getChildNodes();
-                    for(int j=0; j<nli.getLength(); j++) {
-                        n2 = nli.item(j);
+                    for(int j=0; i<nli.getLength(); i++) {
+                        n2 = nli.item(i);
                         //System.out.println(n2);
                         if (n2.getNodeType() == Node.ELEMENT_NODE) {
                             elt = (Element) n2;
diff --git a/src/ui/window/JDialogAvatarBlock.java b/src/ui/window/JDialogAvatarBlock.java
index bac920055b1c7c4cfdc7416c15620354858368c5..c26b6d5ffc184351005f9a72a974906e7e9f9529 100755
--- a/src/ui/window/JDialogAvatarBlock.java
+++ b/src/ui/window/JDialogAvatarBlock.java
@@ -748,11 +748,11 @@ public class JDialogAvatarBlock extends javax.swing.JDialog implements ActionLis
         //TraceManager.addDev("addMethod");
         String s = methodText.getText();
         AvatarMethod am = AvatarMethod.isAValidMethod(s);
-        
+
         AvatarMethod amtmp;
 
         if (am != null) {
-	    am.setImplementationProvided(implementationProvided.isSelected());
+            am.setImplementationProvided(implementationProvided.isSelected());
 
             // Checks whether the same method already belongs to the list
             int index = -1;
@@ -984,7 +984,7 @@ public class JDialogAvatarBlock extends javax.swing.JDialog implements ActionLis
         } else {
             AvatarMethod am = methods.get (i);
             methodText.setText(am.toString());
-            TraceManager.addDev("Implementation of " + am + " is: " +  am.isImplementationProvided());
+            //TraceManager.addDev("Implementation of " + am + " is: " +  am.isImplementationProvided());
             implementationProvided.setSelected(am.isImplementationProvided());
             removeMethodButton.setEnabled(true);
             if (i > 0) {
diff --git a/src/ui/window/JDialogPortArtifact.java b/src/ui/window/JDialogPortArtifact.java
index c2a3c9dced6e24d2e314255b717eac9a8feadd6d..792787025f91b8b1fede7184dba37b24b5fb0c70 100755
--- a/src/ui/window/JDialogPortArtifact.java
+++ b/src/ui/window/JDialogPortArtifact.java
@@ -1,575 +1,469 @@
-/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille, Andrea ENRICI
- *
- * ludovic.apvrille AT enst.fr, andrea.enrici AT nokia.com
- *
- * This software is a computer program whose purpose is to allow the
- * edition of TURTLE analysis, design and deployment diagrams, to
- * allow the generation of RT-LOTOS or Java code from this diagram,
- * and at last to allow the analysis of formal validation traces
- * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP
- * from INRIA Rhone-Alpes.
- *
- * This software is governed by the CeCILL  license under French law and
- * abiding by the rules of distribution of free software.  You can  use,
- * modify and/ or redistribute the software under the terms of the CeCILL
- * license as circulated by CEA, CNRS and INRIA at the following URL
- * "http://www.cecill.info".
- *
- * As a counterpart to the access to the source code and  rights to copy,
- * modify and redistribute granted by the license, users are provided only
- * with a limited warranty  and the software's author,  the holder of the
- * economic rights,  and the successive licensors  have only  limited
- * liability.
- *
- * In this respect, the user's attention is drawn to the risks associated
- * with loading,  using,  modifying and/or developing or reproducing the
- * software by the user in light of its specific status of free software,
- * that may mean  that it is complicated to manipulate,  and  that  also
- * therefore means  that it is reserved for developers  and  experienced
- * professionals having in-depth computer knowledge. Users are therefore
- * encouraged to load and test the software's suitability as regards their
- * requirements in conditions enabling the security of their systems and/or
- * data to be ensured and,  more generally, to use and operate it in the
- * same conditions as regards security.
- *
- * The fact that you are presently reading this means that you have had
- * knowledge of the CeCILL license and that you accept its terms.
- *
- * /**
- * Class JDialogTMLTaskArtifact
- * Dialog for managing artifact to map ports onto CPs
- * Creation: 19/09/2007
- * @version 1.0 19/09/2007
- * @author Ludovic APVRILLE, Andrea ENRICI
- * @see
- */
-
-package ui.window;
-
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.*;
-import java.util.*;
-
-import ui.*;
-import ui.tmldd.*;
-import tmltranslator.modelcompiler.*;
-
-import myutil.*;
-
-
-public class JDialogPortArtifact extends javax.swing.JDialog implements ActionListener  {
-    
-	private boolean regularClose;
-	private boolean emptyPortsList = false;
-    
-    private JPanel panel2;
-    private Frame frame;
-    private TMLArchiPortArtifact artifact;
-    private String mappedMemory = "VOID"; 
-
-	protected JComboBox<String> mappedPortCB, memoryCB;
-	protected JTextField baseAddressTF, numSamplesTF, bitsPerSymbolTF;
-	protected String baseAddress, mappedPort, sampleLength, numSamples, bitsPerSymbol;
-	protected String bank, dataType, symmetricalValue;
-	protected JComboBox<String> dataTypeCB, bankCB, symmetricalValueCB;
-
-	//Intl Data In
-	protected JTextField widthIntl_TF, bitInOffsetIntl_TF, inputOffsetIntl_TF;
-	protected String widthIntl, bitInOffsetIntl, inputOffsetIntl, packedBinaryInIntl;
-	protected JComboBox<String> packedBinaryInIntl_CB;
-
-	//Intl Data Out
-	protected JTextField bitOutOffsetIntl_TF, outputOffsetIntl_TF;
-	protected JComboBox<String> packedBinaryOutIntl_CB;
-	protected String packedBinaryOutIntl, bitOutOffsetIntl, outputOffsetIntl;
-
-	//Intl Perm
-	protected JTextField lengthPermIntl_TF, offsetPermIntl_TF;
-	protected String lengthPermIntl, offsetPermIntl;
-
-	//Mapper Data In
-	protected JTextField baseAddressDataInMapp_TF, numSamplesDataInMapp_TF, bitsPerSymbolDataInMapp_TF;
-	protected String baseAddressDataInMapp, numSamplesDataInMapp, bitsPerSymbolDataInMapp, symmetricalValueDataInMapp;
-	protected JComboBox<String> symmetricalValueDataInMapp_CB;
-	//Mapper Data Out
-	protected JTextField baseAddressDataOutMapp_TF;
-	protected String baseAddressDataOutMapp;
-	//Mapper LUT
-	protected JTextField baseAddressLUTMapp_TF;
-	protected String baseAddressLUTMapp;
-	
-  // Main Panel
-  private JButton closeButton;
-  private JButton cancelButton;
-
-	//Code generation
-	private JPanel panel3; /*panel4, panel5*/;
-	private JTabbedPane tabbedPane;
-	private int bufferType = 0;
-	private ArrayList<String> bufferParameters;
-//private String appName = "";
-    
-    /** Creates new form  */
-    public JDialogPortArtifact(Frame _frame, String _title, TMLArchiPortArtifact _artifact, String _mappedMemory, ArrayList<String> _bufferParameters, String _mappedPort ) {
-			super(_frame, _title, true);
-			frame = _frame;
-			artifact = _artifact;
-			mappedMemory = _mappedMemory;
-			bufferParameters = _bufferParameters; //contains a set of parameters that are read from the xml description. The first parameters is the buffer type
-			mappedPort = _mappedPort;
-			//appName = mappedPort.split("::")[0];
-
-			TraceManager.addDev("init components");
-
-			initComponents();
-
-			TraceManager.addDev("pack");
-			pack();
-    }
-    
-    private void initComponents() {
-
-        Container c = getContentPane();
-        GridBagLayout gridbag0 = new GridBagLayout();
-      //  GridBagLayout gridbag1 = new GridBagLayout();
-        GridBagLayout gridbag2 = new GridBagLayout();
-        GridBagConstraints c0 = new GridBagConstraints();
-        GridBagConstraints c1 = new GridBagConstraints();
-        GridBagConstraints c2 = new GridBagConstraints();
-        
-        setFont(new Font("Helvetica", Font.PLAIN, 14));
-        c.setLayout(gridbag0);
-        
-        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
-        
-        panel2 = new JPanel();
-        panel2.setLayout(gridbag2);
-        panel2.setBorder(new javax.swing.border.TitledBorder("Artifact attributes"));
-        panel2.setPreferredSize(new Dimension(650, 350));
-
-        panel3 = new JPanel();
-        panel3.setLayout(gridbag2);
-        panel3.setBorder(new javax.swing.border.TitledBorder("Code generation: memory configuration"));
-        panel3.setPreferredSize(new Dimension(650, 350));
-
-        tabbedPane = new JTabbedPane();
-//        panel4 = new JPanel();
-//        panel5 = new JPanel();
-        
-		c1.gridwidth = 1;
-        c1.gridheight = 1;
-        c1.weighty = 1.0;
-        c1.weightx = 1.0;
-        c1.fill = GridBagConstraints.HORIZONTAL;
-        c1.gridwidth = GridBagConstraints.REMAINDER; //end row
-		TraceManager.addDev("Getting communications");
-		//Vector<String> list = artifact.getTDiagramPanel().getMGUI().getAllTMLCommunicationNames();
-		Vector<String> portsList = artifact.getTDiagramPanel().getMGUI().getAllTMLInputPorts();
-   		//Vector<String> portsList = new Vector<String>();
-        TraceManager.addDev( "The list of input ports is:\n" + portsList.toString() );
-        if( portsList.size() == 0 ) {
-            emptyPortsList = true;
-            portsList.add( "No available port" );
-        }
-
-        // Build the list of available ports, if there is an application diagram
-        /*if( list.size() > 0 )   {
-	    	int index = 0;
-            //parse each entry of list. Entry is in format AppName::chIn__chOut
-            for( String s: list )	{
-                TraceManager.addDev( "Testing if " + s + " contains " + appName + "...");
-                if( s.contains( appName ) )	{	//build the DS for the mapped applications (filter out the case of multiple applications)
-                    //TraceManager.addDev( "Parsing: " + s );
-                    String[] temp1 = s.split("__");
-					String[] temp2 = temp1[0].split( "::" );
-    				String chOut = temp2[0] + "::" + temp1[1];
-                    //TraceManager.addDev( "chOut = " + chOut );
-                    String chIn = temp2[0] + "::" + temp2[1];
-                    //TraceManager.addDev( "chIn = " + chIn );
-                    if( !portsList.contains( chOut ) )	{
-                        portsList.add( chOut );
-                    }
-                    if( !portsList.contains( chIn ) )	{
-                        portsList.add( chIn );
-                    }
-		    	}
-            }
-		}
-        else    {
-            list.add( "No communication to map" );
-            emptyPortsList = true;
-            portsList.add( "No available port" );
-        }*/
-		
-		TraceManager.addDev( "Got communications" );
-
-        mappedPortCB = new JComboBox<String>( portsList );
-		if( !mappedPort.equals( "VOID" ) && !mappedPort.equals( "" ) )	{
-			mappedPortCB.setSelectedIndex( portsList.indexOf( mappedPort ) );
-		}
-		else	{
-			mappedPortCB.setSelectedIndex( 0 );
-		}
-        panel2.add( new JLabel( "Port:" ), c2 );
-		mappedPortCB.addActionListener(this);
-		panel2.add( mappedPortCB, c1 );
-		
-		//Make the list of memories that are available for being mapped
-		java.util.List<TGComponent> componentList = artifact.getTDiagramPanel().getComponentList();
-		Vector<String> memoryList = new Vector<String>();
-		for( int k = 0; k < componentList.size(); k++ )	{
-			if( componentList.get(k) instanceof TMLArchiMemoryNode )	{
-				memoryList.add( ( (TMLArchiMemoryNode) componentList.get(k) ).getName() );
-			}
-		}
-        if( memoryList.size() == 0 )    { // In case there are no memories in the design
-            memoryList.add( "No available memory" );              
-        }
-
-		memoryCB = new JComboBox<String>( memoryList );
-		if( !mappedMemory.equals( "VOID" ) && !mappedMemory.equals( "" ) )	{
-			memoryCB.setSelectedIndex( memoryList.indexOf( mappedMemory ) );
-		}
-		else	{
-			memoryCB.setSelectedIndex( 0 );
-		}
-		panel2.add( new JLabel( "Memory: "),  c2 );
-		memoryCB.addActionListener(this);
-		panel2.add( memoryCB, c1 );
-
-        if( (emptyPortsList) || (memoryList.size() == 0) )  {
-            //the project does not contain an application diagram, or the platform diagram does not contain any memory or both
-            bufferType = Buffer.ANOMALY;
-        }
-        else    {
-            //Must distinguish between 2 cases:
-            // - bufferParameters is empty because the user has just instantiated the artifact
-            // - bufferParameters is not empty as the user had already done some mapping
-            if( bufferParameters.size() == 0 )  {   //assign to bufferType the type of the first memory in memoryList
-		        for( int k = 0; k < componentList.size(); k++ )	{
-        			if( componentList.get(k) instanceof TMLArchiMemoryNode )	{
-		        		if( ((TMLArchiMemoryNode) componentList.get(k)).getName().equals( memoryList.get(0) ) ) {
-				            bufferType = ((TMLArchiMemoryNode)componentList.get(k)).getBufferType();
-                            break;
-                        }
-        			}
-		        }
-               // String memoryName = memoryList.get(0);
-                //TraceManager.addDev( "bufferType of " + memoryName + " is " + bufferType );
-            }
-            else    {
-                bufferType = Integer.parseInt( bufferParameters.get( Buffer.BUFFER_TYPE_INDEX ) );
-            }
-        }
-
-		ArrayList<JPanel> panelsList;
-
-		switch( bufferType )	{
-			case Buffer.FEP_BUFFER:	
-				panelsList = FepBuffer.makePanel( c1, c2 );
-				panel3 = panelsList.get(0);
-				break;
-			case Buffer.INTERLEAVER_BUFFER:	
-				panelsList = InterleaverBuffer.makePanel( c1, c2 );
-				tabbedPane.addTab( "Data In", panelsList.get(0) );
-				tabbedPane.addTab( "Data Out", panelsList.get(1) );
-				tabbedPane.addTab( "Permutation Table", panelsList.get(2) );
-				tabbedPane.setSelectedIndex(0);
-				break;
-			case Buffer.ADAIF_BUFFER:	
-				panelsList = AdaifBuffer.makePanel( c1, c2 );
-				panel3 = panelsList.get(0);
-				break;
-			case Buffer.MAPPER_BUFFER:	
-				tabbedPane.removeAll();
-				panelsList = MapperBuffer.makePanel( c1, c2 );
-				tabbedPane.addTab( "Data In", panelsList.get(0) );
-				tabbedPane.addTab( "Data Out", panelsList.get(1) );
-				tabbedPane.addTab( "Look Up Table", panelsList.get(2) );
-				tabbedPane.setSelectedIndex(0);
-				break;
-			case Buffer.MAIN_MEMORY_BUFFER:	
-				panelsList = MMBuffer.makePanel( c1, c2 );
-				panel3 = panelsList.get(0);
-				break;
-			default:	//the FEP buffer, arbitrary choice - Control flow goes here if there is an anomaly but no tabbedPane is added below
-				panelsList = FepBuffer.makePanel( c1, c2 );
-				panel3 = panelsList.get(0);
-				break;
-		}
-
-		// main panel;
-		c0.gridheight = 10;
-		c0.weighty = 1.0;
-		c0.weightx = 1.0;
-		c0.gridwidth = GridBagConstraints.REMAINDER; //end row
-		c0.fill = GridBagConstraints.BOTH;
-		c.add( panel2, c0 );
-
-        if( ( bufferType == Buffer.MAIN_MEMORY_BUFFER ) || ( bufferType == Buffer.FEP_BUFFER ) || ( bufferType == Buffer.ADAIF_BUFFER ) )    {
-            panel3.setBorder( new javax.swing.border.TitledBorder( "Code generation: memory configuration" ) );
-			tabbedPane.removeAll();
-			tabbedPane.addTab( "Data", panel3 );
-			tabbedPane.setSelectedIndex( 0 );
-		}
-        if( bufferType != Buffer.ANOMALY )  { //Don't add the tabbedPane is there is a bufferType anomaly
-    		c.add( tabbedPane, c0 );
-        }
-
-		c0.gridwidth = 1;
-		c0.gridheight = 1;
-		c0.fill = GridBagConstraints.HORIZONTAL;
-		closeButton = new JButton("Save and Close", IconManager.imgic25);
-		//closeButton.setPreferredSize(new Dimension(600, 50));
-		closeButton.addActionListener(this);
-		c.add(closeButton, c0);
-		c0.gridwidth = GridBagConstraints.REMAINDER; //end row
-		cancelButton = new JButton("Cancel", IconManager.imgic27);
-		cancelButton.addActionListener(this);
-		c.add(cancelButton, c0);
-  }
-
-	private int getBufferTypeFromSelectedMemory( String mappedMemory )	{
-		
-		java.util.List<TGComponent> componentList = artifact.getTDiagramPanel().getComponentList();
-		//Vector<String> list = new Vector<String>();
-		
-		for( int k = 0; k < componentList.size(); k++ )	{
-			if( componentList.get(k) instanceof TMLArchiMemoryNode )	{
-				TMLArchiMemoryNode memoryNode = (TMLArchiMemoryNode)componentList.get(k);
-				if( memoryNode.getName().equals( mappedMemory ) )	{
-					return memoryNode.getBufferType();
-				}
-			}
-		}
-		return 0;	//default: the main memory buffer
-	}
-    
-  public void	actionPerformed(ActionEvent evt)  {
-
-		if( evt.getSource() == memoryCB )	{
-			updateBufferPanel();
-		}
-        
-    String command = evt.getActionCommand();
-    // Compare the action command to the known actions.
-   	if (command.equals("Save and Close"))  {
-    	closeDialog();
-    } else if (command.equals("Cancel")) {
-    	cancelDialog();
-		}
-	}
-
-	private void updateBufferPanel()	{
-
-		GridBagConstraints c1 = new GridBagConstraints();
-		GridBagConstraints c2 = new GridBagConstraints();
-
-		c1.gridwidth = 1;
-		c1.gridheight = 1;
-		c1.weighty = 1.0;
-		c1.weightx = 1.0;
-		c1.fill = GridBagConstraints.HORIZONTAL;
-    c1.gridwidth = GridBagConstraints.REMAINDER; //end row
-		
-		//flushBuffersStrings();
-		bufferType = getBufferTypeFromSelectedMemory( (String)memoryCB.getItemAt( memoryCB.getSelectedIndex() ) );
-		ArrayList<JPanel> panelsList;
-
-		switch( bufferType )	{
-			case Buffer.FEP_BUFFER:	
-				tabbedPane.removeAll();
-				panelsList = FepBuffer.makePanel( c1, c2 );
-				panel3 = panelsList.get(0);
-				tabbedPane.addTab( "Data", panel3 );
-				break;
-			case Buffer.MAPPER_BUFFER:	
-				tabbedPane.removeAll();
-				panelsList = MapperBuffer.makePanel( c1, c2 );
-				tabbedPane.addTab( "Data In", panelsList.get(0) );
-				tabbedPane.addTab( "Data Out", panelsList.get(1) );
-				tabbedPane.addTab( "Look Up Table", panelsList.get(2) );
-				tabbedPane.setSelectedIndex(0);
-				break;
-			case Buffer.ADAIF_BUFFER:	
-				tabbedPane.removeAll();
-				panelsList = AdaifBuffer.makePanel( c1, c2 );
-				panel3 = panelsList.get(0);
-				tabbedPane.addTab( "Data", panel3 );
-				break;
-			case Buffer.INTERLEAVER_BUFFER:
-				tabbedPane.removeAll();
-				panelsList = InterleaverBuffer.makePanel( c1, c2 );
-				tabbedPane.addTab( "Data In", panelsList.get(0) );
-				tabbedPane.addTab( "Data Out", panelsList.get(1) );
-				tabbedPane.addTab( "Permutation Table", panelsList.get(2) );
-				tabbedPane.setSelectedIndex(0);
-				break;
-			case Buffer.MAIN_MEMORY_BUFFER:	
-				tabbedPane.removeAll();
-				panelsList = MMBuffer.makePanel( c1, c2 );
-				panel3 = panelsList.get(0);
-				tabbedPane.addTab( "Data", panel3 );
-				break;
-			default:	//the main memory buffer 
-				tabbedPane.removeAll();
-				panelsList = FepBuffer.makePanel( c1, c2 );
-				panel3 = panelsList.get(0);
-				tabbedPane.addTab( "Data", panel3 );
-				break;
-		}
-	}
-
-    public void closeDialog() {
-
-        regularClose = true;
-				mappedMemory = (String) memoryCB.getItemAt( memoryCB.getSelectedIndex() );
-				bufferType = getBufferTypeFromSelectedMemory( (String)memoryCB.getItemAt( memoryCB.getSelectedIndex() ) );
-				switch ( bufferType )	{
-					case Buffer.FEP_BUFFER:
-						if( !FepBuffer.closePanel( frame ) )	{
-							return;
-						}
-						break;
-					case Buffer.MAPPER_BUFFER:	
-						if( !MapperBuffer.closePanel( frame ) )	{
-							return;
-						}
-						break;
-					case Buffer.ADAIF_BUFFER:	
-						if( !AdaifBuffer.closePanel( frame ) )	{
-							return;
-						}
-						break;
-					case Buffer.INTERLEAVER_BUFFER:	
-						if( !InterleaverBuffer.closePanel( frame ) )	{
-							return;
-						}
-						break;
-					case Buffer.MAIN_MEMORY_BUFFER:	
-						if( !MMBuffer.closePanel( frame ) )	{
-							return;
-						}
-						break;
-					default:	//the main memory buffer 
-						if( !FepBuffer.closePanel( frame ) )	{
-							return;
-						}
-						break;
-				}
-        dispose();
-    }
-
-		public String getMappedPort()	{
-			return mappedPort;
-		}
-
-		public String getMappedMemory()	{
-			return mappedMemory;
-		}
-
-		public String getStartAddress()	{
-			return baseAddress;
-		}
-
-    public void cancelDialog() {
-        dispose();
-    }
-    
-    public boolean isRegularClose() {
-        return regularClose;
-    }
-	
-	public String getReferenceCommunicationName() {
-		if (emptyPortsList) {
-			return null;
-		}
-		String tmp = (String)( mappedPortCB.getSelectedItem() );
-		int index = tmp.indexOf("::");
-		if (index == -1) {
-			return tmp;
-		}
-        return tmp.substring(0, index);
-    }
-    
-    public String getCommunicationName() {
-        String tmp = (String)( mappedPortCB.getSelectedItem() );
-		int index = tmp.indexOf("::");
-		if (index == -1) {
-			return tmp;
-		}
-        tmp = tmp.substring(index+2, tmp.length());
-		
-		index =  tmp.indexOf("(");
-		if (index > -1) {
-			tmp = tmp.substring(0, index).trim();
-		}
-		return tmp;
-    }
-	
-	 public String getTypeName() {
-		String tmp = (String)( mappedPortCB.getSelectedItem() );
-		int index1 = tmp.indexOf("(");
-		int index2 = tmp.indexOf(")");
-		if ((index1 > -1) && (index2 > index1)) {
-			return tmp.substring(index1+1, index2);
-		}
-		return "";
-	 }
-	
-	public int indexOf(Vector<String> _list, String name) {
-		int i = 0;
-		for(String s : _list) {
-			if (s.equals(name)) {
-				return i;
-			}
-			i++;
-		}
-		return 0;
-	}
-	
-	public ArrayList<String> getBufferParameters()	{
-
-		ArrayList<String> params = new ArrayList<String>();
-		params.add( String.valueOf( bufferType ) );
-		switch( bufferType )	{
-			case Buffer.FEP_BUFFER:
-				params = FepBuffer.getBufferParameters();
-				break;
-			case Buffer.INTERLEAVER_BUFFER:	
-				params = InterleaverBuffer.getBufferParameters();
-				break;
-			case Buffer.ADAIF_BUFFER:
-				params = AdaifBuffer.getBufferParameters();
-				break;
-			case Buffer.MAPPER_BUFFER:	
-				params = MapperBuffer.getBufferParameters();
-				break;
-			case Buffer.MAIN_MEMORY_BUFFER:	
-				params = MMBuffer.getBufferParameters();
-				break;
-			default:	//the main memory buffer
-				params = FepBuffer.getBufferParameters();
-				break;
-		}
-		return params;
-	}
-//
-//	private void cleanPanels()	{
-//		panel3.removeAll();
-//		panel4.removeAll();
-//		panel5.removeAll();
-//		tabbedPane.removeAll();
-//	}
-//
-//	private void revalidateAndRepaintPanels()	{
-//		panel3.revalidate();
-//		panel3.repaint();
-//		panel4.revalidate();
-//		panel4.repaint();
-//		panel5.revalidate();
-//		panel5.repaint();
-//	}
-
-}	//End of class
+/**Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille,
+ * Nokia Bell Labs France, Andrea ENRICI
+ *
+ * ludovic.apvrille AT enst.fr
+ * andrea.enrici AT nokia.com
+ *
+ * This software is a computer program whose purpose is to allow the
+ * edition of TURTLE analysis, design and deployment diagrams, to
+ * allow the generation of RT-LOTOS or Java code from this diagram,
+ * and at last to allow the analysis of formal validation traces
+ * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP
+ * from INRIA Rhone-Alpes.
+ *
+ * This software is governed by the CeCILL  license under French law and
+ * abiding by the rules of distribution of free software.  You can  use,
+ * modify and/ or redistribute the software under the terms of the CeCILL
+ * license as circulated by CEA, CNRS and INRIA at the following URL
+ * "http://www.cecill.info".
+ *
+ * As a counterpart to the access to the source code and  rights to copy,
+ * modify and redistribute granted by the license, users are provided only
+ * with a limited warranty  and the software's author,  the holder of the
+ * economic rights,  and the successive licensors  have only  limited
+ * liability.
+ *
+ * In this respect, the user's attention is drawn to the risks associated
+ * with loading,  using,  modifying and/or developing or reproducing the
+ * software by the user in light of its specific status of free software,
+ * that may mean  that it is complicated to manipulate,  and  that  also
+ * therefore means  that it is reserved for developers  and  experienced
+ * professionals having in-depth computer knowledge. Users are therefore
+ * encouraged to load and test the software's suitability as regards their
+ * requirements in conditions enabling the security of their systems and/or
+ * data to be ensured and,  more generally, to use and operate it in the
+ * same conditions as regards security.
+ *
+ * The fact that you are presently reading this means that you have had
+ * knowledge of the CeCILL license and that you accept its terms.
+ *
+ * /**
+ * Class JDialogTMLTaskArtifact
+ * Dialog for managing artifact to map ports onto CPs
+ * Creation: 19/09/2007
+ * @version 1.0 19/09/2007
+ * @author Ludovic APVRILLE, Andrea ENRICI
+ * @see
+ */
+
+package ui.window;
+
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+import java.util.*;
+import java.util.List;
+
+import ui.*;
+import ui.tmldd.*;
+import tmltranslator.modelcompiler.*;
+
+import myutil.*;
+
+
+public class JDialogPortArtifact extends javax.swing.JDialog implements ActionListener  {
+    
+	private boolean regularClose;
+	private boolean emptyPortsList = false;
+    
+    private JPanel panel2;
+    private Frame frame;
+    private TMLArchiPortArtifact artifact;
+    private String mappedMemory = "VOID"; 
+
+	protected JComboBox mappedPortCB, memoryCB;
+	protected JTextField baseAddressTF, numSamplesTF, bitsPerSymbolTF;
+	protected String baseAddress, mappedPort, sampleLength, numSamples, bitsPerSymbol;
+	protected String bank, dataType, symmetricalValue;
+	protected JComboBox dataTypeCB, bankCB, symmetricalValueCB;
+
+	//Intl Data In
+	protected JTextField widthIntl_TF, bitInOffsetIntl_TF, inputOffsetIntl_TF;
+	protected String widthIntl, bitInOffsetIntl, inputOffsetIntl, packedBinaryInIntl;
+	protected JComboBox packedBinaryInIntl_CB;
+
+	//Intl Data Out
+	protected JTextField bitOutOffsetIntl_TF, outputOffsetIntl_TF;
+	protected JComboBox packedBinaryOutIntl_CB;
+	protected String packedBinaryOutIntl, bitOutOffsetIntl, outputOffsetIntl;
+
+	//Intl Perm
+	protected JTextField lengthPermIntl_TF, offsetPermIntl_TF;
+	protected String lengthPermIntl, offsetPermIntl;
+
+	//Mapper Data In
+	protected JTextField baseAddressDataInMapp_TF, numSamplesDataInMapp_TF, bitsPerSymbolDataInMapp_TF;
+	protected String baseAddressDataInMapp, numSamplesDataInMapp, bitsPerSymbolDataInMapp, symmetricalValueDataInMapp;
+	protected JComboBox symmetricalValueDataInMapp_CB;
+	//Mapper Data Out
+	protected JTextField baseAddressDataOutMapp_TF;
+	protected String baseAddressDataOutMapp;
+	//Mapper LUT
+	protected JTextField baseAddressLUTMapp_TF;
+	protected String baseAddressLUTMapp;
+	
+    // Main Panel
+    private JButton closeButton;
+    private JButton cancelButton;
+
+	//Code generation
+	private JPanel panel3, panel4, panel5;
+	private JTabbedPane tabbedPane;
+	private String HALUnitName = "";
+	private Vector<String> portsList;
+	private String appName = "";
+    
+    /** Creates new form  */
+    public JDialogPortArtifact(Frame _frame, String _title, TMLArchiPortArtifact _artifact, String _mappedMemory, Vector<String> _portsList, String _mappedPort ) {
+        super(_frame, _title, true);
+        frame = _frame;
+		artifact = _artifact;
+		mappedMemory = _mappedMemory;
+		portsList = _portsList;
+		mappedPort = _mappedPort;
+		appName = mappedPort.split("::")[0];
+		initComponents();
+		pack();
+    }
+    
+    private void initComponents() {
+
+        Container c = getContentPane();
+        GridBagLayout gridbag0 = new GridBagLayout();
+        GridBagLayout gridbag1 = new GridBagLayout();
+        GridBagLayout gridbag2 = new GridBagLayout();
+        GridBagConstraints c0 = new GridBagConstraints();
+        GridBagConstraints c1 = new GridBagConstraints();
+        GridBagConstraints c2 = new GridBagConstraints();
+        
+        setFont(new Font("Helvetica", Font.PLAIN, 14));
+        c.setLayout(gridbag0);
+        
+        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+        
+        panel2 = new JPanel();
+        panel2.setLayout(gridbag2);
+        panel2.setBorder(new javax.swing.border.TitledBorder("Artifact attributes"));
+        panel2.setPreferredSize(new Dimension(650, 350));
+
+        panel3 = new JPanel();
+        panel3.setLayout(gridbag2);
+        panel3.setBorder(new javax.swing.border.TitledBorder("Code generation: memory configuration"));
+        panel3.setPreferredSize(new Dimension(650, 350));
+
+        tabbedPane = new JTabbedPane();
+        panel4 = new JPanel();
+        panel5 = new JPanel();
+        
+		c1.gridwidth = 1;
+        c1.gridheight = 1;
+        c1.weighty = 1.0;
+        c1.weightx = 1.0;
+        c1.fill = GridBagConstraints.HORIZONTAL;
+        c1.gridwidth = GridBagConstraints.REMAINDER; //end row
+        int mappedPortIndex;
+        if( portsList.size() == 0 ) {
+            portsList.add( "No available port" );
+            mappedPortIndex = 0;
+        }
+        else    {
+            mappedPortIndex = portsList.indexOf( mappedPort );
+        }
+		
+        mappedPortCB = new JComboBox( portsList );
+        mappedPortCB.setSelectedIndex( mappedPortIndex );
+        panel2.add( new JLabel( "Port:" ), c2 );
+		mappedPortCB.addActionListener(this);
+		panel2.add( mappedPortCB, c1 );
+		
+		//Make the list of memories that are available for being mapped
+		List componentList = artifact.getTDiagramPanel().getComponentList();
+		Vector<String> memoryList = new Vector<String>();
+		for( int k = 0; k < componentList.size(); k++ )	{
+			if( componentList.get(k) instanceof TMLArchiMemoryNode )	{
+				memoryList.add( ( (TMLArchiMemoryNode) componentList.get(k) ).getName() );
+			}
+		}
+        if( memoryList.size() == 0 )    { // In case there are no memories in the design
+            memoryList.add( "No available memory" );              
+        }
+
+		memoryCB = new JComboBox( memoryList );
+		if( !mappedMemory.equals( "VOID" ) && !mappedMemory.equals( "" ) )	{
+			memoryCB.setSelectedIndex( memoryList.indexOf( mappedMemory ) );
+		}
+		else	{
+			memoryCB.setSelectedIndex( 0 );
+		}
+		panel2.add( new JLabel( "Memory: "),  c2 );
+		memoryCB.addActionListener(this);
+		panel2.add( memoryCB, c1 );
+
+		// main panel;
+		c0.gridheight = 10;
+		c0.weighty = 1.0;
+		c0.weightx = 1.0;
+		c0.gridwidth = GridBagConstraints.REMAINDER; //end row
+		c0.fill = GridBagConstraints.BOTH;
+		c.add( panel2, c0 );
+
+		c0.gridwidth = 1;
+		c0.gridheight = 1;
+		c0.fill = GridBagConstraints.HORIZONTAL;
+		closeButton = new JButton("Save and Close", IconManager.imgic25);
+		//closeButton.setPreferredSize(new Dimension(600, 50));
+		closeButton.addActionListener(this);
+		c.add(closeButton, c0);
+		c0.gridwidth = GridBagConstraints.REMAINDER; //end row
+		cancelButton = new JButton("Cancel", IconManager.imgic27);
+		cancelButton.addActionListener(this);
+		c.add(cancelButton, c0);
+  }
+
+	private String getBufferTypeFromSelectedMemory( String mappedMemory )	{
+		
+		List componentList = artifact.getTDiagramPanel().getComponentList();
+		Vector<String> list = new Vector<String>();
+		
+		for( int k = 0; k < componentList.size(); k++ )	{
+			if( componentList.get(k) instanceof TMLArchiMemoryNode )	{
+				TMLArchiMemoryNode memoryNode = (TMLArchiMemoryNode)componentList.get(k);
+				if( memoryNode.getName().equals( mappedMemory ) )	{
+					return memoryNode.getName();
+				}
+			}
+		}
+		return "NO MEC";	//default: the main memory buffer
+	}
+    
+  public void actionPerformed(ActionEvent evt)  {
+
+      /*if( evt.getSource() == memoryCB )	{
+          updateBufferPanel();
+      }*/
+      String command = evt.getActionCommand();
+      // Compare the action command to the known actions.
+      if (command.equals("Save and Close"))  {
+          closeDialog();
+      } else if (command.equals("Cancel")) {
+          cancelDialog();
+      }
+	}
+
+	private void updateBufferPanel()	{
+
+		GridBagConstraints c1 = new GridBagConstraints();
+		GridBagConstraints c2 = new GridBagConstraints();
+
+		c1.gridwidth = 1;
+		c1.gridheight = 1;
+		c1.weighty = 1.0;
+		c1.weightx = 1.0;
+		c1.fill = GridBagConstraints.HORIZONTAL;
+    c1.gridwidth = GridBagConstraints.REMAINDER; //end row
+		
+		//flushBuffersStrings();
+		HALUnitName = getBufferTypeFromSelectedMemory( (String)memoryCB.getItemAt( memoryCB.getSelectedIndex() ) );
+		ArrayList<JPanel> panelsList;
+
+		switch( HALUnitName )	{
+			case "FEP_BUFFER":
+				tabbedPane.removeAll();
+				panelsList = FepBuffer.makePanel( c1, c2 );
+				panel3 = panelsList.get(0);
+				tabbedPane.addTab( "Data", panel3 );
+				break;
+			case "MAPPER_BUFFER":
+				tabbedPane.removeAll();
+				panelsList = MapperBuffer.makePanel( c1, c2 );
+				tabbedPane.addTab( "Data In", panelsList.get(0) );
+				tabbedPane.addTab( "Data Out", panelsList.get(1) );
+				tabbedPane.addTab( "Look Up Table", panelsList.get(2) );
+				tabbedPane.setSelectedIndex(0);
+				break;
+			case "ADAIF_BUFFER":
+				tabbedPane.removeAll();
+				panelsList = AdaifBuffer.makePanel( c1, c2 );
+				panel3 = panelsList.get(0);
+				tabbedPane.addTab( "Data", panel3 );
+				break;
+			case "INTERLEAVER_BUFFER":
+				tabbedPane.removeAll();
+				panelsList = InterleaverBuffer.makePanel( c1, c2 );
+				tabbedPane.addTab( "Data In", panelsList.get(0) );
+				tabbedPane.addTab( "Data Out", panelsList.get(1) );
+				tabbedPane.addTab( "Permutation Table", panelsList.get(2) );
+				tabbedPane.setSelectedIndex(0);
+				break;
+			case "MAIN_MEMORY_BUFFER":
+				tabbedPane.removeAll();
+				panelsList = MMBuffer.makePanel( c1, c2 );
+				panel3 = panelsList.get(0);
+				tabbedPane.addTab( "Data", panel3 );
+				break;
+			default:	//the main memory buffer 
+				tabbedPane.removeAll();
+				panelsList = FepBuffer.makePanel( c1, c2 );
+				panel3 = panelsList.get(0);
+				tabbedPane.addTab( "Data", panel3 );
+				break;
+		}
+	}
+
+    public void closeDialog() {
+
+        regularClose = true;
+        mappedMemory = (String) memoryCB.getItemAt( memoryCB.getSelectedIndex() );
+        HALUnitName = getBufferTypeFromSelectedMemory( (String)memoryCB.getItemAt( memoryCB.getSelectedIndex() ) );
+        switch ( HALUnitName )	{
+					case "FEP_BUFFER":
+						if( !FepBuffer.closePanel( frame ) )	{
+							return;
+						}
+						break;
+					case "MAPPER_BUFFER":
+						if( !MapperBuffer.closePanel( frame ) )	{
+							return;
+						}
+						break;
+					case "ADAIF_BUFFER":
+						if( !AdaifBuffer.closePanel( frame ) )	{
+							return;
+						}
+						break;
+					case "INTERLEAVER_BUFFER":
+						if( !InterleaverBuffer.closePanel( frame ) )	{
+							return;
+						}
+						break;
+					case "MAIN_MEMORY_BUFFER":
+						if( !MMBuffer.closePanel( frame ) )	{
+							return;
+						}
+						break;
+					default:	//the main memory buffer 
+						if( !FepBuffer.closePanel( frame ) )	{
+							return;
+						}
+						break;
+				}
+        dispose();
+    }
+
+		public String getMappedPort()	{
+			return mappedPort;
+		}
+
+		public String getMappedMemory()	{
+			return mappedMemory;
+		}
+
+		public String getStartAddress()	{
+			return baseAddress;
+		}
+
+    public void cancelDialog() {
+        dispose();
+    }
+    
+    public boolean isRegularClose() {
+        return regularClose;
+    }
+	
+	public String getReferenceCommunicationName() {
+		if (emptyPortsList) {
+			return null;
+		}
+		String tmp = (String)( mappedPortCB.getSelectedItem() );
+        if( tmp.length() > 0 )    {
+    		int index = tmp.indexOf("::");
+	    	if (index == -1) {
+		    	return tmp;
+		    }
+            return tmp.substring(0, index);
+        }
+        else    {
+            return "ERROR EMPTY PORT NAME";
+        }
+    }
+    
+    public String getCommunicationName() {
+        String tmp = (String)( mappedPortCB.getSelectedItem() );
+		int index = tmp.indexOf("::");
+		if (index == -1) {
+			return tmp;
+		}
+        tmp = tmp.substring(index+2, tmp.length());
+		
+		index =  tmp.indexOf("(");
+		if (index > -1) {
+			tmp = tmp.substring(0, index).trim();
+		}
+		return tmp;
+    }
+	
+	 public String getTypeName() {
+		String tmp = (String)( mappedPortCB.getSelectedItem() );
+		int index1 = tmp.indexOf("(");
+		int index2 = tmp.indexOf(")");
+		if ((index1 > -1) && (index2 > index1)) {
+			return tmp.substring(index1+1, index2);
+		}
+		return "";
+	 }
+	
+	public int indexOf(Vector<String> _list, String name) {
+		int i = 0;
+		for(String s : _list) {
+			if (s.equals(name)) {
+				return i;
+			}
+			i++;
+		}
+		return 0;
+	}
+	
+	public ArrayList<String> getBufferParameters()	{
+
+		ArrayList<String> params = new ArrayList<String>();
+		params.add( String.valueOf( HALUnitName ) );
+		switch( HALUnitName )	{
+			case "FEP_BUFFER":
+				params = FepBuffer.getBufferParameters();
+				break;
+            case "INTERLEAVER_BUFFER":
+				params = InterleaverBuffer.getBufferParameters();
+				break;
+			case "ADAIF_BUFFER":
+				params = AdaifBuffer.getBufferParameters();
+				break;
+            case "MAPPER_BUFFER":
+				params = MapperBuffer.getBufferParameters();
+				break;
+			case "MAIN_MEMORY_BUFFER":
+				params = MMBuffer.getBufferParameters();
+				break;
+			default:	//the main memory buffer
+				params = FepBuffer.getBufferParameters();
+				break;
+		}
+		return params;
+	}
+
+	private void cleanPanels()	{
+		panel3.removeAll();
+		panel4.removeAll();
+		panel5.removeAll();
+		tabbedPane.removeAll();
+	}
+
+	private void revalidateAndRepaintPanels()	{
+		panel3.revalidate();
+		panel3.repaint();
+		panel4.revalidate();
+		panel4.repaint();
+		panel5.revalidate();
+		panel5.repaint();
+	}
+
+}	//End of class