--- a/Makefile Fri May 02 17:03:05 2014 +0200
+++ b/Makefile Mon May 05 22:48:21 2014 +0200
@@ -1,4 +1,4 @@
-IMAGES = procs.pdf
+IMAGES = procs.pdf routing.pdf
ALL = mk2014.pdf
all: $(ALL)
--- a/mk2014.tex Fri May 02 17:03:05 2014 +0200
+++ b/mk2014.tex Mon May 05 22:48:21 2014 +0200
@@ -12,10 +12,17 @@
\begin{document}
+% sicheres logging
+% einmal angenommen - verantwortugn
+
\begin{frame}
\titlepage
\end{frame}
+\begin{frame}{Inhalt}
+ \tableofcontents
+\end{frame}
+
\begin{frame}[<+->][fragile]{Wie positioniert Exim sich gegenüber anderen MTA}
\begin{itemize}
@@ -38,44 +45,62 @@
Over 1d 1 0.0% 100.0%
\end{verbatim}
}
+ \item Saubere Dokumentation (spec.txt)
+ \item Dokumentiertes Protokollformat
\end{itemize}
\end{frame}
\begin{frame}{Arbeitsweise und Anatomie}{Überblick}
\begin{itemize}
-\item Binary: (ca 1MB) großer Universalklumpen
-\item Queue: Verzeichnis, 2 Files je Message
-\item IPC: nichts, außer fork(2) oder exec(3)
-\item Shared: „Hint“-Files (z.B. retry info)
+\item Binary ist ein ca 1MB großer Universalklumpen
+\item Einfache Struktur der operativen Daten - Verzeichnis, 2 Files je
+Message, Spool/Message-Log in 16 Verzeichnissen
+\item Dokument
+\item Keine aufwändigen IPC - nichts, außer fork(2) oder exec(3)
+\item Wenig gemeinsam genutzte Daten - nur „Hint“-Files (z.B. retry info)
\end{itemize}
\end{frame}
\begin{frame}{Arbeitsweise und Anatomie}{Prozesse}
\includegraphics[width=0.8\textwidth,angle=270]{procs}
-%\llap{\includegraphics[width=0.8\textwidth,angle=270]{procs-1}}
-%\llap{\includegraphics[width=0.8\textwidth,angle=270]{procs-2}}
-%\llap{\includegraphics[width=0.8\textwidth,angle=270]{procs-3}}
-%\multiinclude[<+->][format=pdf,graphics={width=0.8\textwidth,angle=270}]{procs}
+\end{frame}
+
+\begin{frame}{Routing}
+\includegraphics[width=0.8\textwidth,angle=270]{routing}
\end{frame}
\begin{frame}{Arbeitsweise und Anatomie}{IN, OUT, Retry}
+Es gibt im wesentlichen 3 Phasen der Verarbeitung
\begin{enumerate}
- \item IN: ACL (Ratelimit, Blacklists, Routing-Test, Content-Scan) Enqueue
- \item OUT: Dequeue, Routing, Transport
- \item Retry: Queuerunner, Dequeue, Routing, Transport
+ \item Empfang
+ \begin{itemize}
+ \item ACL mit Ratelimit, Blacklists, Routing-Test, Content-Scan
+ \item Ablage im Spool-Verzeichnis
+ \end{itemize}
+ \item Start des Sendeprozesses
+ \begin{itemize}
+ \item Spoolfile-Lock
+ \item Routing
+ \item Transport oder ggf. Abbruch
+ \end{itemize}
+ \item Queuerunner startet ggf. weitere Versuche
\end{enumerate}
\end{frame}
\begin{frame}[fragile]{Konfiguration}{Struktur}
-\begin{itemize}
- \item Globaler Teil (ca. 240 Direktiven)
- \item Access-Control-Lists für SMTP: \verb=begin acl=
- \item Routing-Regeln (ACL und Routing): \verb=begin routers=
- \item Transport-Definitionen: \verb=begin transports=
- \item Retry-Vorgaben: \verb=begin retry=
- \item Envelope/Header-Rewriting: \verb=begin rewrite=
- \item SMTP-Authentifizierung: \verb=begin authenticators=
-\end{itemize}
+Strukturiertes Konfigurationsfile mit mehreren Abschnitten, teilweise
+miteinander verlinkt (Router referenziert Tranports, globaler Teil
+referenziert ACL)
+\begin{description}
+ \item[global] Etwa 240 allgemeine Direktiven
+ \item[acl] Access Control Lists für SMTP
+ \item[routers] Routing-Regeln (genutzt auch von ACL)
+ \item[transports] Wie wird SMTP gemacht, oder das Anhängen an Mailboxen
+ \item[retry] Unter welchen Bedingungen wird wann und wie oft und wie
+ lange wiederholt
+ \item[rewrite] Umschreiben von Headern und Envelope
+ \item[authenticators] SMTP-Authentifizierung
+\end{description}
\end{frame}
\begin{frame}[fragile]{Konfiguration}{Syntax}
@@ -97,56 +122,66 @@
\end{frame}
-\begin{frame}[fragile]{String-Expansionen / Listen / File- und Datenbank-Lookups}
+\begin{frame}[fragile]{Konfiguration}{Expansion}
Etwa die Hälfte der Konfigurationsdirektiven erlaubt
-Variablensubstitution (Expansion)zur Laufzeit.
-Testen kann man diese sehr einfach mit \verb=exim -be '…'=
-\scriptsize
-\begin{verbatim}
- exim -be '$primary_hostname'
- exim -oMi 1.1.1.1 -oMa 2.2.2.2 -be '$sender_host_address -> $received_ip_address'
- exim -be '${lookup{root}lsearch{/etc/aliases}}'
- exim -be '${lookup dnsdb{mx=heise.de}}'
-\end{verbatim}
+Variablensubstitution (Expansion) zur Laufzeit.
+Testen kann man diese sehr einfach:
+\begin{scriptsize}\begin{verbatim}
+ $ exim -be '$primary_hostname'
+ jumper.schlittermann.de
+ $ exim -be -oMi 1.1.1.1 -oMa 2.2.2.2 '$sender_host_address $received_ip_address'
+ 2.2.2.2 1.1.1.1
+ $ exim -be '${lookup passwd{nobody}{${extract{5}{:}{$value}}}}'
+ /nonexistent
+ $ exim -be '${lookup{root}lsearch{/etc/aliases}}'
+ heiko
+ $ exim -be '${lookup dnsdb{mx=heise.de}}'
+ 10 relay.heise.de
+\end{verbatim}\end{scriptsize}
+\end{frame}
+\begin{frame}[fragile]{Expansion}{Übersicht}
+Expansion als „working horse“ der Flexibilität
+\begin{scriptsize}
\begin{description}
\item[Variablen] \verb=$local_part=, \verb=${local_part}=
-\item[String-Ops] \verb=${sha1:$local_part}=, \verb=${uc:$domain}=
-\item[String-Manipulation] \verb=${sg{$local_part}{.laus}{***}}=
-\item[Conditional] \verb=${if eq{$local_part}{xxx} {~xxx/.mbox}{/var/mail/$local_part}}=
-\item[Lookup single key] \verb=${lookup{$local_part}lsearch{/etc/aliases}}=
-\item[Lookup query style] \verb+${lookup dnsdb{mx=heise.de}}+
+\item[Operatoren] \verb=${sha1:$local_part}=, \verb=${uc:$domain}=
+\item[Manipulation] \verb=${sg{$local_part}{.laus}{XXX}}=
+\item[Bedingungen] \verb=${if eq{$local_part}{x}{~x/.mbox}{/var/mail/$local_part}}=
+\item[Lookup/Key] \verb=${lookup{$local_part}lsearch{/etc/aliases}}=
+\item[Lookup/Query] \verb+${lookup dnsdb{mx=heise.de}}+
\end{description}
+\end{scriptsize}
\end{frame}
-\begin{frame}[fragile]{String-Expansion}{Variablen}
+\begin{frame}[fragile]{Expansion}{Variablen}
Es gibt knapp 200 Variablen, Referenzierung als \verb=$<var>= oder
\verb=${<var>}=.
-\begin{itemize}
-\item Empfänger: \verb=$local_part=, \verb=$domain=, \verb=$local_part_prefix=
-\item Sender: \verb=$sender_local_part=
-\item Message: \verb=$message_line_count=, \verb=$message_size=, \verb=$message_headers=
-\item Content: \verb=$spam_score_int=, \verb=$malware_name=
-\item Routing: \verb=$original_domain=
-\item System: \verb=$load_average=, \verb=$log\_space=, \verb=$pid=
-\item Operation: \verb=$received_interface_address=, \verb=$tls_out_peerdn=, \verb=$tls_out_bits=
-\end{itemize}
+\begin{scriptsize}
+\begin{description}
+\item[Envelope] \verb=$local_part=, \verb=$domain=, \verb=$local_part_prefix=,
+ \verb=$sender_local_part=, \verb=$recipients=
+\item[Message] \verb=$message_line_count=, \verb=$message_size=,
+\verb=$message_headers=, \verb=$h_subject:=
+\item[Content] \verb=$spam_score_int=, \verb=$malware_name=
+\item[Routing] \verb=$original_domain=
+\item[System] \verb=$load_average=, \verb=$log_space=, \verb=$pid=
+\item[Operation] \verb=$received_interface_address=, \verb=$tls_out_peerdn=, \verb=$tls_out_bits=
+\end{description}
+\end{scriptsize}
\end{frame}
-% items
-% <var> ${<op>:<var>} ${<func>[{arg}…]} ${if <cond>[{arg}…] }
-% operators
-%
-
\begin{frame}[fragile]{String-Expansion}{String-Operationen}
Einfache Manipulation von Zeichenketten sind möglich:
\verb=${<op>:<string>}=
-\begin{itemize}
-\item Konvertierung \verb=${uc:$local_part}=, \verb=${sha1:$domain}=, \verb=${time_eval:2d4h}=
-\item Extraktion \verb=${length_3:$domain}=, \verb=${substr_1_3:$domain}=, \verb=${addresses:$h_from}=
-\item Arithmetik \verb=${eval:40 + 2}=, \verb=${40 + 2k}=, \verb=${eval:8 << 2}=
-\item Filesystem \verb=${stat:/etc/hosts}=
-\end{itemize}
+\begin{scriptsize}
+\begin{description}
+\item[Konvertierung] \verb=${uc:$local_part}=, \verb=${sha1:$domain}=, \verb=${time_eval:2d4h}=
+\item[Extraktion] \verb=${length_3:$domain}=, \verb=${substr_1_3:$domain}=, \verb=${addresses:$h_from}=
+\item[Arithmetik] \verb=${eval:40 + 2}=, \verb=${eval:40 + 2k}=, \verb=${eval:8 << 2}=
+\item[Filesystem] \verb=${stat:/etc/hosts}=
+\end{description}
+\end{scriptsize}
\end{frame}
\begin{frame}[fragile]{String-Expansion}{Bedingte Expansion}
@@ -157,51 +192,102 @@
${if <op>[{arg}…] {<value1>}fail}
\end{verbatim}
\begin{itemize}
-\item Definedness \verb=defined:tls_cipher=
+\item Definiert? \verb=def:tls_cipher=
\item Vergleiche \verb=eq{foo}{bar}=, \verb+=={1}{1}+
-\item …
+\item Matching \verb=match{$local_part}{^h\d+}=
+\item Authentication \verb=pam{$user:$pass}=
+\item Status \verb=first_delivery=
+\item Verknüpfungen \verb=and{{…}{…}{…}}=
+\end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]{String-Expansion}{Listen}
+An vielen Stellen werden Listen verwendet, Trenner in literalen
+Listen ist „:“, es können aber auch Listen aus Textfiles, DBM-Files und
+Directories erstellt werden:
+\begin{itemize}
+\item Literale Liste: \verb=example.com : foo.bar : example.org=,
+ \verb=<; 2001:db8::10 ; 2001:db8::12=
+\item Liste aus Datei: \verb=lsearch;/etc/mailnames=,
+ \verb=dbm:/etc/mailnames=
+\item Liste aus Verzeichnisinhalt: \verb=dsearch;/etc/vmail/domains=
\end{itemize}
\end{frame}
-\begin{frame}{ACL (SMTP-Phasen, Address-Überprüfung, Rate-Limiting, Content-Scan)}
+\begin{frame}[fragile]{String-Expansion}{Single-Key Lookups}
+Suche nach einem einzelnen Key, implizit oder explizit
+\begin{verbatim}
+ <item> = <type>;<arg>
+ ${lookup{<key>}<type>{<arg>}[{<found>}[{<not found}]]}
+ ${lookup{<key>}<type>{<arg>}{<found>}fail}
+\end{verbatim}
\begin{itemize}
-\item Eingehende SMTP-Verbindungen (und in Grenzen auch
- nicht-SMTP)-Verbindungen müssen ACL überwinden.
-\item Für jede Phase der SMTP-Kommunikation gibt es einen
-ACL-Einstiegspunkt, z.B.:\scriptsize\begin{verbatim}
- acl_smtp_connect = <name of connect acl>
- acl_smtp_rcpt = <name of recipient acl>
- acl_smtp_data = <name of recipient acl>
+\item Lineares File: \verb+domains = lsearch;/etc/mail/domains+
+\item Lineares File: \verb=${lookup{$local_part}lsearch{/etc/aliases}}=
+\item Lineares File: \verb=${lookup{$local_part}lsearch{/etc/aliases}{${uc:$value}}}=
+\end{itemize}
+
+\begin{exampleblock}{Lookup-Typen}
+lsearch, dsearch, dbm, cdbm, iplsearch, net-iplsearch, wildlsearch, …
+\end{exampleblock}
+\end{frame}
+
+\begin{frame}[fragile]{String-Expansion}{Query-Style Lookups}
+Generische Suche in (SQL)-Datenbank, LDAP, DNS, NIS
+\begin{verbatim}
+ ${lookup <type>{<arg(s)>}[{<found>}[{<not found>}]]}
\end{verbatim}
-\item ACL entscheidet: accept, reject, defer, warn (noop)
-\item ACL Bedingungen: domains, DNS-BL, Verify (Sender/Empfänger), …,
- condition
-\item ACL können die interne Behandlung der Nachricht beeinflussen
-(queue\_only, submission, …)
-\item ACL können Variablen setzen, die später (Router, Transports)
-verwendet werden
+\begin{itemize}
+\item DNS: \verb+${lookup dnsdb{a=foobar.de}}+
+\item LDAP \verb+${lookup ldap{ldap:///o=bar?mailbox?sub?uid=${quote_ldap:$local_part}}}+
+\item PSQL \verb=${lookup pgsql{SELECT mailbox FROM …}}=
\end{itemize}
+\begin{exampleblock}{Lookup-Typen}
+ dnsdb, ibase, ldap, mysql, nisplus, oracle, passwd, pgsql, sqlite
+\end{exampleblock}
\end{frame}
-\begin{frame}{Router (allg. Optionen und die einzelnen Router accept, dnslookup, manualroute, …)}
-\end{frame}
-\begin{frame}{Transports (allg. Optionen und die einzelnen Transports smtp, appendfile, …)}
-\end{frame}
-
-\begin{frame}{Logging (mainlog, rejectlog, paniclog)}
-\end{frame}
-
-\begin{frame}{Test und Betrieb}
-\end{frame}
-
-\begin{frame}{Sicherheitsbetrachtungen (Funktionssicherheit (Verlust von Mails), Einbruchssicherheit, Schreibrechte, Root-Rechte)}
-\end{frame}
-
-\begin{frame}{Möglichkeiten zur Leistungsverbesserung (Warteschlange, Parallelisierung, Blockierung, Ratelimit)}
-\end{frame}
-
-\begin{frame}{Ausblick/Offene Punkte: PRDR, DANE, Enhanced Status Codes}
-\end{frame}
+%\begin{frame}{ACL (SMTP-Phasen, Address-Überprüfung, Rate-Limiting, Content-Scan)}
+%\begin{itemize}
+%\item Eingehende SMTP-Verbindungen (und in Grenzen auch
+% nicht-SMTP)-Verbindungen müssen ACL überwinden.
+%\item Für jede Phase der SMTP-Kommunikation gibt es einen
+%ACL-Einstiegspunkt, z.B.:\scriptsize\begin{verbatim}
+% acl_smtp_connect = <name of connect acl>
+% acl_smtp_rcpt = <name of recipient acl>
+% acl_smtp_data = <name of recipient acl>
+%\end{verbatim}
+%\item ACL entscheidet: accept, reject, defer, warn (noop)
+%\item ACL Bedingungen: domains, DNS-BL, Verify (Sender/Empfänger), …,
+% condition
+%\item ACL können die interne Behandlung der Nachricht beeinflussen
+% (queue\_only, submission, …)
+%\item ACL können Variablen setzen, die später (Router, Transports)
+% verwendet werden
+%\end{itemize}
+%\end{frame}
+%
+%\begin{frame}{Router (allg. Optionen und die einzelnen Router accept, dnslookup, manualroute, …)}
+%Router entscheiden über den Fortgang der Bearbeitung
+%\end{frame}
+%
+%\begin{frame}{Transports (allg. Optionen und die einzelnen Transports smtp, appendfile, …)}
+%\end{frame}
+%
+%\begin{frame}{Logging (mainlog, rejectlog, paniclog)}
+%\end{frame}
+%
+%\begin{frame}{Test und Betrieb}
+%\end{frame}
+%
+%\begin{frame}{Sicherheitsbetrachtungen (Funktionssicherheit (Verlust von Mails), Einbruchssicherheit, Schreibrechte, Root-Rechte)}
+%\end{frame}
+%
+%\begin{frame}{Möglichkeiten zur Leistungsverbesserung (Warteschlange, Parallelisierung, Blockierung, Ratelimit)}
+%\end{frame}
+%
+%\begin{frame}{Ausblick/Offene Punkte: PRDR, DANE, Enhanced Status Codes}
+%\end{frame}
\end{document}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/routing.dia Mon May 05 22:48:21 2014 +0200
@@ -0,0 +1,1132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
+ <dia:diagramdata>
+ <dia:attribute name="background">
+ <dia:color val="#ffffff"/>
+ </dia:attribute>
+ <dia:attribute name="pagebreak">
+ <dia:color val="#000099"/>
+ </dia:attribute>
+ <dia:attribute name="paper">
+ <dia:composite type="paper">
+ <dia:attribute name="name">
+ <dia:string>#A4#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="tmargin">
+ <dia:real val="2.8222000598907471"/>
+ </dia:attribute>
+ <dia:attribute name="bmargin">
+ <dia:real val="2.8222000598907471"/>
+ </dia:attribute>
+ <dia:attribute name="lmargin">
+ <dia:real val="2.8222000598907471"/>
+ </dia:attribute>
+ <dia:attribute name="rmargin">
+ <dia:real val="2.8222000598907471"/>
+ </dia:attribute>
+ <dia:attribute name="is_portrait">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ <dia:attribute name="scaling">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="fitto">
+ <dia:boolean val="false"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="grid">
+ <dia:composite type="grid">
+ <dia:attribute name="width_x">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="width_y">
+ <dia:real val="1"/>
+ </dia:attribute>
+ <dia:attribute name="visible_x">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="visible_y">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:composite type="color"/>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#d8e5e5"/>
+ </dia:attribute>
+ <dia:attribute name="guides">
+ <dia:composite type="guides">
+ <dia:attribute name="hguides"/>
+ <dia:attribute name="vguides"/>
+ </dia:composite>
+ </dia:attribute>
+ </dia:diagramdata>
+ <dia:layer name="Background" visible="true" active="true">
+ <dia:object type="Flowchart - Box" version="0" id="O0">
+ <dia:attribute name="obj_pos">
+ <dia:point val="10.0075,3"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="10.0075,3;13.555,5"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="10.0075,3"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="3.5475000000000003"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="2"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="padding">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#router a#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="11.7812,4.195"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O1">
+ <dia:attribute name="obj_pos">
+ <dia:point val="11.7812,4"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="11.7812,3.835;11.7812,4.165"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.35277776420116425"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="11.7812,4.0975"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O0" connection="16"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O2">
+ <dia:attribute name="obj_pos">
+ <dia:point val="11.7812,4"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="11.7812,3.835;11.7812,4.165"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.35277776420116425"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="11.7812,4.0975"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O0" connection="16"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Flowchart - Box" version="0" id="O3">
+ <dia:attribute name="obj_pos">
+ <dia:point val="10,7"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="10,7;13.5625,9"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="10,7"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="3.5625"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="2"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="padding">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#router b#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="11.7812,8.195"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O4">
+ <dia:attribute name="obj_pos">
+ <dia:point val="11.7812,8"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="11.7812,7.835;11.7812,8.165"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.35277776420116425"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="11.7812,8.0975"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O3" connection="16"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O5">
+ <dia:attribute name="obj_pos">
+ <dia:point val="11.7812,8"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="11.7812,7.835;11.7812,8.165"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.35277776420116425"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="11.7812,8.0975"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O3" connection="16"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Flowchart - Box" version="0" id="O6">
+ <dia:attribute name="obj_pos">
+ <dia:point val="10,11"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="10,11;13.5475,13"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="10,11"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="3.5475000000000003"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="2"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="padding">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#router c#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="11.7737,12.195"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Flowchart - Diamond" version="0" id="O7">
+ <dia:attribute name="obj_pos">
+ <dia:point val="4,3"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="4,3;8.06132,5.03066"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="4,3"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="4.0613203435596432"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="2.0306601717798216"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="padding">
+ <dia:real val="0.35355339059327379"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#?#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="6.03066,4.21033"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Flowchart - Diamond" version="0" id="O8">
+ <dia:attribute name="obj_pos">
+ <dia:point val="3.78125,6.9"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="3.78125,6.9;8.18257,9"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="3.78125,6.9"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="4.4013203435596431"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="2.1000000000000005"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="padding">
+ <dia:real val="0.35355339059327379"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#?#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="5.98191,8.145"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Flowchart - Diamond" version="0" id="O9">
+ <dia:attribute name="obj_pos">
+ <dia:point val="3.77375,10.9"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="3.77375,10.9;8.17507,13.1007"/>
+ </dia:attribute>
+ <dia:attribute name="elem_corner">
+ <dia:point val="3.77375,10.9"/>
+ </dia:attribute>
+ <dia:attribute name="elem_width">
+ <dia:real val="4.4013203435596431"/>
+ </dia:attribute>
+ <dia:attribute name="elem_height">
+ <dia:real val="2.2006601717798215"/>
+ </dia:attribute>
+ <dia:attribute name="border_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="border_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="show_background">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="padding">
+ <dia:real val="0.35355339059327379"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#?#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.80000000000000004"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="5.97441,12.1953"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O10">
+ <dia:attribute name="obj_pos">
+ <dia:point val="6,1"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="4.595,0.59;7.405,1.41"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#Address#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.88194441050291061"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="6,1.245"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O11">
+ <dia:attribute name="obj_pos">
+ <dia:point val="8.06132,4.01533"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="8.06132,3.75395;10.0075,4.25393"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="8.06132,4.01533"/>
+ <dia:point val="10.0075,4"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O7" connection="4"/>
+ <dia:connection handle="1" to="O0" connection="7"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O12">
+ <dia:attribute name="obj_pos">
+ <dia:point val="8.18257,7.95"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="8.18257,7.71835;10.0012,8.2183"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="8.18257,7.95"/>
+ <dia:point val="10.0012,7.97527"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O8" connection="4"/>
+ <dia:connection handle="1" to="O3" connection="16"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O13">
+ <dia:attribute name="obj_pos">
+ <dia:point val="8.17482,12.0002"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="8.17482,11.7501;10.0004,12.2501"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="8.17482,12.0002"/>
+ <dia:point val="10.0004,12.0001"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O9" connection="16"/>
+ <dia:connection handle="1" to="O6" connection="16"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O14">
+ <dia:attribute name="obj_pos">
+ <dia:point val="6.03066,5.03066"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="5.74503,5.03066;6.24486,6.9"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="6.03066,5.03066"/>
+ <dia:point val="5.98191,6.9"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O7" connection="8"/>
+ <dia:connection handle="1" to="O8" connection="0"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O15">
+ <dia:attribute name="obj_pos">
+ <dia:point val="5.98191,9"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="5.72639,9;6.22638,10.9"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="5.98191,9"/>
+ <dia:point val="5.97441,10.9"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O8" connection="8"/>
+ <dia:connection handle="1" to="O9" connection="0"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - ZigZagLine" version="1" id="O16">
+ <dia:attribute name="obj_pos">
+ <dia:point val="11.7812,5"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="5.73191,5;11.7812,6.9"/>
+ </dia:attribute>
+ <dia:attribute name="orth_points">
+ <dia:point val="11.7812,5"/>
+ <dia:point val="11.7812,6"/>
+ <dia:point val="5.98191,6"/>
+ <dia:point val="5.98191,6.9"/>
+ </dia:attribute>
+ <dia:attribute name="orth_orient">
+ <dia:enum val="1"/>
+ <dia:enum val="0"/>
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="autorouting">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O0" connection="13"/>
+ <dia:connection handle="1" to="O8" connection="0"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - ZigZagLine" version="1" id="O17">
+ <dia:attribute name="obj_pos">
+ <dia:point val="11.7812,9.00049"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="5.72441,9.00049;11.7812,10.9"/>
+ </dia:attribute>
+ <dia:attribute name="orth_points">
+ <dia:point val="11.7812,9.00049"/>
+ <dia:point val="11.7812,10.0002"/>
+ <dia:point val="5.97441,10.0002"/>
+ <dia:point val="5.97441,10.9"/>
+ </dia:attribute>
+ <dia:attribute name="orth_orient">
+ <dia:enum val="1"/>
+ <dia:enum val="0"/>
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="autorouting">
+ <dia:boolean val="true"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O3" connection="16"/>
+ <dia:connection handle="1" to="O9" connection="0"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O18">
+ <dia:attribute name="obj_pos">
+ <dia:point val="13.555,4"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="13.555,3.75;17,4.25"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="13.555,4"/>
+ <dia:point val="17,4"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O0" connection="8"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O19">
+ <dia:attribute name="obj_pos">
+ <dia:point val="13.5625,8"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="13.5625,7.75;17,8.25"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="13.5625,8"/>
+ <dia:point val="17,8"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O3" connection="8"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O20">
+ <dia:attribute name="obj_pos">
+ <dia:point val="13.5475,12"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="13.5475,11.75;17,12.25"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="13.5475,12"/>
+ <dia:point val="17,12"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O6" connection="8"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O21">
+ <dia:attribute name="obj_pos">
+ <dia:point val="6,1"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="5.77303,1;6.27297,3"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="6,1"/>
+ <dia:point val="6.03066,3"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="1" to="O7" connection="0"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Line" version="0" id="O22">
+ <dia:attribute name="obj_pos">
+ <dia:point val="5.97441,13.1007"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="5.73588,13.1007;6.23568,14"/>
+ </dia:attribute>
+ <dia:attribute name="conn_endpoints">
+ <dia:point val="5.97441,13.1007"/>
+ <dia:point val="6,14"/>
+ </dia:attribute>
+ <dia:attribute name="numcp">
+ <dia:int val="1"/>
+ </dia:attribute>
+ <dia:attribute name="line_color">
+ <dia:color val="#1a1a1a"/>
+ </dia:attribute>
+ <dia:attribute name="line_width">
+ <dia:real val="0"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_length">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:attribute name="end_arrow_width">
+ <dia:real val="0.5"/>
+ </dia:attribute>
+ <dia:connections>
+ <dia:connection handle="0" to="O9" connection="8"/>
+ </dia:connections>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O23">
+ <dia:attribute name="obj_pos">
+ <dia:point val="16,3"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="15.2963,2.67125;16.7037,3.32875"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#done#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.70555552840232849"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="16,3.19625"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O24">
+ <dia:attribute name="obj_pos">
+ <dia:point val="16,7"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="15.2963,6.67125;16.7037,7.32875"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#done#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.70555552840232849"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="16,7.19625"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O25">
+ <dia:attribute name="obj_pos">
+ <dia:point val="16,11"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="15.2963,10.6712;16.7037,11.3287"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#done#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.70555552840232849"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="16,11.1962"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O26">
+ <dia:attribute name="obj_pos">
+ <dia:point val="5,-5"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="5,-5.165;5,-4.835"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>##</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.35277776420116425"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="5,-4.9025"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ <dia:object type="Standard - Text" version="1" id="O27">
+ <dia:attribute name="obj_pos">
+ <dia:point val="6,14.7224"/>
+ </dia:attribute>
+ <dia:attribute name="obj_bb">
+ <dia:rectangle val="4.045,14.3937;7.955,15.0512"/>
+ </dia:attribute>
+ <dia:attribute name="text">
+ <dia:composite type="text">
+ <dia:attribute name="string">
+ <dia:string>#Routing failed#</dia:string>
+ </dia:attribute>
+ <dia:attribute name="font">
+ <dia:font family="sans" style="0" name="Helvetica"/>
+ </dia:attribute>
+ <dia:attribute name="height">
+ <dia:real val="0.70555552840232849"/>
+ </dia:attribute>
+ <dia:attribute name="pos">
+ <dia:point val="6,14.9187"/>
+ </dia:attribute>
+ <dia:attribute name="color">
+ <dia:color val="#000000"/>
+ </dia:attribute>
+ <dia:attribute name="alignment">
+ <dia:enum val="1"/>
+ </dia:attribute>
+ </dia:composite>
+ </dia:attribute>
+ <dia:attribute name="valign">
+ <dia:enum val="2"/>
+ </dia:attribute>
+ </dia:object>
+ </dia:layer>
+</dia:diagram>