mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2025-11-19 11:15:49 +00:00
Reliable tx submission diagram (draft)
This commit is contained in:
666
content/_img-sources/reliable-tx-submission.uxf
Normal file
666
content/_img-sources/reliable-tx-submission.uxf
Normal file
@@ -0,0 +1,666 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<diagram program="umlet" version="14.2">
|
||||
<zoom_level>10</zoom_level>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>470</x>
|
||||
<y>80</y>
|
||||
<w>180</w>
|
||||
<h>90</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Find the latest validated ledger index. Call this value A.
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>540</x>
|
||||
<y>40</y>
|
||||
<w>30</w>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLSpecialState</id>
|
||||
<coordinates>
|
||||
<x>540</x>
|
||||
<y>30</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
<panel_attributes>type=initial</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>470</x>
|
||||
<y>200</y>
|
||||
<w>180</w>
|
||||
<h>110</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Construct transaction JSON including Sequence and LastLedgerSequence.
|
||||
(LastLedgerSequence is > A)
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>540</x>
|
||||
<y>160</y>
|
||||
<w>30</w>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>540</x>
|
||||
<y>300</y>
|
||||
<w>30</w>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>470</x>
|
||||
<y>340</y>
|
||||
<w>180</w>
|
||||
<h>50</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Sign transaction.
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>470</x>
|
||||
<y>420</y>
|
||||
<w>180</w>
|
||||
<h>130</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Save transaction to persistent storage. Be sure to include the hash, Sequence, LastLedgerSequence, and the validated ledger index.
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>540</x>
|
||||
<y>380</y>
|
||||
<w>30</w>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>540</x>
|
||||
<y>540</y>
|
||||
<w>30</w>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Text</id>
|
||||
<coordinates>
|
||||
<x>490</x>
|
||||
<y>0</y>
|
||||
<w>160</w>
|
||||
<h>30</h>
|
||||
</coordinates>
|
||||
<panel_attributes>New transaction
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>470</x>
|
||||
<y>580</y>
|
||||
<w>180</w>
|
||||
<h>50</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Submit transaction.
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLTimer</id>
|
||||
<coordinates>
|
||||
<x>480</x>
|
||||
<y>660</y>
|
||||
<w>140</w>
|
||||
<h>90</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Wait ~4s for next
|
||||
validated ledger</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>460</x>
|
||||
<y>790</y>
|
||||
<w>180</w>
|
||||
<h>50</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Check status of transaction by hash.
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>540</x>
|
||||
<y>740</y>
|
||||
<w>30</w>
|
||||
<h>70</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;50.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLSpecialState</id>
|
||||
<coordinates>
|
||||
<x>530</x>
|
||||
<y>880</y>
|
||||
<w>40</w>
|
||||
<h>40</h>
|
||||
</coordinates>
|
||||
<panel_attributes>type=decision</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>540</x>
|
||||
<y>830</y>
|
||||
<w>30</w>
|
||||
<h>70</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;50.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>560</x>
|
||||
<y>880</y>
|
||||
<w>220</w>
|
||||
<h>50</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-
|
||||
[transaction is not
|
||||
in a validated ledger]</panel_attributes>
|
||||
<additional_attributes>200.0;20.0;10.0;20.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>540</x>
|
||||
<y>910</y>
|
||||
<w>180</w>
|
||||
<h>130</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-
|
||||
[transaction is
|
||||
in a validated ledger]</panel_attributes>
|
||||
<additional_attributes>10.0;110.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>460</x>
|
||||
<y>1020</y>
|
||||
<w>180</w>
|
||||
<h>50</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Save final outcome to persistent storage.
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLSpecialState</id>
|
||||
<coordinates>
|
||||
<x>540</x>
|
||||
<y>1100</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
<panel_attributes>type=final</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>540</x>
|
||||
<y>1060</y>
|
||||
<w>30</w>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Text</id>
|
||||
<coordinates>
|
||||
<x>530</x>
|
||||
<y>1120</y>
|
||||
<w>60</w>
|
||||
<h>30</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Done
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLSpecialState</id>
|
||||
<coordinates>
|
||||
<x>760</x>
|
||||
<y>880</y>
|
||||
<w>40</w>
|
||||
<h>40</h>
|
||||
</coordinates>
|
||||
<panel_attributes>type=decision</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>570</x>
|
||||
<y>670</y>
|
||||
<w>410</w>
|
||||
<h>230</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-
|
||||
r2=[latest validated leger \nis < LastLedgerSequence]</panel_attributes>
|
||||
<additional_attributes>10.0;10.0;210.0;10.0;210.0;210.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>770</x>
|
||||
<y>910</y>
|
||||
<w>280</w>
|
||||
<h>70</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-
|
||||
r1=[latest validated leger \nis ≥ LastLedgerSequence]</panel_attributes>
|
||||
<additional_attributes>260.0;50.0;10.0;50.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLSpecialState</id>
|
||||
<coordinates>
|
||||
<x>1030</x>
|
||||
<y>940</y>
|
||||
<w>40</w>
|
||||
<h>40</h>
|
||||
</coordinates>
|
||||
<panel_attributes>type=decision</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>1040</x>
|
||||
<y>970</y>
|
||||
<w>320</w>
|
||||
<h>90</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-
|
||||
[server has continuous ledger history
|
||||
from A to LastLedgerSequence, inclusive]
|
||||
</panel_attributes>
|
||||
<additional_attributes>10.0;70.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLSpecialState</id>
|
||||
<coordinates>
|
||||
<x>1030</x>
|
||||
<y>1140</y>
|
||||
<w>40</w>
|
||||
<h>40</h>
|
||||
</coordinates>
|
||||
<panel_attributes>type=decision</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>1040</x>
|
||||
<y>1100</y>
|
||||
<w>30</w>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>1060</x>
|
||||
<y>710</y>
|
||||
<w>300</w>
|
||||
<h>270</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-
|
||||
[server does not have
|
||||
continuous ledger history
|
||||
from A to LastLedgerSequence
|
||||
(inclusive)]
|
||||
</panel_attributes>
|
||||
<additional_attributes>70.0;10.0;70.0;250.0;10.0;250.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>1020</x>
|
||||
<y>660</y>
|
||||
<w>180</w>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Wait for gaps to fill in or ask a different server.
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>770</x>
|
||||
<y>670</y>
|
||||
<w>270</w>
|
||||
<h>30</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;10.0;250.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>970</x>
|
||||
<y>1040</y>
|
||||
<w>180</w>
|
||||
<h>70</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Look up account Sequence number in latest validated ledger.
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>860</x>
|
||||
<y>1140</y>
|
||||
<w>190</w>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-
|
||||
[Account Sequence is
|
||||
less than or equal to
|
||||
transaction Sequence]</panel_attributes>
|
||||
<additional_attributes>10.0;20.0;170.0;20.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLSpecialState</id>
|
||||
<coordinates>
|
||||
<x>770</x>
|
||||
<y>1310</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
<panel_attributes>type=flow_final</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>690</x>
|
||||
<y>1120</y>
|
||||
<w>180</w>
|
||||
<h>80</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Transaction has not been included in any validated ledger and never will be.
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>690</x>
|
||||
<y>1230</y>
|
||||
<w>180</w>
|
||||
<h>50</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Save final outcome to persistent storage.
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>770</x>
|
||||
<y>1190</y>
|
||||
<w>30</w>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>770</x>
|
||||
<y>1270</y>
|
||||
<w>30</w>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Text</id>
|
||||
<coordinates>
|
||||
<x>760</x>
|
||||
<y>1330</y>
|
||||
<w>60</w>
|
||||
<h>30</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Done
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLSpecialState</id>
|
||||
<coordinates>
|
||||
<x>210</x>
|
||||
<y>250</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
<panel_attributes>type=initial</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Text</id>
|
||||
<coordinates>
|
||||
<x>140</x>
|
||||
<y>220</y>
|
||||
<w>190</w>
|
||||
<h>30</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Recover from outage
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>1060</x>
|
||||
<y>1140</y>
|
||||
<w>260</w>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-
|
||||
[Account Sequence is
|
||||
greater than transaction
|
||||
Sequence]</panel_attributes>
|
||||
<additional_attributes>240.0;20.0;10.0;20.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>1300</x>
|
||||
<y>1130</y>
|
||||
<w>180</w>
|
||||
<h>80</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Unknown transaction has been validated. Manual intervention recommended.
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>140</x>
|
||||
<y>300</y>
|
||||
<w>180</w>
|
||||
<h>80</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Check persistent storage for transactions without a final outcome saved.
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>210</x>
|
||||
<y>260</y>
|
||||
<w>30</w>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>210</x>
|
||||
<y>370</y>
|
||||
<w>30</w>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLSpecialState</id>
|
||||
<coordinates>
|
||||
<x>200</x>
|
||||
<y>410</y>
|
||||
<w>40</w>
|
||||
<h>40</h>
|
||||
</coordinates>
|
||||
<panel_attributes>type=decision</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>230</x>
|
||||
<y>420</y>
|
||||
<w>210</w>
|
||||
<h>110</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-
|
||||
[final outcomes of
|
||||
all transactions
|
||||
are recorded]</panel_attributes>
|
||||
<additional_attributes>70.0;90.0;70.0;10.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Text</id>
|
||||
<coordinates>
|
||||
<x>280</x>
|
||||
<y>530</y>
|
||||
<w>60</w>
|
||||
<h>30</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Done
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLSpecialState</id>
|
||||
<coordinates>
|
||||
<x>290</x>
|
||||
<y>510</y>
|
||||
<w>20</w>
|
||||
<h>20</h>
|
||||
</coordinates>
|
||||
<panel_attributes>type=final</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>0</x>
|
||||
<y>420</y>
|
||||
<w>240</w>
|
||||
<h>250</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-
|
||||
r2=[final outcomes of\nsome transactions\nare not recorded]
|
||||
r2pos=-50,100</panel_attributes>
|
||||
<additional_attributes>220.0;230.0;220.0;190.0;140.0;190.0;140.0;10.0;200.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>540</x>
|
||||
<y>620</y>
|
||||
<w>30</w>
|
||||
<h>60</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>10.0;40.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
<element>
|
||||
<id>UMLClass</id>
|
||||
<coordinates>
|
||||
<x>140</x>
|
||||
<y>650</y>
|
||||
<w>180</w>
|
||||
<h>100</h>
|
||||
</coordinates>
|
||||
<panel_attributes>Repeat the following steps for each transaction without a final outcome recorded.
|
||||
style=wordwrap</panel_attributes>
|
||||
<additional_attributes/>
|
||||
</element>
|
||||
<element>
|
||||
<id>Relation</id>
|
||||
<coordinates>
|
||||
<x>220</x>
|
||||
<y>740</y>
|
||||
<w>260</w>
|
||||
<h>90</h>
|
||||
</coordinates>
|
||||
<panel_attributes>lt=<-</panel_attributes>
|
||||
<additional_attributes>240.0;70.0;10.0;70.0;10.0;10.0</additional_attributes>
|
||||
</element>
|
||||
</diagram>
|
||||
Reference in New Issue
Block a user