14 Commits

Author SHA1 Message Date
eyedeekay
89f36de542 Deploy site generated on 9c9f19b904 2025-08-13 11:19:19 +00:00
eyedeekay
dc4f9fc27e Deploy site generated on 9c9f19b904 2025-08-13 10:24:53 +00:00
eyedeekay
34d333358d Deploy site generated on 9c9f19b904 2025-08-13 09:25:15 +00:00
eyedeekay
1a70d4fb30 Deploy site generated on 9c9f19b904 2025-08-13 08:30:23 +00:00
eyedeekay
eec975f784 Deploy site generated on 9c9f19b904 2025-08-13 07:22:52 +00:00
eyedeekay
7f437fd930 Deploy site generated on 9c9f19b904 2025-08-13 07:16:10 +00:00
eyedeekay
bf2ae07895 Deploy site generated on f176d4a97f 2025-08-13 07:15:27 +00:00
eyedeekay
b68c64d0a9 Deploy site generated on e89876903f 2025-08-13 07:13:31 +00:00
eyedeekay
178de41e5f Deploy site generated on c6f8bf6447 2025-08-13 07:01:16 +00:00
eyedeekay
8b8efefcad Deploy site generated on f9127c0998 2025-08-13 06:34:11 +00:00
eyedeekay
c549d5c8f1 Deploy site generated on f9127c0998 2025-08-13 05:22:48 +00:00
eyedeekay
6c0fb70dc0 Deploy site generated on f9127c0998 2025-08-13 04:31:54 +00:00
eyedeekay
5eb882e00d Deploy site generated on f9127c0998 2025-08-13 03:21:22 +00:00
eyedeekay
e6e807cb91 Deploy site generated on f9127c0998 2025-08-13 01:50:03 +00:00
25 changed files with 7430 additions and 10865 deletions

View File

@@ -13,7 +13,7 @@
<a href="../index.html">go-i2p/go-i2p</a>
</h2>
<div class="repo-meta">
📝 623 commits
📝 649 commits
• 📜 MIT License
</div>
</div>
@@ -128,7 +128,7 @@ github.com/go-i2p/go-i2p
</main>
<footer class="page-footer">
<p>Generated on 2025-08-12 23:20:43<a href="https://github.com/go-i2p/go-i2p" target="_blank">View on GitHub</a></p>
<p>Generated on 2025-08-13 11:19:17<a href="https://github.com/go-i2p/go-i2p" target="_blank">View on GitHub</a></p>
</footer>
</div>
</body>

View File

@@ -13,7 +13,7 @@
<a href="../index.html">go-i2p/go-i2p</a>
</h2>
<div class="repo-meta">
📝 623 commits
📝 649 commits
• 📜 MIT License
</div>
</div>
@@ -47,87 +47,159 @@
<div class="doc-content">
<h1 id="go-i2p-implementation-roadmap">go-i2p Implementation Roadmap</h1>
<h2 id="transport-layer-ntcp2">Transport Layer (NTCP2)</h2>
<h2 id="completed-components">Completed Components ✅</h2>
<h3 id="transport-layer-ntcp2">Transport Layer (NTCP2)</h3>
<ul>
<li>Build on existing lib/transport/noise implementation</li>
<li>Core NTCP2 components:
<li><strong>Core NTCP2 Implementation</strong>: Complete functional NTCP2 transport
<ul>
<li>Session handshake using noise protocol</li>
<li>Connection management</li>
<li>I2NP message transport</li>
<li>Session handshake using noise protocol</li>
<li>✅ Inbound and outbound connection management</li>
<li>I2NP message framing and unframing</li>
<li>✅ Session lifecycle management with proper cleanup</li>
<li>✅ Message queuing with background workers</li>
<li>✅ RouterInfo compatibility checking</li>
<li>✅ Error handling and session recovery</li>
</ul></li>
</ul>
<h2 id="reseed-system">Reseed System</h2>
<h3 id="i2np-message-system">I2NP Message System</h3>
<ul>
<li>SU3 file format implementation:
<li><strong>Core Message Infrastructure</strong>: Complete I2NP message framework
<ul>
<li>Format parsing and validation(Much of this work is done in reseed-tools, may need to be moved here)</li>
<li>Signature verification system(Much of this work is done in reseed-tools, may need to be moved here)</li>
</ul></li>
<li>Local reseed functionality:
<ul>
<li>File-based reseed operations</li>
</ul></li>
<li>Self-signed/Package-pinned X.509 certificate handling for reseed validation</li>
</ul>
<h2 id="netdb-and-database-store">NetDb and Database Store</h2>
<ul>
<li>Database Store message handling:
<ul>
<li>Message structure implementation</li>
<li>Message handling implementation</li>
</ul></li>
<li>NetDb core implementation:
<ul>
<li>RouterInfo management</li>
<li>LeaseSet management</li>
<li>Lookup system</li>
<li>Storage interface</li>
<li>Peer selection logic?(Maybe do something very basic for now like i2pd used to do, and then improve it later, the important part will be interface design at first)</li>
<li>✅ Message parsing and serialization (NTCP format)</li>
<li>✅ Interface-based message system with factory patterns</li>
<li>✅ Data, DeliveryStatus, TunnelData message implementations</li>
<li>✅ Database Store/Lookup message structures</li>
<li>✅ Tunnel Build/Reply message structures</li>
<li>✅ Build Request/Response Record parsing and interfaces</li>
</ul></li>
</ul>
<h2 id="tunnel-implementation">Tunnel Implementation</h2>
<h3 id="tunnel-message-processing">Tunnel Message Processing</h3>
<ul>
<li>Tunnel cryptography:
<li><strong>Message Structure Handling</strong>: Tunnel message framework
<ul>
<li>Key generation and management</li>
<li>Layered encryption scheme</li>
</ul></li>
<li>Message processing:
<ul>
<li>Build request/response handling</li>
<li>Gateway implementation</li>
<li>Message forwarding logic</li>
<li>✅ Delivery Instructions parsing and validation</li>
<li>✅ Fragment handling and reassembly logic</li>
<li>✅ Tunnel message structure parsing</li>
<li>✅ Build record interface implementations</li>
</ul></li>
</ul>
<p>Notes:</p>
<h3 id="common-data-structures">Common Data Structures</h3>
<ul>
<li>Excluding legacy protocols (SSU1, NTCP1, elgamal, DSA)</li>
<li>Leveraging existing noise protocol implementation</li>
<li>SSU2 is not on this roadmap but is fair game for implementation as soon as NTCP2 is done. We&rsquo;re focused on NTCP2 to get this thing sending I2NP messages.</li>
<li><strong>Complete Data Structure Support</strong>: All I2P data types implemented
<ul>
<li>✅ Keys and Certificates, Router Info/Address</li>
<li>✅ Session Keys, Hashes, Signatures</li>
<li>✅ Lease and LeaseSet structures</li>
</ul></li>
</ul>
<h2 id="in-progress-components">In Progress Components 🚧</h2>
<h3 id="netdb-implementation">NetDb Implementation</h3>
<ul>
<li><strong>Database Store Integration</strong>:
<ul>
<li>📋 Database Store message handling implementation</li>
<li>📋 RouterInfo storage and retrieval</li>
<li>📋 LeaseSet management and storage</li>
<li>📋 Database lookup system</li>
<li>📋 Peer selection logic (basic implementation)</li>
</ul></li>
</ul>
<h2 id="next-priority-components">Next Priority Components 🎯</h2>
<h3 id="tunnel-building-system">Tunnel Building System</h3>
<ul>
<li><strong>Active Tunnel Management</strong>:
<ul>
<li>📋 Tunnel building coordination</li>
<li>📋 Build request/response handling</li>
<li>📋 Gateway and endpoint implementations</li>
<li>📋 Participant tunnel processing</li>
</ul></li>
</ul>
<h3 id="tunnel-cryptography">Tunnel Cryptography</h3>
<ul>
<li><strong>Security Layer Implementation</strong>:
<ul>
<li>📋 Layered encryption/decryption</li>
<li>📋 Key generation and management</li>
<li>📋 Tunnel message forwarding logic</li>
</ul></li>
</ul>
<h2 id="future-components">Future Components 📅</h2>
<h3 id="ssu2-transport-post-ntcp2">SSU2 Transport (Post-NTCP2)</h3>
<ul>
<li><strong>Secondary Transport Protocol</strong>:
<ul>
<li>📋 SSU2 handshake implementation</li>
<li>📋 UDP-based session management</li>
<li>📋 Peer testing mechanisms</li>
<li>📋 Introducer functionality</li>
</ul></li>
</ul>
<h3 id="advanced-netdb-features">Advanced NetDb Features</h3>
<ul>
<li><strong>Enhanced Database Operations</strong>:
<ul>
<li>📋 Floodfill router functionality</li>
<li>📋 Database exploration and publishing</li>
<li>📋 LS2 and Encrypted LeaseSet support</li>
<li>📋 Advanced peer selection algorithms</li>
</ul></li>
</ul>
<h3 id="application-layer">Application Layer</h3>
<ul>
<li><strong>Client Applications</strong>:
<ul>
<li>📋 I2CP implementation</li>
<li>📋 Streaming library</li>
<li>📋 Datagram support</li>
<li>📋 End-to-end encryption (Garlic routing)</li>
</ul></li>
</ul>
<h2 id="current-status">Current Status</h2>
<p><strong>Primary Goal</strong>: NTCP2 transport is feature-complete and actively sending/receiving I2NP messages. The foundation for tunnel building and NetDb integration is in place. Next major milestone is implementing database operations and tunnel building.</p>
<p><strong>Test Coverage</strong>: Core components have basic test coverage including NTCP2 sessions, I2NP message processing, and tunnel message parsing.</p>
</div>
</main>
<footer class="page-footer">
<p>Generated on 2025-08-12 23:20:43<a href="https://github.com/go-i2p/go-i2p" target="_blank">View on GitHub</a></p>
<p>Generated on 2025-08-13 11:19:17<a href="https://github.com/go-i2p/go-i2p" target="_blank">View on GitHub</a></p>
</footer>
</div>
</body>

View File

@@ -13,7 +13,7 @@
<a href="../index.html">go-i2p/go-i2p</a>
</h2>
<div class="repo-meta">
📝 623 commits
📝 649 commits
• 📜 MIT License
</div>
</div>
@@ -65,7 +65,7 @@
</main>
<footer class="page-footer">
<p>Generated on 2025-08-12 23:20:43<a href="https://github.com/go-i2p/go-i2p" target="_blank">View on GitHub</a></p>
<p>Generated on 2025-08-13 11:19:17<a href="https://github.com/go-i2p/go-i2p" target="_blank">View on GitHub</a></p>
</footer>
</div>
</body>

View File

@@ -46,39 +46,19 @@
</a>
</g>
</g>
<!-- github.com/samber/oops.Errorf -->
<g id="node1" class="node">
<title>github.com/samber/oops.Errorf</title>
<g id="a_node1"><a xlink:title="github.com/samber/oops.Errorf | defined in oops.go:34">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M305.3188,-113C305.3188,-113 270.9282,-113 270.9282,-113 264.9282,-113 258.9282,-107 258.9282,-101 258.9282,-101 258.9282,-89 258.9282,-89 258.9282,-83 264.9282,-77 270.9282,-77 270.9282,-77 305.3188,-77 305.3188,-77 311.3188,-77 317.3188,-83 317.3188,-89 317.3188,-89 317.3188,-101 317.3188,-101 317.3188,-107 311.3188,-113 305.3188,-113"/>
<text text-anchor="middle" x="288.1235" y="-99.2" font-family="Verdana" font-size="14.00" fill="#000000">oops</text>
<text text-anchor="middle" x="288.1235" y="-82.4" font-family="Verdana" font-size="14.00" fill="#000000">Errorf</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.NewReseed -->
<g id="node2" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.NewReseed</title>
<g id="a_node2"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.NewReseed | defined in new.go:10">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M321.4764,-174C321.4764,-174 254.7706,-174 254.7706,-174 248.7706,-174 242.7706,-168 242.7706,-162 242.7706,-162 242.7706,-150 242.7706,-150 242.7706,-144 248.7706,-138 254.7706,-138 254.7706,-138 321.4764,-138 321.4764,-138 327.4764,-138 333.4764,-144 333.4764,-150 333.4764,-150 333.4764,-162 333.4764,-162 333.4764,-168 327.4764,-174 321.4764,-174"/>
<text text-anchor="middle" x="288.1235" y="-160.2" font-family="Verdana" font-size="14.00" fill="#000000">reseed</text>
<text text-anchor="middle" x="288.1235" y="-143.4" font-family="Verdana" font-size="14.00" fill="#000000">NewReseed</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.init -->
<g id="node3" class="node">
<g id="node1" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.init</title>
<g id="a_node3"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.init | defined in .:0&#10;at reseed_bootstrap.go:15: calling [github.com/go&#45;i2p/logger.GetGoI2PLogger]">
<g id="a_node1"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.init | defined in .:0&#10;at reseed_bootstrap.go:15: calling [github.com/go&#45;i2p/logger.GetGoI2PLogger]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M96.2644,-52C96.2644,-52 66.2644,-52 66.2644,-52 60.2644,-52 54.2644,-46 54.2644,-40 54.2644,-40 54.2644,-28 54.2644,-28 54.2644,-22 60.2644,-16 66.2644,-16 66.2644,-16 96.2644,-16 96.2644,-16 102.2644,-16 108.2644,-22 108.2644,-28 108.2644,-28 108.2644,-40 108.2644,-40 108.2644,-46 102.2644,-52 96.2644,-52"/>
<text text-anchor="middle" x="81.2644" y="-29.8" font-family="Verdana" font-size="14.00" fill="#000000">init</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/logger.GetGoI2PLogger -->
<g id="node4" class="node">
<g id="node2" class="node">
<title>github.com/go&#45;i2p/logger.GetGoI2PLogger</title>
<g id="a_node4"><a xlink:title="github.com/go&#45;i2p/logger.GetGoI2PLogger | defined in log.go:120">
<g id="a_node2"><a xlink:title="github.com/go&#45;i2p/logger.GetGoI2PLogger | defined in log.go:120">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M336.813,-52C336.813,-52 239.434,-52 239.434,-52 233.434,-52 227.434,-46 227.434,-40 227.434,-40 227.434,-28 227.434,-28 227.434,-22 233.434,-16 239.434,-16 239.434,-16 336.813,-16 336.813,-16 342.813,-16 348.813,-22 348.813,-28 348.813,-28 348.813,-40 348.813,-40 348.813,-46 342.813,-52 336.813,-52"/>
<text text-anchor="middle" x="288.1235" y="-38.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="288.1235" y="-21.4" font-family="Verdana" font-size="14.00" fill="#000000">GetGoI2PLogger</text>
@@ -86,36 +66,56 @@
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.init&#45;&gt;github.com/go&#45;i2p/logger.GetGoI2PLogger -->
<g id="edge10" class="edge">
<g id="edge1" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.init&#45;&gt;github.com/go&#45;i2p/logger.GetGoI2PLogger</title>
<g id="a_edge10"><a xlink:title="at reseed_bootstrap.go:15: calling [github.com/go&#45;i2p/logger.GetGoI2PLogger]">
<g id="a_edge1"><a xlink:title="at reseed_bootstrap.go:15: calling [github.com/go&#45;i2p/logger.GetGoI2PLogger]">
<path fill="none" stroke="#8b4513" d="M108.3076,-34C135.736,-34 179.3573,-34 216.7663,-34"/>
<polygon fill="#8b4513" stroke="#8b4513" points="217.1342,-37.5001 227.1342,-34 217.1341,-30.5001 217.1342,-37.5001"/>
</a>
</g>
</g>
<!-- github.com/samber/oops.Errorf -->
<g id="node3" class="node">
<title>github.com/samber/oops.Errorf</title>
<g id="a_node3"><a xlink:title="github.com/samber/oops.Errorf | defined in oops.go:34">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M305.3188,-113C305.3188,-113 270.9282,-113 270.9282,-113 264.9282,-113 258.9282,-107 258.9282,-101 258.9282,-101 258.9282,-89 258.9282,-89 258.9282,-83 264.9282,-77 270.9282,-77 270.9282,-77 305.3188,-77 305.3188,-77 311.3188,-77 317.3188,-83 317.3188,-89 317.3188,-89 317.3188,-101 317.3188,-101 317.3188,-107 311.3188,-113 305.3188,-113"/>
<text text-anchor="middle" x="288.1235" y="-99.2" font-family="Verdana" font-size="14.00" fill="#000000">oops</text>
<text text-anchor="middle" x="288.1235" y="-82.4" font-family="Verdana" font-size="14.00" fill="#000000">Errorf</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.NewReseed -->
<g id="node4" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.NewReseed</title>
<g id="a_node4"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.NewReseed | defined in new.go:10">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M321.4764,-174C321.4764,-174 254.7706,-174 254.7706,-174 248.7706,-174 242.7706,-168 242.7706,-162 242.7706,-162 242.7706,-150 242.7706,-150 242.7706,-144 248.7706,-138 254.7706,-138 254.7706,-138 321.4764,-138 321.4764,-138 327.4764,-138 333.4764,-144 333.4764,-150 333.4764,-150 333.4764,-162 333.4764,-162 333.4764,-168 327.4764,-174 321.4764,-174"/>
<text text-anchor="middle" x="288.1235" y="-160.2" font-family="Verdana" font-size="14.00" fill="#000000">reseed</text>
<text text-anchor="middle" x="288.1235" y="-143.4" font-family="Verdana" font-size="14.00" fill="#000000">NewReseed</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers -->
<g id="node5" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers</title>
<g id="a_node5"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers | defined in reseed_bootstrap.go:32&#10;at reseed_bootstrap.go:40: calling [github.com/samber/oops.Errorf]&#10;at reseed_bootstrap.go:53: calling [github.com/samber/oops.Errorf]&#10;at reseed_bootstrap.go:73: calling [github.com/samber/oops.Errorf]&#10;at reseed_bootstrap.go:43: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed_bootstrap.go:52: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed_bootstrap.go:43: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at reseed_bootstrap.go:52: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed_bootstrap.go:52: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]&#10;at reseed_bootstrap.go:63: calling [(*github.com/sirupsen/logrus.Logger).Info]&#10;at reseed_bootstrap.go:46: calling [github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.NewReseed]&#10;at reseed_bootstrap.go:49: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed]&#10;at reseed_bootstrap.go:59: calling [(*github.com/go&#45;i2p/logger.Logger).WithFields]">
<g id="a_node5"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers | defined in reseed_bootstrap.go:32&#10;at reseed_bootstrap.go:40: calling [github.com/samber/oops.Errorf]&#10;at reseed_bootstrap.go:52: calling [github.com/samber/oops.Errorf]&#10;at reseed_bootstrap.go:72: calling [github.com/samber/oops.Errorf]&#10;at reseed_bootstrap.go:46: calling [github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.NewReseed]&#10;at reseed_bootstrap.go:49: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed]&#10;at reseed_bootstrap.go:51: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed_bootstrap.go:58: calling [(*github.com/go&#45;i2p/logger.Logger).WithFields]&#10;at reseed_bootstrap.go:62: calling [(*github.com/sirupsen/logrus.Logger).Info]&#10;at reseed_bootstrap.go:43: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed_bootstrap.go:51: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed_bootstrap.go:43: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at reseed_bootstrap.go:51: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M106.2947,-374C106.2947,-374 56.2341,-374 56.2341,-374 50.2341,-374 44.2341,-368 44.2341,-362 44.2341,-362 44.2341,-350 44.2341,-350 44.2341,-344 50.2341,-338 56.2341,-338 56.2341,-338 106.2947,-338 106.2947,-338 112.2947,-338 118.2947,-344 118.2947,-350 118.2947,-350 118.2947,-362 118.2947,-362 118.2947,-368 112.2947,-374 106.2947,-374"/>
<text text-anchor="middle" x="81.2644" y="-351.8" font-family="Verdana" font-size="14.00" fill="#000000">GetPeers</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers&#45;&gt;github.com/samber/oops.Errorf -->
<g id="edge1" class="edge">
<g id="edge2" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers&#45;&gt;github.com/samber/oops.Errorf</title>
<g id="a_edge1"><a xlink:title="at reseed_bootstrap.go:40: calling [github.com/samber/oops.Errorf]&#10;at reseed_bootstrap.go:53: calling [github.com/samber/oops.Errorf]&#10;at reseed_bootstrap.go:73: calling [github.com/samber/oops.Errorf]">
<g id="a_edge2"><a xlink:title="at reseed_bootstrap.go:40: calling [github.com/samber/oops.Errorf]&#10;at reseed_bootstrap.go:52: calling [github.com/samber/oops.Errorf]&#10;at reseed_bootstrap.go:72: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M118.4074,-352.073C131.5385,-349.0001 145.5161,-343.5697 155.5288,-334 190.8891,-300.2044 195.4391,-162.9154 227.5288,-126 233.5557,-119.0668 241.5102,-113.4857 249.6658,-109.0748"/>
<polygon fill="#8b4513" stroke="#8b4513" points="251.4166,-112.115 258.8672,-104.5824 248.3454,-105.8247 251.4166,-112.115"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.NewReseed -->
<g id="edge7" class="edge">
<g id="edge3" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.NewReseed</title>
<g id="a_edge7"><a xlink:title="at reseed_bootstrap.go:46: calling [github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.NewReseed]">
<g id="a_edge3"><a xlink:title="at reseed_bootstrap.go:46: calling [github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.NewReseed]">
<path fill="none" stroke="#8b4513" d="M118.6751,-351.3434C131.5313,-348.1844 145.2575,-342.8857 155.5288,-334 213.2793,-284.0401 171.3098,-229.6772 227.5288,-178 229.4394,-176.2438 231.5009,-174.6252 233.6705,-173.1338"/>
<polygon fill="#8b4513" stroke="#8b4513" points="235.6115,-176.0535 242.4829,-167.9892 232.0823,-170.0083 235.6115,-176.0535"/>
</a>
@@ -132,9 +132,9 @@
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField -->
<g id="edge2" class="edge">
<g id="edge8" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField</title>
<g id="a_edge2"><a xlink:title="at reseed_bootstrap.go:43: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed_bootstrap.go:52: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<g id="a_edge8"><a xlink:title="at reseed_bootstrap.go:43: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed_bootstrap.go:51: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="none" stroke="#8b4513" d="M118.5683,-348.6617C130.8549,-345.2944 144.2489,-340.5496 155.5288,-334 193.8581,-311.7444 191.4175,-290.6986 227.5288,-265 231.4159,-262.2337 235.5842,-259.5689 239.8482,-257.0424"/>
<polygon fill="#8b4513" stroke="#8b4513" points="241.6859,-260.0242 248.6757,-252.0623 238.2464,-253.9275 241.6859,-260.0242"/>
</a>
@@ -151,9 +151,9 @@
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError -->
<g id="edge4" class="edge">
<g id="edge5" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError</title>
<g id="a_edge4"><a xlink:title="at reseed_bootstrap.go:52: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<g id="a_edge5"><a xlink:title="at reseed_bootstrap.go:51: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<path fill="none" stroke="#8b4513" d="M118.725,-344.9534C151.9288,-335.162 200.7001,-320.78 237.3948,-309.9592"/>
<polygon fill="#8b4513" stroke="#8b4513" points="238.7997,-313.194 247.4014,-307.0084 236.8198,-306.4798 238.7997,-313.194"/>
</a>
@@ -170,9 +170,9 @@
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Warn -->
<g id="edge5" class="edge">
<g id="edge10" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Warn</title>
<g id="a_edge5"><a xlink:title="at reseed_bootstrap.go:52: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]">
<g id="a_edge10"><a xlink:title="at reseed_bootstrap.go:51: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]">
<path fill="none" stroke="#8b4513" d="M118.725,-356C155.3343,-356 210.8683,-356 248.2746,-356"/>
<polygon fill="#8b4513" stroke="#8b4513" points="248.3136,-359.5001 258.3136,-356 248.3135,-352.5001 248.3136,-359.5001"/>
</a>
@@ -189,9 +189,9 @@
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithFields -->
<g id="edge9" class="edge">
<g id="edge6" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithFields</title>
<g id="a_edge9"><a xlink:title="at reseed_bootstrap.go:59: calling [(*github.com/go&#45;i2p/logger.Logger).WithFields]">
<g id="a_edge6"><a xlink:title="at reseed_bootstrap.go:58: calling [(*github.com/go&#45;i2p/logger.Logger).WithFields]">
<path fill="none" stroke="#8b4513" d="M118.725,-367.0466C151.1839,-376.6183 198.5195,-390.577 234.9071,-401.3072"/>
<polygon fill="#8b4513" stroke="#8b4513" points="234.2768,-404.7703 244.8585,-404.2417 236.2568,-398.0561 234.2768,-404.7703"/>
</a>
@@ -208,9 +208,9 @@
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug -->
<g id="edge3" class="edge">
<g id="edge9" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug</title>
<g id="a_edge3"><a xlink:title="at reseed_bootstrap.go:43: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<g id="a_edge9"><a xlink:title="at reseed_bootstrap.go:43: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="none" stroke="#8b4513" d="M106.6294,-374.0251C143.6948,-400.3648 212.738,-449.4289 254.1541,-478.8604"/>
<polygon fill="#8b4513" stroke="#8b4513" points="252.3722,-481.8878 262.551,-484.8275 256.427,-476.1818 252.3722,-481.8878"/>
</a>
@@ -227,9 +227,9 @@
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers&#45;&gt;(*github.com/sirupsen/logrus.Logger).Info -->
<g id="edge6" class="edge">
<g id="edge7" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers&#45;&gt;(*github.com/sirupsen/logrus.Logger).Info</title>
<g id="a_edge6"><a xlink:title="at reseed_bootstrap.go:63: calling [(*github.com/sirupsen/logrus.Logger).Info]">
<g id="a_edge7"><a xlink:title="at reseed_bootstrap.go:62: calling [(*github.com/sirupsen/logrus.Logger).Info]">
<path fill="none" stroke="#8b4513" d="M92.3256,-374.0399C114.3749,-408.7975 166.9292,-485.8578 227.5288,-534 234.1285,-539.243 241.7932,-543.9051 249.4061,-547.8995"/>
<polygon fill="#8b4513" stroke="#8b4513" points="248.0753,-551.1458 258.5915,-552.435 251.1745,-544.8692 248.0753,-551.1458"/>
</a>
@@ -246,9 +246,9 @@
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed -->
<g id="edge8" class="edge">
<g id="edge4" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/bootstrap.ReseedBootstrap).GetPeers&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed</title>
<g id="a_edge8"><a xlink:title="at reseed_bootstrap.go:49: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed]">
<g id="a_edge4"><a xlink:title="at reseed_bootstrap.go:49: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed]">
<path fill="none" stroke="#8b4513" d="M89.919,-374.0435C110.3702,-415.6822 164.7136,-520.678 227.5288,-596 236.2167,-606.4176 246.9389,-616.6363 256.9371,-625.3325"/>
<polygon fill="#8b4513" stroke="#8b4513" points="254.8567,-628.1572 264.7475,-631.9549 259.3837,-622.8181 254.8567,-628.1572"/>
</a>

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -4,392 +4,142 @@
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: gocallvis Pages: 1 -->
<svg width="712pt" height="718pt"
viewBox="0.00 0.00 712.47 718.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(0 718)">
<svg width="712pt" height="735pt"
viewBox="0.00 0.00 712.47 735.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(0 735)">
<title>gocallvis</title>
<polygon fill="#d3d3d3" stroke="transparent" points="0,0 0,-718 712.4728,-718 712.4728,0 0,0"/>
<polygon fill="#d3d3d3" stroke="transparent" points="0,0 0,-735 712.4728,-735 712.4728,0 0,0"/>
<g id="clust1" class="cluster">
<title>cluster_focus</title>
<polygon fill="#e6ecfa" stroke="#000000" stroke-width=".5" points="8,-8 8,-710 704.4728,-710 704.4728,-8 8,-8"/>
<text text-anchor="middle" x="356.2364" y="-689.8" font-family="Arial" font-size="18.00" fill="#000000">config</text>
<polygon fill="#e6ecfa" stroke="#000000" stroke-width=".5" points="8,-8 8,-727 704.4728,-727 704.4728,-8 8,-8"/>
<text text-anchor="middle" x="356.2364" y="-706.8" font-family="Arial" font-size="18.00" fill="#000000">config</text>
</g>
<g id="clust3" class="cluster">
<title>cluster_*github.com/sirupsen/logrus.Logger</title>
<g id="a_clust3"><a xlink:title="type: *github.com/sirupsen/logrus.Logger">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M620.1025,-60C620.1025,-60 678.0843,-60 678.0843,-60 684.0843,-60 690.0843,-66 690.0843,-72 690.0843,-72 690.0843,-187 690.0843,-187 690.0843,-193 684.0843,-199 678.0843,-199 678.0843,-199 620.1025,-199 620.1025,-199 614.1025,-199 608.1025,-193 608.1025,-187 608.1025,-187 608.1025,-72 608.1025,-72 608.1025,-66 614.1025,-60 620.1025,-60"/>
<text text-anchor="middle" x="649.0934" y="-68.5" font-family="Arial" font-size="15.00" fill="#222222">(*Logger)</text>
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M620.1025,-250C620.1025,-250 678.0843,-250 678.0843,-250 684.0843,-250 690.0843,-256 690.0843,-262 690.0843,-262 690.0843,-377 690.0843,-377 690.0843,-383 684.0843,-389 678.0843,-389 678.0843,-389 620.1025,-389 620.1025,-389 614.1025,-389 608.1025,-383 608.1025,-377 608.1025,-377 608.1025,-262 608.1025,-262 608.1025,-256 614.1025,-250 620.1025,-250"/>
<text text-anchor="middle" x="649.0934" y="-258.5" font-family="Arial" font-size="15.00" fill="#222222">(*Logger)</text>
</a>
</g>
</g>
<g id="clust2" class="cluster">
<title>cluster_*github.com/go&#45;i2p/logger.Logger</title>
<g id="a_clust2"><a xlink:title="type: *github.com/go&#45;i2p/logger.Logger">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M430.3472,-419C430.3472,-419 484.113,-419 484.113,-419 490.113,-419 496.113,-425 496.113,-431 496.113,-431 496.113,-485 496.113,-485 496.113,-491 490.113,-497 484.113,-497 484.113,-497 430.3472,-497 430.3472,-497 424.3472,-497 418.3472,-491 418.3472,-485 418.3472,-485 418.3472,-431 418.3472,-431 418.3472,-425 424.3472,-419 430.3472,-419"/>
<text text-anchor="middle" x="457.2301" y="-427.5" font-family="Arial" font-size="15.00" fill="#222222">(*Logger)</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig -->
<g id="node1" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig</title>
<g id="a_node1"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig | defined in config.go:19&#10;at config.go:25: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath]&#10;at config.go:22: calling [github.com/spf13/viper.SetConfigFile]&#10;at config.go:25: calling [github.com/spf13/viper.AddConfigPath]&#10;at config.go:34: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile]&#10;at config.go:26: calling [github.com/spf13/viper.SetConfigName]&#10;at config.go:37: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig]&#10;at config.go:27: calling [github.com/spf13/viper.SetConfigType]&#10;at config.go:31: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M86.4951,-441C86.4951,-441 27.8345,-441 27.8345,-441 21.8345,-441 15.8345,-435 15.8345,-429 15.8345,-429 15.8345,-417 15.8345,-417 15.8345,-411 21.8345,-405 27.8345,-405 27.8345,-405 86.4951,-405 86.4951,-405 92.4951,-405 98.4951,-411 98.4951,-417 98.4951,-417 98.4951,-429 98.4951,-429 98.4951,-435 92.4951,-441 86.4951,-441"/>
<text text-anchor="middle" x="57.1648" y="-418.8" font-family="Verdana" font-size="14.00" fill="#000000">InitConfig</text>
</a>
</g>
</g>
<!-- github.com/spf13/viper.SetConfigFile -->
<g id="node2" class="node">
<title>github.com/spf13/viper.SetConfigFile</title>
<g id="a_node2"><a xlink:title="github.com/spf13/viper.SetConfigFile | defined in viper.go:509">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M281.0929,-411C281.0929,-411 202.9829,-411 202.9829,-411 196.9829,-411 190.9829,-405 190.9829,-399 190.9829,-399 190.9829,-387 190.9829,-387 190.9829,-381 196.9829,-375 202.9829,-375 202.9829,-375 281.0929,-375 281.0929,-375 287.0929,-375 293.0929,-381 293.0929,-387 293.0929,-387 293.0929,-399 293.0929,-399 293.0929,-405 287.0929,-411 281.0929,-411"/>
<text text-anchor="middle" x="242.0379" y="-397.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="242.0379" y="-380.4" font-family="Verdana" font-size="14.00" fill="#000000">SetConfigFile</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/spf13/viper.SetConfigFile -->
<g id="edge4" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/spf13/viper.SetConfigFile</title>
<g id="a_edge4"><a xlink:title="at config.go:22: calling [github.com/spf13/viper.SetConfigFile]">
<path fill="none" stroke="#8b4513" d="M98.6539,-416.2674C122.82,-412.3459 153.7422,-407.328 180.6795,-402.9568"/>
<polygon fill="#8b4513" stroke="#8b4513" points="181.4757,-406.3735 190.7859,-401.3168 180.3544,-399.4639 181.4757,-406.3735"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults -->
<g id="node3" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults</title>
<g id="a_node3"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults | defined in config.go:40&#10;at config.go:42: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig]&#10;at config.go:43: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig]&#10;at config.go:42: calling [github.com/spf13/viper.SetDefault]&#10;at config.go:43: calling [github.com/spf13/viper.SetDefault]&#10;at config.go:46: calling [github.com/spf13/viper.SetDefault]&#10;at config.go:49: calling [github.com/spf13/viper.SetDefault]&#10;at config.go:50: calling [github.com/spf13/viper.SetDefault]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M273.5099,-472C273.5099,-472 210.5659,-472 210.5659,-472 204.5659,-472 198.5659,-466 198.5659,-460 198.5659,-460 198.5659,-448 198.5659,-448 198.5659,-442 204.5659,-436 210.5659,-436 210.5659,-436 273.5099,-436 273.5099,-436 279.5099,-436 285.5099,-442 285.5099,-448 285.5099,-448 285.5099,-460 285.5099,-460 285.5099,-466 279.5099,-472 273.5099,-472"/>
<text text-anchor="middle" x="242.0379" y="-449.8" font-family="Verdana" font-size="14.00" fill="#000000">setDefaults</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults -->
<g id="edge28" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults</title>
<g id="a_edge28"><a xlink:title="at config.go:31: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults]">
<path fill="none" stroke="#000000" d="M98.6539,-429.957C125.1072,-434.3928 159.656,-440.186 188.2117,-444.9743"/>
<polygon fill="#000000" stroke="#000000" points="187.9938,-448.4865 198.435,-446.6886 189.1515,-441.5829 187.9938,-448.4865"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile -->
<g id="node6" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile</title>
<g id="a_node6"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile | defined in config.go:91&#10;at config.go:100: calling [(*github.com/sirupsen/logrus.Logger).Fatalf]&#10;at config.go:95: calling [(*github.com/sirupsen/logrus.Logger).Fatalf]&#10;at config.go:97: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath]&#10;at config.go:103: calling [github.com/spf13/viper.ConfigFileUsed]&#10;at config.go:92: calling [github.com/spf13/viper.ReadInConfig]&#10;at config.go:97: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig]&#10;at config.go:103: calling [(*github.com/sirupsen/logrus.Logger).Debugf]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M291.0239,-262C291.0239,-262 193.0519,-262 193.0519,-262 187.0519,-262 181.0519,-256 181.0519,-250 181.0519,-250 181.0519,-238 181.0519,-238 181.0519,-232 187.0519,-226 193.0519,-226 193.0519,-226 291.0239,-226 291.0239,-226 297.0239,-226 303.0239,-232 303.0239,-238 303.0239,-238 303.0239,-250 303.0239,-250 303.0239,-256 297.0239,-262 291.0239,-262"/>
<text text-anchor="middle" x="242.0379" y="-239.8" font-family="Verdana" font-size="14.00" fill="#000000">handleConfigFile</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile -->
<g id="edge17" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile</title>
<g id="a_edge17"><a xlink:title="at config.go:34: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile]">
<path fill="none" stroke="#000000" d="M73.1208,-404.6798C94.5937,-380.3616 134.373,-336.4782 171.3296,-302 183.71,-290.4499 198.0457,-278.458 210.5593,-268.3966"/>
<polygon fill="#000000" stroke="#000000" points="212.8389,-271.0555 218.4805,-262.0877 208.4778,-265.58 212.8389,-271.0555"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath -->
<g id="node9" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath</title>
<g id="a_node9"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath | defined in config.go:107&#10;at config.go:108: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util.UserHome]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M504.3367,-52C504.3367,-52 410.1235,-52 410.1235,-52 404.1235,-52 398.1235,-46 398.1235,-40 398.1235,-40 398.1235,-28 398.1235,-28 398.1235,-22 404.1235,-16 410.1235,-16 410.1235,-16 504.3367,-16 504.3367,-16 510.3367,-16 516.3367,-22 516.3367,-28 516.3367,-28 516.3367,-40 516.3367,-40 516.3367,-46 510.3367,-52 504.3367,-52"/>
<text text-anchor="middle" x="457.2301" y="-29.8" font-family="Verdana" font-size="14.00" fill="#000000">BuildI2PDirPath</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath -->
<g id="edge2" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath</title>
<g id="a_edge2"><a xlink:title="at config.go:25: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath]">
<path fill="none" stroke="#000000" d="M61.4091,-404.9816C72.0915,-363.8726 104.1671,-262.9433 171.3296,-214 223.0424,-176.3153 262.2384,-226.285 312.7462,-187 342.5659,-163.8063 327.2689,-141.0787 348.7462,-110 362.1475,-90.6077 366.8907,-86.1465 385.7462,-72 392.9344,-66.607 400.9911,-61.5375 409.034,-56.9663"/>
<polygon fill="#000000" stroke="#000000" points="410.9693,-59.8971 418.0618,-52.0264 407.6091,-53.7563 410.9693,-59.8971"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig -->
<g id="node13" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig</title>
<g id="a_node13"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig | defined in config.go:53&#10;at config.go:66: calling [(*github.com/go&#45;i2p/logger.Logger).Warnf]&#10;at config.go:65: calling [github.com/spf13/viper.UnmarshalKey]&#10;at config.go:71: calling [github.com/spf13/viper.GetInt]&#10;at config.go:55: calling [github.com/spf13/viper.GetString]&#10;at config.go:56: calling [github.com/spf13/viper.GetString]&#10;at config.go:60: calling [github.com/spf13/viper.GetString]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M300.9551,-533C300.9551,-533 183.1207,-533 183.1207,-533 177.1207,-533 171.1207,-527 171.1207,-521 171.1207,-521 171.1207,-509 171.1207,-509 171.1207,-503 177.1207,-497 183.1207,-497 183.1207,-497 300.9551,-497 300.9551,-497 306.9551,-497 312.9551,-503 312.9551,-509 312.9551,-509 312.9551,-521 312.9551,-521 312.9551,-527 306.9551,-533 300.9551,-533"/>
<text text-anchor="middle" x="242.0379" y="-510.8" font-family="Verdana" font-size="14.00" fill="#000000">UpdateRouterConfig</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig -->
<g id="edge23" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig</title>
<g id="a_edge23"><a xlink:title="at config.go:37: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig]">
<path fill="none" stroke="#000000" d="M88.7247,-441.2041C111.4112,-454.0264 142.8884,-471.2829 171.3296,-485 176.7158,-487.5977 182.3846,-490.2059 188.0718,-492.7412"/>
<polygon fill="#000000" stroke="#000000" points="187.0498,-496.1146 197.6137,-496.9243 189.8604,-489.7037 187.0498,-496.1146"/>
</a>
</g>
</g>
<!-- github.com/spf13/viper.AddConfigPath -->
<g id="node17" class="node">
<title>github.com/spf13/viper.AddConfigPath</title>
<g id="a_node17"><a xlink:title="github.com/spf13/viper.AddConfigPath | defined in viper.go:574">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M285.9202,-594C285.9202,-594 198.1556,-594 198.1556,-594 192.1556,-594 186.1556,-588 186.1556,-582 186.1556,-582 186.1556,-570 186.1556,-570 186.1556,-564 192.1556,-558 198.1556,-558 198.1556,-558 285.9202,-558 285.9202,-558 291.9202,-558 297.9202,-564 297.9202,-570 297.9202,-570 297.9202,-582 297.9202,-582 297.9202,-588 291.9202,-594 285.9202,-594"/>
<text text-anchor="middle" x="242.0379" y="-580.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="242.0379" y="-563.4" font-family="Verdana" font-size="14.00" fill="#000000">AddConfigPath</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/spf13/viper.AddConfigPath -->
<g id="edge12" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/spf13/viper.AddConfigPath</title>
<g id="a_edge12"><a xlink:title="at config.go:25: calling [github.com/spf13/viper.AddConfigPath]">
<path fill="none" stroke="#8b4513" d="M70.0264,-441.1196C89.4009,-467.3031 128.4035,-515.8736 171.3296,-546 174.9896,-548.5686 178.9038,-550.9791 182.943,-553.2287"/>
<polygon fill="#8b4513" stroke="#8b4513" points="181.4466,-556.3953 191.9347,-557.8955 184.6713,-550.1823 181.4466,-556.3953"/>
</a>
</g>
</g>
<!-- github.com/spf13/viper.SetConfigName -->
<g id="node18" class="node">
<title>github.com/spf13/viper.SetConfigName</title>
<g id="a_node18"><a xlink:title="github.com/spf13/viper.SetConfigName | defined in viper.go:2174">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M287.2401,-655C287.2401,-655 196.8357,-655 196.8357,-655 190.8357,-655 184.8357,-649 184.8357,-643 184.8357,-643 184.8357,-631 184.8357,-631 184.8357,-625 190.8357,-619 196.8357,-619 196.8357,-619 287.2401,-619 287.2401,-619 293.2401,-619 299.2401,-625 299.2401,-631 299.2401,-631 299.2401,-643 299.2401,-643 299.2401,-649 293.2401,-655 287.2401,-655"/>
<text text-anchor="middle" x="242.0379" y="-641.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="242.0379" y="-624.4" font-family="Verdana" font-size="14.00" fill="#000000">SetConfigName</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/spf13/viper.SetConfigName -->
<g id="edge18" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/spf13/viper.SetConfigName</title>
<g id="a_edge18"><a xlink:title="at config.go:26: calling [github.com/spf13/viper.SetConfigName]">
<path fill="none" stroke="#8b4513" d="M64.039,-441.2389C78.5582,-477.5114 115.6576,-559.3065 171.3296,-607 174.181,-609.4427 177.2605,-611.711 180.4834,-613.8137"/>
<polygon fill="#8b4513" stroke="#8b4513" points="178.8983,-616.942 189.2916,-618.9989 182.4495,-610.9097 178.8983,-616.942"/>
</a>
</g>
</g>
<!-- github.com/spf13/viper.SetConfigType -->
<g id="node19" class="node">
<title>github.com/spf13/viper.SetConfigType</title>
<g id="a_node19"><a xlink:title="github.com/spf13/viper.SetConfigType | defined in viper.go:2185">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M284.5817,-350C284.5817,-350 199.4941,-350 199.4941,-350 193.4941,-350 187.4941,-344 187.4941,-338 187.4941,-338 187.4941,-326 187.4941,-326 187.4941,-320 193.4941,-314 199.4941,-314 199.4941,-314 284.5817,-314 284.5817,-314 290.5817,-314 296.5817,-320 296.5817,-326 296.5817,-326 296.5817,-338 296.5817,-338 296.5817,-344 290.5817,-350 284.5817,-350"/>
<text text-anchor="middle" x="242.0379" y="-336.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="242.0379" y="-319.4" font-family="Verdana" font-size="14.00" fill="#000000">SetConfigType</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/spf13/viper.SetConfigType -->
<g id="edge24" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/spf13/viper.SetConfigType</title>
<g id="a_edge24"><a xlink:title="at config.go:27: calling [github.com/spf13/viper.SetConfigType]">
<path fill="none" stroke="#8b4513" d="M90.3186,-404.7819C112.936,-392.5505 143.6884,-376.3022 171.3296,-363 177.4157,-360.0711 183.8455,-357.0941 190.2478,-354.2015"/>
<polygon fill="#8b4513" stroke="#8b4513" points="191.8623,-357.3136 199.5651,-350.0392 189.0071,-350.9224 191.8623,-357.3136"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig -->
<g id="node4" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig</title>
<g id="a_node4"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig | defined in router.go:35">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M516.6979,-350C516.6979,-350 397.7623,-350 397.7623,-350 391.7623,-350 385.7623,-344 385.7623,-338 385.7623,-338 385.7623,-326 385.7623,-326 385.7623,-320 391.7623,-314 397.7623,-314 397.7623,-314 516.6979,-314 516.6979,-314 522.6979,-314 528.6979,-320 528.6979,-326 528.6979,-326 528.6979,-338 528.6979,-338 528.6979,-344 522.6979,-350 516.6979,-350"/>
<text text-anchor="middle" x="457.2301" y="-327.8" font-family="Verdana" font-size="14.00" fill="#000000">DefaultRouterConfig</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig -->
<g id="edge9" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig</title>
<g id="a_edge9"><a xlink:title="at config.go:42: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig]&#10;at config.go:43: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig]">
<path fill="none" stroke="#000000" d="M285.671,-437.8748C294.8666,-433.8246 304.3268,-429.1466 312.7462,-424 348.8208,-401.9483 349.7593,-385.1945 385.7462,-363 390.4955,-360.0709 395.5703,-357.2809 400.7424,-354.6612"/>
<polygon fill="#000000" stroke="#000000" points="402.6262,-357.6381 410.1078,-350.1363 399.581,-351.3352 402.6262,-357.6381"/>
</a>
</g>
</g>
<!-- github.com/spf13/viper.SetDefault -->
<g id="node5" class="node">
<title>github.com/spf13/viper.SetDefault</title>
<g id="a_node5"><a xlink:title="github.com/spf13/viper.SetDefault | defined in viper.go:1596">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M487.0956,-411C487.0956,-411 427.3646,-411 427.3646,-411 421.3646,-411 415.3646,-405 415.3646,-399 415.3646,-399 415.3646,-387 415.3646,-387 415.3646,-381 421.3646,-375 427.3646,-375 427.3646,-375 487.0956,-375 487.0956,-375 493.0956,-375 499.0956,-381 499.0956,-387 499.0956,-387 499.0956,-399 499.0956,-399 499.0956,-405 493.0956,-411 487.0956,-411"/>
<text text-anchor="middle" x="457.2301" y="-397.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="457.2301" y="-380.4" font-family="Verdana" font-size="14.00" fill="#000000">SetDefault</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults&#45;&gt;github.com/spf13/viper.SetDefault -->
<g id="edge16" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults&#45;&gt;github.com/spf13/viper.SetDefault</title>
<g id="a_edge16"><a xlink:title="at config.go:42: calling [github.com/spf13/viper.SetDefault]&#10;at config.go:43: calling [github.com/spf13/viper.SetDefault]&#10;at config.go:46: calling [github.com/spf13/viper.SetDefault]&#10;at config.go:49: calling [github.com/spf13/viper.SetDefault]&#10;at config.go:50: calling [github.com/spf13/viper.SetDefault]">
<path fill="none" stroke="#8b4513" d="M285.5853,-441.6557C320.1607,-431.8547 368.6097,-418.121 405.221,-407.7429"/>
<polygon fill="#8b4513" stroke="#8b4513" points="406.5457,-411.0054 415.212,-404.9108 404.6365,-404.2707 406.5457,-411.0054"/>
</a>
</g>
</g>
<!-- github.com/spf13/viper.ReadInConfig -->
<g id="node7" class="node">
<title>github.com/spf13/viper.ReadInConfig</title>
<g id="a_node7"><a xlink:title="github.com/spf13/viper.ReadInConfig | defined in viper.go:1632">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M497.0448,-228C497.0448,-228 417.4154,-228 417.4154,-228 411.4154,-228 405.4154,-222 405.4154,-216 405.4154,-216 405.4154,-204 405.4154,-204 405.4154,-198 411.4154,-192 417.4154,-192 417.4154,-192 497.0448,-192 497.0448,-192 503.0448,-192 509.0448,-198 509.0448,-204 509.0448,-204 509.0448,-216 509.0448,-216 509.0448,-222 503.0448,-228 497.0448,-228"/>
<text text-anchor="middle" x="457.2301" y="-214.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="457.2301" y="-197.4" font-family="Verdana" font-size="14.00" fill="#000000">ReadInConfig</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;github.com/spf13/viper.ReadInConfig -->
<g id="edge19" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;github.com/spf13/viper.ReadInConfig</title>
<g id="a_edge19"><a xlink:title="at config.go:92: calling [github.com/spf13/viper.ReadInConfig]">
<path fill="none" stroke="#8b4513" d="M303.1277,-234.3479C332.0275,-229.7818 366.4701,-224.3399 395.4565,-219.7601"/>
<polygon fill="#8b4513" stroke="#8b4513" points="396.1325,-223.1968 405.4637,-218.179 395.04,-216.2826 396.1325,-223.1968"/>
</a>
</g>
</g>
<!-- github.com/spf13/viper.ConfigFileUsed -->
<g id="node8" class="node">
<title>github.com/spf13/viper.ConfigFileUsed</title>
<g id="a_node8"><a xlink:title="github.com/spf13/viper.ConfigFileUsed | defined in viper.go:569">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M502.1629,-289C502.1629,-289 412.2973,-289 412.2973,-289 406.2973,-289 400.2973,-283 400.2973,-277 400.2973,-277 400.2973,-265 400.2973,-265 400.2973,-259 406.2973,-253 412.2973,-253 412.2973,-253 502.1629,-253 502.1629,-253 508.1629,-253 514.1629,-259 514.1629,-265 514.1629,-265 514.1629,-277 514.1629,-277 514.1629,-283 508.1629,-289 502.1629,-289"/>
<text text-anchor="middle" x="457.2301" y="-275.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="457.2301" y="-258.4" font-family="Verdana" font-size="14.00" fill="#000000">ConfigFileUsed</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;github.com/spf13/viper.ConfigFileUsed -->
<g id="edge10" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;github.com/spf13/viper.ConfigFileUsed</title>
<g id="a_edge10"><a xlink:title="at config.go:103: calling [github.com/spf13/viper.ConfigFileUsed]">
<path fill="none" stroke="#8b4513" d="M303.1277,-251.6649C330.352,-255.0807 362.4949,-259.1137 390.3619,-262.6101"/>
<polygon fill="#8b4513" stroke="#8b4513" points="390.0602,-266.0996 400.4182,-263.8719 390.9318,-259.1541 390.0602,-266.0996"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath -->
<g id="edge6" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath</title>
<g id="a_edge6"><a xlink:title="at config.go:97: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath]">
<path fill="none" stroke="#000000" d="M288.3615,-225.796C297.2835,-220.7205 305.9523,-214.4925 312.7462,-207 341.4081,-175.3909 327.3363,-154.9088 348.7462,-118 362.0857,-95.0039 365.2554,-87.9379 385.7462,-71 391.8805,-65.9293 398.8235,-61.2835 405.9116,-57.1245"/>
<polygon fill="#000000" stroke="#000000" points="407.8756,-60.0373 414.9176,-52.1214 404.4762,-53.9181 407.8756,-60.0373"/>
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M430.3472,-16C430.3472,-16 484.113,-16 484.113,-16 490.113,-16 496.113,-22 496.113,-28 496.113,-28 496.113,-82 496.113,-82 496.113,-88 490.113,-94 484.113,-94 484.113,-94 430.3472,-94 430.3472,-94 424.3472,-94 418.3472,-88 418.3472,-82 418.3472,-82 418.3472,-28 418.3472,-28 418.3472,-22 424.3472,-16 430.3472,-16"/>
<text text-anchor="middle" x="457.2301" y="-24.5" font-family="Arial" font-size="15.00" fill="#222222">(*Logger)</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig -->
<g id="node11" class="node">
<g id="node1" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig</title>
<g id="a_node11"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig | defined in config.go:76&#10;at config.go:84: calling [github.com/spf13/viper.WriteConfig]&#10;at config.go:88: calling [(*github.com/sirupsen/logrus.Logger).Debugf]&#10;at config.go:80: calling [(*github.com/sirupsen/logrus.Logger).Fatalf]&#10;at config.go:85: calling [(*github.com/sirupsen/logrus.Logger).Fatalf]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M514.5054,-167C514.5054,-167 399.9548,-167 399.9548,-167 393.9548,-167 387.9548,-161 387.9548,-155 387.9548,-155 387.9548,-143 387.9548,-143 387.9548,-137 393.9548,-131 399.9548,-131 399.9548,-131 514.5054,-131 514.5054,-131 520.5054,-131 526.5054,-137 526.5054,-143 526.5054,-143 526.5054,-155 526.5054,-155 526.5054,-161 520.5054,-167 514.5054,-167"/>
<text text-anchor="middle" x="457.2301" y="-144.8" font-family="Verdana" font-size="14.00" fill="#000000">createDefaultConfig</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig -->
<g id="edge21" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig</title>
<g id="a_edge21"><a xlink:title="at config.go:97: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig]">
<path fill="none" stroke="#000000" d="M282.2553,-225.9631C311.0439,-213.0827 350.7414,-195.3844 385.7462,-180 392.3019,-177.1188 399.2031,-174.1036 406.0265,-171.133"/>
<polygon fill="#000000" stroke="#000000" points="407.4675,-174.3231 415.2432,-167.1267 404.6769,-167.9034 407.4675,-174.3231"/>
</a>
</g>
</g>
<!-- (*github.com/sirupsen/logrus.Logger).Debugf -->
<g id="node25" class="node">
<title>(*github.com/sirupsen/logrus.Logger).Debugf</title>
<g id="a_node25"><a xlink:title="(*github.com/sirupsen/logrus.Logger).Debugf | defined in logger.go:163">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M670.0752,-191C670.0752,-191 628.1116,-191 628.1116,-191 622.1116,-191 616.1116,-185 616.1116,-179 616.1116,-179 616.1116,-167 616.1116,-167 616.1116,-161 622.1116,-155 628.1116,-155 628.1116,-155 670.0752,-155 670.0752,-155 676.0752,-155 682.0752,-161 682.0752,-167 682.0752,-167 682.0752,-179 682.0752,-179 682.0752,-185 676.0752,-191 670.0752,-191"/>
<text text-anchor="middle" x="649.0934" y="-177.2" font-family="Verdana" font-size="14.00" fill="#000000">logrus</text>
<text text-anchor="middle" x="649.0934" y="-160.4" font-family="Verdana" font-size="14.00" fill="#000000">Debugf</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debugf -->
<g id="edge26" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debugf</title>
<g id="a_edge26"><a xlink:title="at config.go:103: calling [(*github.com/sirupsen/logrus.Logger).Debugf]">
<path fill="none" stroke="#8b4513" d="M283.3884,-225.8597C293.4847,-220.5095 303.9136,-214.1454 312.7462,-207 352.2535,-175.0392 339.7514,-140.6056 385.7462,-119 459.8675,-84.1822 556.0988,-122.4617 609.3101,-149.9923"/>
<polygon fill="#8b4513" stroke="#8b4513" points="607.9405,-153.2275 618.4154,-154.8169 611.2179,-147.0422 607.9405,-153.2275"/>
</a>
</g>
</g>
<!-- (*github.com/sirupsen/logrus.Logger).Fatalf -->
<g id="node26" class="node">
<title>(*github.com/sirupsen/logrus.Logger).Fatalf</title>
<g id="a_node26"><a xlink:title="(*github.com/sirupsen/logrus.Logger).Fatalf | defined in logger.go:189">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M666.5892,-130C666.5892,-130 631.5976,-130 631.5976,-130 625.5976,-130 619.5976,-124 619.5976,-118 619.5976,-118 619.5976,-106 619.5976,-106 619.5976,-100 625.5976,-94 631.5976,-94 631.5976,-94 666.5892,-94 666.5892,-94 672.5892,-94 678.5892,-100 678.5892,-106 678.5892,-106 678.5892,-118 678.5892,-118 678.5892,-124 672.5892,-130 666.5892,-130"/>
<text text-anchor="middle" x="649.0934" y="-116.2" font-family="Verdana" font-size="14.00" fill="#000000">logrus</text>
<text text-anchor="middle" x="649.0934" y="-99.4" font-family="Verdana" font-size="14.00" fill="#000000">Fatalf</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;(*github.com/sirupsen/logrus.Logger).Fatalf -->
<g id="edge5" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;(*github.com/sirupsen/logrus.Logger).Fatalf</title>
<g id="a_edge5"><a xlink:title="at config.go:100: calling [(*github.com/sirupsen/logrus.Logger).Fatalf]&#10;at config.go:95: calling [(*github.com/sirupsen/logrus.Logger).Fatalf]">
<path fill="none" stroke="#8b4513" d="M285.6122,-225.9242C295.2119,-220.7063 304.8575,-214.3862 312.7462,-207 355.0383,-167.4018 333.8841,-124.8256 385.7462,-99 458.1174,-62.9616 555.9764,-82.8375 609.7076,-98.6293"/>
<polygon fill="#8b4513" stroke="#8b4513" points="608.9422,-102.0548 619.5279,-101.6157 610.9788,-95.3576 608.9422,-102.0548"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util.UserHome -->
<g id="node10" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util.UserHome</title>
<g id="a_node10"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util.UserHome | defined in home.go:8">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M679.2324,-52C679.2324,-52 618.9544,-52 618.9544,-52 612.9544,-52 606.9544,-46 606.9544,-40 606.9544,-40 606.9544,-28 606.9544,-28 606.9544,-22 612.9544,-16 618.9544,-16 618.9544,-16 679.2324,-16 679.2324,-16 685.2324,-16 691.2324,-22 691.2324,-28 691.2324,-28 691.2324,-40 691.2324,-40 691.2324,-46 685.2324,-52 679.2324,-52"/>
<text text-anchor="middle" x="649.0934" y="-38.2" font-family="Verdana" font-size="14.00" fill="#000000">util</text>
<text text-anchor="middle" x="649.0934" y="-21.4" font-family="Verdana" font-size="14.00" fill="#000000">UserHome</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util.UserHome -->
<g id="edge1" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util.UserHome</title>
<g id="a_edge1"><a xlink:title="at config.go:108: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util.UserHome]">
<path fill="none" stroke="#8b4513" d="M516.361,-34C541.988,-34 571.7449,-34 596.5809,-34"/>
<polygon fill="#8b4513" stroke="#8b4513" points="596.8973,-37.5001 606.8973,-34 596.8973,-30.5001 596.8973,-37.5001"/>
<g id="a_node1"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig | defined in config.go:76&#10;at config.go:84: calling [github.com/spf13/viper.WriteConfig]&#10;at config.go:80: calling [(*github.com/sirupsen/logrus.Logger).Fatalf]&#10;at config.go:85: calling [(*github.com/sirupsen/logrus.Logger).Fatalf]&#10;at config.go:88: calling [(*github.com/sirupsen/logrus.Logger).Debugf]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M514.5054,-330C514.5054,-330 399.9548,-330 399.9548,-330 393.9548,-330 387.9548,-324 387.9548,-318 387.9548,-318 387.9548,-306 387.9548,-306 387.9548,-300 393.9548,-294 399.9548,-294 399.9548,-294 514.5054,-294 514.5054,-294 520.5054,-294 526.5054,-300 526.5054,-306 526.5054,-306 526.5054,-318 526.5054,-318 526.5054,-324 520.5054,-330 514.5054,-330"/>
<text text-anchor="middle" x="457.2301" y="-307.8" font-family="Verdana" font-size="14.00" fill="#000000">createDefaultConfig</text>
</a>
</g>
</g>
<!-- github.com/spf13/viper.WriteConfig -->
<g id="node12" class="node">
<g id="node2" class="node">
<title>github.com/spf13/viper.WriteConfig</title>
<g id="a_node12"><a xlink:title="github.com/spf13/viper.WriteConfig | defined in viper.go:1718">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M684.3525,-252C684.3525,-252 613.8343,-252 613.8343,-252 607.8343,-252 601.8343,-246 601.8343,-240 601.8343,-240 601.8343,-228 601.8343,-228 601.8343,-222 607.8343,-216 613.8343,-216 613.8343,-216 684.3525,-216 684.3525,-216 690.3525,-216 696.3525,-222 696.3525,-228 696.3525,-228 696.3525,-240 696.3525,-240 696.3525,-246 690.3525,-252 684.3525,-252"/>
<text text-anchor="middle" x="649.0934" y="-238.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="649.0934" y="-221.4" font-family="Verdana" font-size="14.00" fill="#000000">WriteConfig</text>
<g id="a_node2"><a xlink:title="github.com/spf13/viper.WriteConfig | defined in viper.go:1718">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M684.3525,-242C684.3525,-242 613.8343,-242 613.8343,-242 607.8343,-242 601.8343,-236 601.8343,-230 601.8343,-230 601.8343,-218 601.8343,-218 601.8343,-212 607.8343,-206 613.8343,-206 613.8343,-206 684.3525,-206 684.3525,-206 690.3525,-206 696.3525,-212 696.3525,-218 696.3525,-218 696.3525,-230 696.3525,-230 696.3525,-236 690.3525,-242 684.3525,-242"/>
<text text-anchor="middle" x="649.0934" y="-228.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="649.0934" y="-211.4" font-family="Verdana" font-size="14.00" fill="#000000">WriteConfig</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig&#45;&gt;github.com/spf13/viper.WriteConfig -->
<g id="edge7" class="edge">
<g id="edge1" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig&#45;&gt;github.com/spf13/viper.WriteConfig</title>
<g id="a_edge7"><a xlink:title="at config.go:84: calling [github.com/spf13/viper.WriteConfig]">
<path fill="none" stroke="#8b4513" d="M499.2253,-167.1078C508.9199,-171.3169 519.1841,-175.7963 528.714,-180 552.1727,-190.3477 578.1317,-201.9704 599.9195,-211.7748"/>
<polygon fill="#8b4513" stroke="#8b4513" points="598.7413,-215.0827 609.2965,-215.998 601.6159,-208.7001 598.7413,-215.0827"/>
<g id="a_edge1"><a xlink:title="at config.go:84: calling [github.com/spf13/viper.WriteConfig]">
<path fill="none" stroke="#8b4513" d="M501.6461,-293.8532C510.6486,-290.0369 520.0191,-285.964 528.714,-282 558.9297,-268.2246 567.6899,-262.5653 600.5878,-246.597"/>
<polygon fill="#8b4513" stroke="#8b4513" points="602.5267,-249.5481 610.0181,-242.0561 599.4897,-243.2412 602.5267,-249.5481"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debugf -->
<g id="edge20" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debugf</title>
<g id="a_edge20"><a xlink:title="at config.go:88: calling [(*github.com/sirupsen/logrus.Logger).Debugf]">
<path fill="none" stroke="#8b4513" d="M526.4972,-157.6646C553.0515,-160.9862 582.5668,-164.6782 605.9821,-167.6072"/>
<polygon fill="#8b4513" stroke="#8b4513" points="605.59,-171.0854 615.9471,-168.8538 606.4589,-164.1395 605.59,-171.0854"/>
<!-- (*github.com/sirupsen/logrus.Logger).Fatalf -->
<g id="node25" class="node">
<title>(*github.com/sirupsen/logrus.Logger).Fatalf</title>
<g id="a_node25"><a xlink:title="(*github.com/sirupsen/logrus.Logger).Fatalf | defined in logger.go:189">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M666.5892,-381C666.5892,-381 631.5976,-381 631.5976,-381 625.5976,-381 619.5976,-375 619.5976,-369 619.5976,-369 619.5976,-357 619.5976,-357 619.5976,-351 625.5976,-345 631.5976,-345 631.5976,-345 666.5892,-345 666.5892,-345 672.5892,-345 678.5892,-351 678.5892,-357 678.5892,-357 678.5892,-369 678.5892,-369 678.5892,-375 672.5892,-381 666.5892,-381"/>
<text text-anchor="middle" x="649.0934" y="-367.2" font-family="Verdana" font-size="14.00" fill="#000000">logrus</text>
<text text-anchor="middle" x="649.0934" y="-350.4" font-family="Verdana" font-size="14.00" fill="#000000">Fatalf</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig&#45;&gt;(*github.com/sirupsen/logrus.Logger).Fatalf -->
<g id="edge29" class="edge">
<g id="edge8" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig&#45;&gt;(*github.com/sirupsen/logrus.Logger).Fatalf</title>
<g id="a_edge29"><a xlink:title="at config.go:80: calling [(*github.com/sirupsen/logrus.Logger).Fatalf]&#10;at config.go:85: calling [(*github.com/sirupsen/logrus.Logger).Fatalf]">
<path fill="none" stroke="#8b4513" d="M526.4972,-135.6422C554.3605,-130.2688 585.4839,-124.2668 609.3993,-119.6548"/>
<polygon fill="#8b4513" stroke="#8b4513" points="610.3527,-123.0355 619.509,-117.7052 609.0272,-116.1622 610.3527,-123.0355"/>
<g id="a_edge8"><a xlink:title="at config.go:80: calling [(*github.com/sirupsen/logrus.Logger).Fatalf]&#10;at config.go:85: calling [(*github.com/sirupsen/logrus.Logger).Fatalf]">
<path fill="none" stroke="#8b4513" d="M525.1439,-330.0525C553.4412,-337.5743 585.3036,-346.0438 609.6374,-352.512"/>
<polygon fill="#8b4513" stroke="#8b4513" points="609.0093,-355.9666 619.5729,-355.153 610.8077,-349.2015 609.0093,-355.9666"/>
</a>
</g>
</g>
<!-- (*github.com/sirupsen/logrus.Logger).Debugf -->
<g id="node26" class="node">
<title>(*github.com/sirupsen/logrus.Logger).Debugf</title>
<g id="a_node26"><a xlink:title="(*github.com/sirupsen/logrus.Logger).Debugf | defined in logger.go:163">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M670.0752,-320C670.0752,-320 628.1116,-320 628.1116,-320 622.1116,-320 616.1116,-314 616.1116,-308 616.1116,-308 616.1116,-296 616.1116,-296 616.1116,-290 622.1116,-284 628.1116,-284 628.1116,-284 670.0752,-284 670.0752,-284 676.0752,-284 682.0752,-290 682.0752,-296 682.0752,-296 682.0752,-308 682.0752,-308 682.0752,-314 676.0752,-320 670.0752,-320"/>
<text text-anchor="middle" x="649.0934" y="-306.2" font-family="Verdana" font-size="14.00" fill="#000000">logrus</text>
<text text-anchor="middle" x="649.0934" y="-289.4" font-family="Verdana" font-size="14.00" fill="#000000">Debugf</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debugf -->
<g id="edge10" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debugf</title>
<g id="a_edge10"><a xlink:title="at config.go:88: calling [(*github.com/sirupsen/logrus.Logger).Debugf]">
<path fill="none" stroke="#8b4513" d="M526.4972,-308.3898C552.9324,-307.012 582.3021,-305.4812 605.6667,-304.2634"/>
<polygon fill="#8b4513" stroke="#8b4513" points="606.1428,-307.7434 615.9471,-303.7276 605.7784,-300.7529 606.1428,-307.7434"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath -->
<g id="node3" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath</title>
<g id="a_node3"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath | defined in config.go:107&#10;at config.go:108: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util.UserHome]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M504.3367,-689C504.3367,-689 410.1235,-689 410.1235,-689 404.1235,-689 398.1235,-683 398.1235,-677 398.1235,-677 398.1235,-665 398.1235,-665 398.1235,-659 404.1235,-653 410.1235,-653 410.1235,-653 504.3367,-653 504.3367,-653 510.3367,-653 516.3367,-659 516.3367,-665 516.3367,-665 516.3367,-677 516.3367,-677 516.3367,-683 510.3367,-689 504.3367,-689"/>
<text text-anchor="middle" x="457.2301" y="-666.8" font-family="Verdana" font-size="14.00" fill="#000000">BuildI2PDirPath</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util.UserHome -->
<g id="node4" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util.UserHome</title>
<g id="a_node4"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util.UserHome | defined in home.go:8">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M679.2324,-689C679.2324,-689 618.9544,-689 618.9544,-689 612.9544,-689 606.9544,-683 606.9544,-677 606.9544,-677 606.9544,-665 606.9544,-665 606.9544,-659 612.9544,-653 618.9544,-653 618.9544,-653 679.2324,-653 679.2324,-653 685.2324,-653 691.2324,-659 691.2324,-665 691.2324,-665 691.2324,-677 691.2324,-677 691.2324,-683 685.2324,-689 679.2324,-689"/>
<text text-anchor="middle" x="649.0934" y="-675.2" font-family="Verdana" font-size="14.00" fill="#000000">util</text>
<text text-anchor="middle" x="649.0934" y="-658.4" font-family="Verdana" font-size="14.00" fill="#000000">UserHome</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util.UserHome -->
<g id="edge17" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util.UserHome</title>
<g id="a_edge17"><a xlink:title="at config.go:108: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util.UserHome]">
<path fill="none" stroke="#8b4513" d="M516.361,-671C541.988,-671 571.7449,-671 596.5809,-671"/>
<polygon fill="#8b4513" stroke="#8b4513" points="596.8973,-674.5001 606.8973,-671 596.8973,-667.5001 596.8973,-674.5001"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig -->
<g id="node5" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig</title>
<g id="a_node5"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig | defined in config.go:53&#10;at config.go:71: calling [github.com/spf13/viper.GetInt]&#10;at config.go:66: calling [(*github.com/go&#45;i2p/logger.Logger).Warnf]&#10;at config.go:65: calling [github.com/spf13/viper.UnmarshalKey]&#10;at config.go:55: calling [github.com/spf13/viper.GetString]&#10;at config.go:56: calling [github.com/spf13/viper.GetString]&#10;at config.go:60: calling [github.com/spf13/viper.GetString]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M300.9551,-208C300.9551,-208 183.1207,-208 183.1207,-208 177.1207,-208 171.1207,-202 171.1207,-196 171.1207,-196 171.1207,-184 171.1207,-184 171.1207,-178 177.1207,-172 183.1207,-172 183.1207,-172 300.9551,-172 300.9551,-172 306.9551,-172 312.9551,-178 312.9551,-184 312.9551,-184 312.9551,-196 312.9551,-196 312.9551,-202 306.9551,-208 300.9551,-208"/>
<text text-anchor="middle" x="242.0379" y="-185.8" font-family="Verdana" font-size="14.00" fill="#000000">UpdateRouterConfig</text>
</a>
</g>
</g>
<!-- github.com/spf13/viper.GetString -->
<g id="node14" class="node">
<g id="node6" class="node">
<title>github.com/spf13/viper.GetString</title>
<g id="a_node14"><a xlink:title="github.com/spf13/viper.GetString | defined in viper.go:975">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M484.6675,-550C484.6675,-550 429.7927,-550 429.7927,-550 423.7927,-550 417.7927,-544 417.7927,-538 417.7927,-538 417.7927,-526 417.7927,-526 417.7927,-520 423.7927,-514 429.7927,-514 429.7927,-514 484.6675,-514 484.6675,-514 490.6675,-514 496.6675,-520 496.6675,-526 496.6675,-526 496.6675,-538 496.6675,-538 496.6675,-544 490.6675,-550 484.6675,-550"/>
<text text-anchor="middle" x="457.2301" y="-536.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="457.2301" y="-519.4" font-family="Verdana" font-size="14.00" fill="#000000">GetString</text>
<g id="a_node6"><a xlink:title="github.com/spf13/viper.GetString | defined in viper.go:975">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M484.6675,-208C484.6675,-208 429.7927,-208 429.7927,-208 423.7927,-208 417.7927,-202 417.7927,-196 417.7927,-196 417.7927,-184 417.7927,-184 417.7927,-178 423.7927,-172 429.7927,-172 429.7927,-172 484.6675,-172 484.6675,-172 490.6675,-172 496.6675,-178 496.6675,-184 496.6675,-184 496.6675,-196 496.6675,-196 496.6675,-202 490.6675,-208 484.6675,-208"/>
<text text-anchor="middle" x="457.2301" y="-194.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="457.2301" y="-177.4" font-family="Verdana" font-size="14.00" fill="#000000">GetString</text>
</a>
</g>
</g>
@@ -397,46 +147,46 @@
<g id="edge25" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig&#45;&gt;github.com/spf13/viper.GetString</title>
<g id="a_edge25"><a xlink:title="at config.go:55: calling [github.com/spf13/viper.GetString]&#10;at config.go:56: calling [github.com/spf13/viper.GetString]&#10;at config.go:60: calling [github.com/spf13/viper.GetString]">
<path fill="none" stroke="#8b4513" d="M312.7979,-520.59C343.892,-523.0464 379.6538,-525.8715 407.813,-528.0961"/>
<polygon fill="#8b4513" stroke="#8b4513" points="407.5761,-531.5882 417.8207,-528.8867 408.1274,-524.6099 407.5761,-531.5882"/>
<path fill="none" stroke="#8b4513" d="M312.7979,-190C343.892,-190 379.6538,-190 407.813,-190"/>
<polygon fill="#8b4513" stroke="#8b4513" points="407.8207,-193.5001 417.8207,-190 407.8207,-186.5001 407.8207,-193.5001"/>
</a>
</g>
</g>
<!-- github.com/spf13/viper.UnmarshalKey -->
<g id="node15" class="node">
<g id="node7" class="node">
<title>github.com/spf13/viper.UnmarshalKey</title>
<g id="a_node15"><a xlink:title="github.com/spf13/viper.UnmarshalKey | defined in viper.go:1103">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M499.4738,-611C499.4738,-611 414.9864,-611 414.9864,-611 408.9864,-611 402.9864,-605 402.9864,-599 402.9864,-599 402.9864,-587 402.9864,-587 402.9864,-581 408.9864,-575 414.9864,-575 414.9864,-575 499.4738,-575 499.4738,-575 505.4738,-575 511.4738,-581 511.4738,-587 511.4738,-587 511.4738,-599 511.4738,-599 511.4738,-605 505.4738,-611 499.4738,-611"/>
<text text-anchor="middle" x="457.2301" y="-597.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="457.2301" y="-580.4" font-family="Verdana" font-size="14.00" fill="#000000">UnmarshalKey</text>
<g id="a_node7"><a xlink:title="github.com/spf13/viper.UnmarshalKey | defined in viper.go:1103">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M499.4738,-147C499.4738,-147 414.9864,-147 414.9864,-147 408.9864,-147 402.9864,-141 402.9864,-135 402.9864,-135 402.9864,-123 402.9864,-123 402.9864,-117 408.9864,-111 414.9864,-111 414.9864,-111 499.4738,-111 499.4738,-111 505.4738,-111 511.4738,-117 511.4738,-123 511.4738,-123 511.4738,-135 511.4738,-135 511.4738,-141 505.4738,-147 499.4738,-147"/>
<text text-anchor="middle" x="457.2301" y="-133.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="457.2301" y="-116.4" font-family="Verdana" font-size="14.00" fill="#000000">UnmarshalKey</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig&#45;&gt;github.com/spf13/viper.UnmarshalKey -->
<g id="edge11" class="edge">
<g id="edge23" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig&#45;&gt;github.com/spf13/viper.UnmarshalKey</title>
<g id="a_edge11"><a xlink:title="at config.go:65: calling [github.com/spf13/viper.UnmarshalKey]">
<path fill="none" stroke="#8b4513" d="M291.9482,-533.0908C323.4766,-544.5188 364.3872,-559.3475 397.6182,-571.3927"/>
<polygon fill="#8b4513" stroke="#8b4513" points="396.624,-574.7551 407.2182,-574.8723 399.0094,-568.1741 396.624,-574.7551"/>
<g id="a_edge23"><a xlink:title="at config.go:65: calling [github.com/spf13/viper.UnmarshalKey]">
<path fill="none" stroke="#8b4513" d="M305.7292,-171.9456C333.2138,-164.1546 365.3119,-155.0558 392.8706,-147.2438"/>
<polygon fill="#8b4513" stroke="#8b4513" points="394.1351,-150.5234 402.8015,-144.4287 392.226,-143.7887 394.1351,-150.5234"/>
</a>
</g>
</g>
<!-- github.com/spf13/viper.GetInt -->
<g id="node16" class="node">
<g id="node8" class="node">
<title>github.com/spf13/viper.GetInt</title>
<g id="a_node16"><a xlink:title="github.com/spf13/viper.GetInt | defined in viper.go:989">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M474.9936,-672C474.9936,-672 439.4666,-672 439.4666,-672 433.4666,-672 427.4666,-666 427.4666,-660 427.4666,-660 427.4666,-648 427.4666,-648 427.4666,-642 433.4666,-636 439.4666,-636 439.4666,-636 474.9936,-636 474.9936,-636 480.9936,-636 486.9936,-642 486.9936,-648 486.9936,-648 486.9936,-660 486.9936,-660 486.9936,-666 480.9936,-672 474.9936,-672"/>
<text text-anchor="middle" x="457.2301" y="-658.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="457.2301" y="-641.4" font-family="Verdana" font-size="14.00" fill="#000000">GetInt</text>
<g id="a_node8"><a xlink:title="github.com/spf13/viper.GetInt | defined in viper.go:989">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M474.9936,-269C474.9936,-269 439.4666,-269 439.4666,-269 433.4666,-269 427.4666,-263 427.4666,-257 427.4666,-257 427.4666,-245 427.4666,-245 427.4666,-239 433.4666,-233 439.4666,-233 439.4666,-233 474.9936,-233 474.9936,-233 480.9936,-233 486.9936,-239 486.9936,-245 486.9936,-245 486.9936,-257 486.9936,-257 486.9936,-263 480.9936,-269 474.9936,-269"/>
<text text-anchor="middle" x="457.2301" y="-255.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="457.2301" y="-238.4" font-family="Verdana" font-size="14.00" fill="#000000">GetInt</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig&#45;&gt;github.com/spf13/viper.GetInt -->
<g id="edge22" class="edge">
<g id="edge11" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig&#45;&gt;github.com/spf13/viper.GetInt</title>
<g id="a_edge22"><a xlink:title="at config.go:71: calling [github.com/spf13/viper.GetInt]">
<path fill="none" stroke="#8b4513" d="M290.6259,-533.1555C298.3174,-536.9061 305.9626,-541.1996 312.7462,-546 351.5041,-573.427 346.7724,-596.8806 385.7462,-624 395.4871,-630.7781 406.9979,-636.4459 417.9039,-640.9642"/>
<polygon fill="#8b4513" stroke="#8b4513" points="416.685,-644.2456 427.2726,-644.6379 419.2405,-637.7288 416.685,-644.2456"/>
<g id="a_edge11"><a xlink:title="at config.go:71: calling [github.com/spf13/viper.GetInt]">
<path fill="none" stroke="#8b4513" d="M305.7292,-208.0544C341.9629,-218.3255 386.2147,-230.8694 417.5134,-239.7416"/>
<polygon fill="#8b4513" stroke="#8b4513" points="416.6181,-243.1257 427.1936,-242.4856 418.5272,-236.391 416.6181,-243.1257"/>
</a>
</g>
</g>
@@ -444,109 +194,359 @@
<g id="node24" class="node">
<title>(*github.com/go&#45;i2p/logger.Logger).Warnf</title>
<g id="a_node24"><a xlink:title="(*github.com/go&#45;i2p/logger.Logger).Warnf | defined in log.go:36">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M474.9964,-489C474.9964,-489 439.4638,-489 439.4638,-489 433.4638,-489 427.4638,-483 427.4638,-477 427.4638,-477 427.4638,-465 427.4638,-465 427.4638,-459 433.4638,-453 439.4638,-453 439.4638,-453 474.9964,-453 474.9964,-453 480.9964,-453 486.9964,-459 486.9964,-465 486.9964,-465 486.9964,-477 486.9964,-477 486.9964,-483 480.9964,-489 474.9964,-489"/>
<text text-anchor="middle" x="457.2301" y="-475.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="457.2301" y="-458.4" font-family="Verdana" font-size="14.00" fill="#000000">Warnf</text>
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M474.9964,-86C474.9964,-86 439.4638,-86 439.4638,-86 433.4638,-86 427.4638,-80 427.4638,-74 427.4638,-74 427.4638,-62 427.4638,-62 427.4638,-56 433.4638,-50 439.4638,-50 439.4638,-50 474.9964,-50 474.9964,-50 480.9964,-50 486.9964,-56 486.9964,-62 486.9964,-62 486.9964,-74 486.9964,-74 486.9964,-80 480.9964,-86 474.9964,-86"/>
<text text-anchor="middle" x="457.2301" y="-72.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="457.2301" y="-55.4" font-family="Verdana" font-size="14.00" fill="#000000">Warnf</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Warnf -->
<g id="edge8" class="edge">
<g id="edge18" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Warnf</title>
<g id="a_edge8"><a xlink:title="at config.go:66: calling [(*github.com/go&#45;i2p/logger.Logger).Warnf]">
<path fill="none" stroke="#8b4513" d="M312.7979,-500.5318C347.535,-493.4292 388.0975,-485.1354 417.3775,-479.1486"/>
<polygon fill="#8b4513" stroke="#8b4513" points="418.1395,-482.5653 427.2356,-477.1329 416.7371,-475.7072 418.1395,-482.5653"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultBase -->
<g id="node20" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultBase</title>
<g id="a_node20"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultBase | defined in router.go:19&#10;at router.go:20: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M275.1193,-52C275.1193,-52 208.9565,-52 208.9565,-52 202.9565,-52 196.9565,-46 196.9565,-40 196.9565,-40 196.9565,-28 196.9565,-28 196.9565,-22 202.9565,-16 208.9565,-16 208.9565,-16 275.1193,-16 275.1193,-16 281.1193,-16 287.1193,-22 287.1193,-28 287.1193,-28 287.1193,-40 287.1193,-40 287.1193,-46 281.1193,-52 275.1193,-52"/>
<text text-anchor="middle" x="242.0379" y="-29.8" font-family="Verdana" font-size="14.00" fill="#000000">defaultBase</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultBase&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath -->
<g id="edge27" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultBase&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath</title>
<g id="a_edge27"><a xlink:title="at router.go:20: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath]">
<path fill="none" stroke="#000000" d="M287.1492,-34C316.3004,-34 354.8162,-34 387.8227,-34"/>
<polygon fill="#000000" stroke="#000000" points="387.8728,-37.5001 397.8727,-34 387.8727,-30.5001 387.8728,-37.5001"/>
<g id="a_edge18"><a xlink:title="at config.go:66: calling [(*github.com/go&#45;i2p/logger.Logger).Warnf]">
<path fill="none" stroke="#8b4513" d="M291.1674,-171.9155C298.6333,-168.3911 306.0662,-164.4037 312.7462,-160 350.2754,-135.2594 346.9966,-112.7818 385.7462,-90 395.5161,-84.256 406.9335,-79.8715 417.7393,-76.5871"/>
<polygon fill="#8b4513" stroke="#8b4513" points="418.7415,-79.9411 427.4262,-73.8726 416.8527,-73.2007 418.7415,-79.9411"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultConfig -->
<g id="node21" class="node">
<g id="node9" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultConfig</title>
<g id="a_node21"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultConfig | defined in router.go:23&#10;at router.go:24: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M280.797,-174C280.797,-174 203.2788,-174 203.2788,-174 197.2788,-174 191.2788,-168 191.2788,-162 191.2788,-162 191.2788,-150 191.2788,-150 191.2788,-144 197.2788,-138 203.2788,-138 203.2788,-138 280.797,-138 280.797,-138 286.797,-138 292.797,-144 292.797,-150 292.797,-150 292.797,-162 292.797,-162 292.797,-168 286.797,-174 280.797,-174"/>
<text text-anchor="middle" x="242.0379" y="-151.8" font-family="Verdana" font-size="14.00" fill="#000000">defaultConfig</text>
<g id="a_node9"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultConfig | defined in router.go:23&#10;at router.go:24: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M280.797,-567C280.797,-567 203.2788,-567 203.2788,-567 197.2788,-567 191.2788,-561 191.2788,-555 191.2788,-555 191.2788,-543 191.2788,-543 191.2788,-537 197.2788,-531 203.2788,-531 203.2788,-531 280.797,-531 280.797,-531 286.797,-531 292.797,-537 292.797,-543 292.797,-543 292.797,-555 292.797,-555 292.797,-561 286.797,-567 280.797,-567"/>
<text text-anchor="middle" x="242.0379" y="-544.8" font-family="Verdana" font-size="14.00" fill="#000000">defaultConfig</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath -->
<g id="edge13" class="edge">
<g id="edge2" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath</title>
<g id="a_edge13"><a xlink:title="at router.go:24: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath]">
<path fill="none" stroke="#000000" d="M293.0947,-139.1055C300.1458,-135.4557 306.9468,-131.1172 312.7462,-126 336.6386,-104.9178 323.5206,-83.4673 348.7462,-64 360.2471,-55.1244 374.2172,-48.8738 388.2524,-44.4721"/>
<polygon fill="#000000" stroke="#000000" points="389.2908,-47.8156 397.9499,-41.7106 387.3736,-41.0833 389.2908,-47.8156"/>
<g id="a_edge2"><a xlink:title="at router.go:24: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath]">
<path fill="none" stroke="#000000" d="M288.2681,-567.0078C296.6305,-570.8933 305.112,-575.2706 312.7462,-580 348.6887,-602.2663 349.6286,-619.0189 385.7462,-641 390.09,-643.6436 394.7086,-646.1603 399.4263,-648.5301"/>
<polygon fill="#000000" stroke="#000000" points="398.0428,-651.748 408.5747,-652.9007 401.0603,-645.4317 398.0428,-651.748"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultBase -->
<g id="node10" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultBase</title>
<g id="a_node10"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultBase | defined in router.go:19&#10;at router.go:20: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M275.1193,-628C275.1193,-628 208.9565,-628 208.9565,-628 202.9565,-628 196.9565,-622 196.9565,-616 196.9565,-616 196.9565,-604 196.9565,-604 196.9565,-598 202.9565,-592 208.9565,-592 208.9565,-592 275.1193,-592 275.1193,-592 281.1193,-592 287.1193,-598 287.1193,-604 287.1193,-604 287.1193,-616 287.1193,-616 287.1193,-622 281.1193,-628 275.1193,-628"/>
<text text-anchor="middle" x="242.0379" y="-605.8" font-family="Verdana" font-size="14.00" fill="#000000">defaultBase</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultBase&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath -->
<g id="edge26" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultBase&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath</title>
<g id="a_edge26"><a xlink:title="at router.go:20: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath]">
<path fill="none" stroke="#000000" d="M287.1492,-622.7876C316.4261,-631.0866 355.1484,-642.0632 388.2492,-651.4461"/>
<polygon fill="#000000" stroke="#000000" points="387.2972,-654.8141 397.8727,-654.1741 389.2063,-648.0795 387.2972,-654.8141"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.init -->
<g id="node22" class="node">
<g id="node11" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.init</title>
<g id="a_node22"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.init | defined in .:0&#10;at router.go:31: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultBase]&#10;at netdb.go:15: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultConfig]&#10;at router.go:32: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultConfig]&#10;at router.go:39: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig]&#10;at config.go:14: calling [github.com/go&#45;i2p/logger.GetGoI2PLogger]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M72.1648,-139C72.1648,-139 42.1648,-139 42.1648,-139 36.1648,-139 30.1648,-133 30.1648,-127 30.1648,-127 30.1648,-115 30.1648,-115 30.1648,-109 36.1648,-103 42.1648,-103 42.1648,-103 72.1648,-103 72.1648,-103 78.1648,-103 84.1648,-109 84.1648,-115 84.1648,-115 84.1648,-127 84.1648,-127 84.1648,-133 78.1648,-139 72.1648,-139"/>
<text text-anchor="middle" x="57.1648" y="-116.8" font-family="Verdana" font-size="14.00" fill="#000000">init</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.init&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig -->
<g id="edge15" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.init&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig</title>
<g id="a_edge15"><a xlink:title="at router.go:39: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig]">
<path fill="none" stroke="#000000" d="M65.0959,-139.2043C80.4423,-172.1072 117.4972,-241.1927 171.3296,-275 225.5171,-309.0303 249.9928,-289.4953 312.7462,-302 333.1505,-306.0659 355.1492,-310.5712 375.6774,-314.8279"/>
<polygon fill="#000000" stroke="#000000" points="375.1203,-318.2869 385.6233,-316.8946 376.5445,-311.4333 375.1203,-318.2869"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.init&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultBase -->
<g id="edge3" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.init&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultBase</title>
<g id="a_edge3"><a xlink:title="at router.go:31: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultBase]">
<path fill="none" stroke="#000000" d="M84.2267,-107.3192C107.2606,-95.7727 141.2936,-78.943 171.3296,-65 177.5376,-62.1182 184.0822,-59.1527 190.5822,-56.2515"/>
<polygon fill="#000000" stroke="#000000" points="192.3052,-59.3162 200.0291,-52.0641 189.4686,-52.9167 192.3052,-59.3162"/>
<g id="a_node11"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.init | defined in .:0&#10;at router.go:39: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig]&#10;at router.go:31: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultBase]&#10;at config.go:14: calling [github.com/go&#45;i2p/logger.GetGoI2PLogger]&#10;at netdb.go:15: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultConfig]&#10;at router.go:32: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultConfig]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M72.1648,-597C72.1648,-597 42.1648,-597 42.1648,-597 36.1648,-597 30.1648,-591 30.1648,-585 30.1648,-585 30.1648,-573 30.1648,-573 30.1648,-567 36.1648,-561 42.1648,-561 42.1648,-561 72.1648,-561 72.1648,-561 78.1648,-561 84.1648,-567 84.1648,-573 84.1648,-573 84.1648,-585 84.1648,-585 84.1648,-591 78.1648,-597 72.1648,-597"/>
<text text-anchor="middle" x="57.1648" y="-574.8" font-family="Verdana" font-size="14.00" fill="#000000">init</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.init&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultConfig -->
<g id="edge14" class="edge">
<g id="edge28" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.init&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultConfig</title>
<g id="a_edge14"><a xlink:title="at netdb.go:15: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultConfig]&#10;at router.go:32: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultConfig]">
<path fill="none" stroke="#000000" d="M84.4435,-126.1644C109.8392,-130.9723 148.5854,-138.3077 181.3029,-144.5017"/>
<polygon fill="#000000" stroke="#000000" points="180.765,-147.962 191.2416,-146.3833 182.0672,-141.0841 180.765,-147.962"/>
<g id="a_edge28"><a xlink:title="at netdb.go:15: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultConfig]&#10;at router.go:32: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultConfig]">
<path fill="none" stroke="#000000" d="M84.4435,-574.5734C109.8392,-570.4523 148.5854,-564.1649 181.3029,-558.8557"/>
<polygon fill="#000000" stroke="#000000" points="181.9313,-562.2996 191.2416,-557.2429 180.81,-555.39 181.9313,-562.2996"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.init&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultBase -->
<g id="edge12" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.init&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultBase</title>
<g id="a_edge12"><a xlink:title="at router.go:31: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.defaultBase]">
<path fill="none" stroke="#000000" d="M84.4435,-583.5742C111.2046,-588.0615 152.7903,-595.0347 186.5246,-600.6914"/>
<polygon fill="#000000" stroke="#000000" points="186.2756,-604.1984 196.7167,-602.4004 187.4332,-597.2948 186.2756,-604.1984"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/logger.GetGoI2PLogger -->
<g id="node23" class="node">
<g id="node12" class="node">
<title>github.com/go&#45;i2p/logger.GetGoI2PLogger</title>
<g id="a_node23"><a xlink:title="github.com/go&#45;i2p/logger.GetGoI2PLogger | defined in log.go:120">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M290.7274,-113C290.7274,-113 193.3484,-113 193.3484,-113 187.3484,-113 181.3484,-107 181.3484,-101 181.3484,-101 181.3484,-89 181.3484,-89 181.3484,-83 187.3484,-77 193.3484,-77 193.3484,-77 290.7274,-77 290.7274,-77 296.7274,-77 302.7274,-83 302.7274,-89 302.7274,-89 302.7274,-101 302.7274,-101 302.7274,-107 296.7274,-113 290.7274,-113"/>
<text text-anchor="middle" x="242.0379" y="-99.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="242.0379" y="-82.4" font-family="Verdana" font-size="14.00" fill="#000000">GetGoI2PLogger</text>
<g id="a_node12"><a xlink:title="github.com/go&#45;i2p/logger.GetGoI2PLogger | defined in log.go:120">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M290.7274,-689C290.7274,-689 193.3484,-689 193.3484,-689 187.3484,-689 181.3484,-683 181.3484,-677 181.3484,-677 181.3484,-665 181.3484,-665 181.3484,-659 187.3484,-653 193.3484,-653 193.3484,-653 290.7274,-653 290.7274,-653 296.7274,-653 302.7274,-659 302.7274,-665 302.7274,-665 302.7274,-677 302.7274,-677 302.7274,-683 296.7274,-689 290.7274,-689"/>
<text text-anchor="middle" x="242.0379" y="-675.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="242.0379" y="-658.4" font-family="Verdana" font-size="14.00" fill="#000000">GetGoI2PLogger</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.init&#45;&gt;github.com/go&#45;i2p/logger.GetGoI2PLogger -->
<g id="edge30" class="edge">
<g id="edge27" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.init&#45;&gt;github.com/go&#45;i2p/logger.GetGoI2PLogger</title>
<g id="a_edge30"><a xlink:title="at config.go:14: calling [github.com/go&#45;i2p/logger.GetGoI2PLogger]">
<path fill="none" stroke="#8b4513" d="M84.4435,-117.1636C107.2741,-113.9528 140.8943,-109.2245 171.2242,-104.959"/>
<polygon fill="#8b4513" stroke="#8b4513" points="171.9484,-108.3917 181.3635,-103.5331 170.9735,-101.4599 171.9484,-108.3917"/>
<g id="a_edge27"><a xlink:title="at config.go:14: calling [github.com/go&#45;i2p/logger.GetGoI2PLogger]">
<path fill="none" stroke="#8b4513" d="M84.4615,-594.7883C107.3516,-607.7931 141.06,-626.4011 171.3296,-641 176.7158,-643.5977 182.3846,-646.2059 188.0718,-648.7412"/>
<polygon fill="#8b4513" stroke="#8b4513" points="187.0498,-652.1146 197.6137,-652.9243 189.8604,-645.7037 187.0498,-652.1146"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig -->
<g id="node13" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig</title>
<g id="a_node13"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig | defined in router.go:35">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M516.6979,-628C516.6979,-628 397.7623,-628 397.7623,-628 391.7623,-628 385.7623,-622 385.7623,-616 385.7623,-616 385.7623,-604 385.7623,-604 385.7623,-598 391.7623,-592 397.7623,-592 397.7623,-592 516.6979,-592 516.6979,-592 522.6979,-592 528.6979,-598 528.6979,-604 528.6979,-604 528.6979,-616 528.6979,-616 528.6979,-622 522.6979,-628 516.6979,-628"/>
<text text-anchor="middle" x="457.2301" y="-605.8" font-family="Verdana" font-size="14.00" fill="#000000">DefaultRouterConfig</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.init&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig -->
<g id="edge3" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.init&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig</title>
<g id="a_edge3"><a xlink:title="at router.go:39: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig]">
<path fill="none" stroke="#000000" d="M82.9038,-560.7971C105.1307,-546.2632 138.7215,-527.0469 171.3296,-519 232.3508,-503.9415 253.6628,-497.5639 312.7462,-519 352.4918,-533.4202 349.6286,-558.0189 385.7462,-580 390.09,-582.6436 394.7086,-585.1603 399.4263,-587.5301"/>
<polygon fill="#000000" stroke="#000000" points="398.0428,-590.748 408.5747,-591.9007 401.0603,-584.4317 398.0428,-590.748"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig -->
<g id="node14" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig</title>
<g id="a_node14"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig | defined in config.go:19&#10;at config.go:27: calling [github.com/spf13/viper.SetConfigType]&#10;at config.go:25: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath]&#10;at config.go:31: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults]&#10;at config.go:37: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig]&#10;at config.go:26: calling [github.com/spf13/viper.SetConfigName]&#10;at config.go:34: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile]&#10;at config.go:25: calling [github.com/spf13/viper.AddConfigPath]&#10;at config.go:22: calling [github.com/spf13/viper.SetConfigFile]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M86.4951,-304C86.4951,-304 27.8345,-304 27.8345,-304 21.8345,-304 15.8345,-298 15.8345,-292 15.8345,-292 15.8345,-280 15.8345,-280 15.8345,-274 21.8345,-268 27.8345,-268 27.8345,-268 86.4951,-268 86.4951,-268 92.4951,-268 98.4951,-274 98.4951,-280 98.4951,-280 98.4951,-292 98.4951,-292 98.4951,-298 92.4951,-304 86.4951,-304"/>
<text text-anchor="middle" x="57.1648" y="-281.8" font-family="Verdana" font-size="14.00" fill="#000000">InitConfig</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath -->
<g id="edge7" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath</title>
<g id="a_edge7"><a xlink:title="at config.go:25: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath]">
<path fill="none" stroke="#000000" d="M64.1444,-304.1857C78.7299,-339.91 115.7614,-419.7039 171.3296,-465 223.4776,-507.5081 261.2099,-475.7523 312.7462,-519 361.1491,-559.6183 338.0115,-599.5984 385.7462,-641 388.555,-643.4361 391.59,-645.6958 394.7696,-647.7888"/>
<polygon fill="#000000" stroke="#000000" points="393.0815,-650.8568 403.4683,-652.9463 396.6516,-644.8356 393.0815,-650.8568"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig -->
<g id="edge15" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig</title>
<g id="a_edge15"><a xlink:title="at config.go:37: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.UpdateRouterConfig]">
<path fill="none" stroke="#000000" d="M87.2225,-267.742C109.9763,-254.2029 142.1833,-235.6364 171.3296,-221 177.0679,-218.1184 183.1347,-215.2297 189.2061,-212.4375"/>
<polygon fill="#000000" stroke="#000000" points="191.0335,-215.4524 198.704,-208.1439 188.1501,-209.0739 191.0335,-215.4524"/>
</a>
</g>
</g>
<!-- github.com/spf13/viper.SetConfigFile -->
<g id="node15" class="node">
<title>github.com/spf13/viper.SetConfigFile</title>
<g id="a_node15"><a xlink:title="github.com/spf13/viper.SetConfigFile | defined in viper.go:509">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M281.0929,-391C281.0929,-391 202.9829,-391 202.9829,-391 196.9829,-391 190.9829,-385 190.9829,-379 190.9829,-379 190.9829,-367 190.9829,-367 190.9829,-361 196.9829,-355 202.9829,-355 202.9829,-355 281.0929,-355 281.0929,-355 287.0929,-355 293.0929,-361 293.0929,-367 293.0929,-367 293.0929,-379 293.0929,-379 293.0929,-385 287.0929,-391 281.0929,-391"/>
<text text-anchor="middle" x="242.0379" y="-377.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="242.0379" y="-360.4" font-family="Verdana" font-size="14.00" fill="#000000">SetConfigFile</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/spf13/viper.SetConfigFile -->
<g id="edge24" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/spf13/viper.SetConfigFile</title>
<g id="a_edge24"><a xlink:title="at config.go:22: calling [github.com/spf13/viper.SetConfigFile]">
<path fill="none" stroke="#8b4513" d="M91.8703,-304.0262C114.3573,-315.5322 144.3734,-330.5666 171.3296,-343 176.9716,-345.6023 182.9022,-348.2512 188.8293,-350.8434"/>
<polygon fill="#8b4513" stroke="#8b4513" points="187.5312,-354.0953 198.0987,-354.8555 190.3118,-347.6712 187.5312,-354.0953"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults -->
<g id="node16" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults</title>
<g id="a_node16"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults | defined in config.go:40&#10;at config.go:42: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig]&#10;at config.go:43: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig]&#10;at config.go:42: calling [github.com/spf13/viper.SetDefault]&#10;at config.go:43: calling [github.com/spf13/viper.SetDefault]&#10;at config.go:46: calling [github.com/spf13/viper.SetDefault]&#10;at config.go:49: calling [github.com/spf13/viper.SetDefault]&#10;at config.go:50: calling [github.com/spf13/viper.SetDefault]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M273.5099,-330C273.5099,-330 210.5659,-330 210.5659,-330 204.5659,-330 198.5659,-324 198.5659,-318 198.5659,-318 198.5659,-306 198.5659,-306 198.5659,-300 204.5659,-294 210.5659,-294 210.5659,-294 273.5099,-294 273.5099,-294 279.5099,-294 285.5099,-300 285.5099,-306 285.5099,-306 285.5099,-318 285.5099,-318 285.5099,-324 279.5099,-330 273.5099,-330"/>
<text text-anchor="middle" x="242.0379" y="-307.8" font-family="Verdana" font-size="14.00" fill="#000000">setDefaults</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults -->
<g id="edge9" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults</title>
<g id="a_edge9"><a xlink:title="at config.go:31: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults]">
<path fill="none" stroke="#000000" d="M98.6539,-291.8349C125.1072,-295.5552 159.656,-300.4141 188.2117,-304.43"/>
<polygon fill="#000000" stroke="#000000" points="188.045,-307.941 198.435,-305.8678 189.0199,-301.0092 188.045,-307.941"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile -->
<g id="node18" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile</title>
<g id="a_node18"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile | defined in config.go:91&#10;at config.go:100: calling [(*github.com/sirupsen/logrus.Logger).Fatalf]&#10;at config.go:95: calling [(*github.com/sirupsen/logrus.Logger).Fatalf]&#10;at config.go:92: calling [github.com/spf13/viper.ReadInConfig]&#10;at config.go:103: calling [(*github.com/sirupsen/logrus.Logger).Debugf]&#10;at config.go:97: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath]&#10;at config.go:103: calling [github.com/spf13/viper.ConfigFileUsed]&#10;at config.go:97: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M291.0239,-269C291.0239,-269 193.0519,-269 193.0519,-269 187.0519,-269 181.0519,-263 181.0519,-257 181.0519,-257 181.0519,-245 181.0519,-245 181.0519,-239 187.0519,-233 193.0519,-233 193.0519,-233 291.0239,-233 291.0239,-233 297.0239,-233 303.0239,-239 303.0239,-245 303.0239,-245 303.0239,-257 303.0239,-257 303.0239,-263 297.0239,-269 291.0239,-269"/>
<text text-anchor="middle" x="242.0379" y="-246.8" font-family="Verdana" font-size="14.00" fill="#000000">handleConfigFile</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile -->
<g id="edge21" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile</title>
<g id="a_edge21"><a xlink:title="at config.go:34: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile]">
<path fill="none" stroke="#000000" d="M98.6539,-278.1453C119.9872,-274.1065 146.5855,-269.071 171.0596,-264.4375"/>
<polygon fill="#000000" stroke="#000000" points="171.8608,-267.8481 181.0352,-262.549 170.5587,-260.9703 171.8608,-267.8481"/>
</a>
</g>
</g>
<!-- github.com/spf13/viper.AddConfigPath -->
<g id="node21" class="node">
<title>github.com/spf13/viper.AddConfigPath</title>
<g id="a_node21"><a xlink:title="github.com/spf13/viper.AddConfigPath | defined in viper.go:574">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M285.9202,-452C285.9202,-452 198.1556,-452 198.1556,-452 192.1556,-452 186.1556,-446 186.1556,-440 186.1556,-440 186.1556,-428 186.1556,-428 186.1556,-422 192.1556,-416 198.1556,-416 198.1556,-416 285.9202,-416 285.9202,-416 291.9202,-416 297.9202,-422 297.9202,-428 297.9202,-428 297.9202,-440 297.9202,-440 297.9202,-446 291.9202,-452 285.9202,-452"/>
<text text-anchor="middle" x="242.0379" y="-438.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="242.0379" y="-421.4" font-family="Verdana" font-size="14.00" fill="#000000">AddConfigPath</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/spf13/viper.AddConfigPath -->
<g id="edge22" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/spf13/viper.AddConfigPath</title>
<g id="a_edge22"><a xlink:title="at config.go:25: calling [github.com/spf13/viper.AddConfigPath]">
<path fill="none" stroke="#8b4513" d="M70.8516,-304.1906C90.6449,-329.4532 129.4988,-375.2844 171.3296,-404 175.0795,-406.5742 179.0855,-408.995 183.2126,-411.2576"/>
<polygon fill="#8b4513" stroke="#8b4513" points="181.8927,-414.5139 192.3889,-415.9563 185.0831,-408.2832 181.8927,-414.5139"/>
</a>
</g>
</g>
<!-- github.com/spf13/viper.SetConfigName -->
<g id="node22" class="node">
<title>github.com/spf13/viper.SetConfigName</title>
<g id="a_node22"><a xlink:title="github.com/spf13/viper.SetConfigName | defined in viper.go:2174">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M287.2401,-86C287.2401,-86 196.8357,-86 196.8357,-86 190.8357,-86 184.8357,-80 184.8357,-74 184.8357,-74 184.8357,-62 184.8357,-62 184.8357,-56 190.8357,-50 196.8357,-50 196.8357,-50 287.2401,-50 287.2401,-50 293.2401,-50 299.2401,-56 299.2401,-62 299.2401,-62 299.2401,-74 299.2401,-74 299.2401,-80 293.2401,-86 287.2401,-86"/>
<text text-anchor="middle" x="242.0379" y="-72.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="242.0379" y="-55.4" font-family="Verdana" font-size="14.00" fill="#000000">SetConfigName</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/spf13/viper.SetConfigName -->
<g id="edge16" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/spf13/viper.SetConfigName</title>
<g id="a_edge16"><a xlink:title="at config.go:26: calling [github.com/spf13/viper.SetConfigName]">
<path fill="none" stroke="#8b4513" d="M63.8954,-267.8005C78.2769,-231.1789 115.322,-147.9182 171.3296,-99 174.5096,-96.2225 177.9776,-93.6592 181.6145,-91.2994"/>
<polygon fill="#8b4513" stroke="#8b4513" points="183.5083,-94.2461 190.3514,-86.1575 179.9579,-88.2133 183.5083,-94.2461"/>
</a>
</g>
</g>
<!-- github.com/spf13/viper.SetConfigType -->
<g id="node23" class="node">
<title>github.com/spf13/viper.SetConfigType</title>
<g id="a_node23"><a xlink:title="github.com/spf13/viper.SetConfigType | defined in viper.go:2185">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M284.5817,-147C284.5817,-147 199.4941,-147 199.4941,-147 193.4941,-147 187.4941,-141 187.4941,-135 187.4941,-135 187.4941,-123 187.4941,-123 187.4941,-117 193.4941,-111 199.4941,-111 199.4941,-111 284.5817,-111 284.5817,-111 290.5817,-111 296.5817,-117 296.5817,-123 296.5817,-123 296.5817,-135 296.5817,-135 296.5817,-141 290.5817,-147 284.5817,-147"/>
<text text-anchor="middle" x="242.0379" y="-133.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="242.0379" y="-116.4" font-family="Verdana" font-size="14.00" fill="#000000">SetConfigType</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/spf13/viper.SetConfigType -->
<g id="edge5" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.InitConfig&#45;&gt;github.com/spf13/viper.SetConfigType</title>
<g id="a_edge5"><a xlink:title="at config.go:27: calling [github.com/spf13/viper.SetConfigType]">
<path fill="none" stroke="#8b4513" d="M69.6542,-267.9301C88.8514,-241.276 127.9666,-191.2139 171.3296,-160 175.4396,-157.0415 179.8766,-154.281 184.4544,-151.7246"/>
<polygon fill="#8b4513" stroke="#8b4513" points="186.1392,-154.7933 193.3828,-147.0615 182.8986,-148.5886 186.1392,-154.7933"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig -->
<g id="edge14" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig</title>
<g id="a_edge14"><a xlink:title="at config.go:42: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig]&#10;at config.go:43: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.DefaultRouterConfig]">
<path fill="none" stroke="#000000" d="M285.8597,-324.2933C295.7885,-328.8177 305.5205,-334.8967 312.7462,-343 349.4225,-384.1313 348.7454,-539.1603 385.7462,-580 387.6947,-582.1507 389.8221,-584.1519 392.0845,-586.0136"/>
<polygon fill="#000000" stroke="#000000" points="390.0575,-588.8669 400.2324,-591.82 394.1199,-583.1662 390.0575,-588.8669"/>
</a>
</g>
</g>
<!-- github.com/spf13/viper.SetDefault -->
<g id="node17" class="node">
<title>github.com/spf13/viper.SetDefault</title>
<g id="a_node17"><a xlink:title="github.com/spf13/viper.SetDefault | defined in viper.go:1596">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M487.0956,-567C487.0956,-567 427.3646,-567 427.3646,-567 421.3646,-567 415.3646,-561 415.3646,-555 415.3646,-555 415.3646,-543 415.3646,-543 415.3646,-537 421.3646,-531 427.3646,-531 427.3646,-531 487.0956,-531 487.0956,-531 493.0956,-531 499.0956,-537 499.0956,-543 499.0956,-543 499.0956,-555 499.0956,-555 499.0956,-561 493.0956,-567 487.0956,-567"/>
<text text-anchor="middle" x="457.2301" y="-553.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="457.2301" y="-536.4" font-family="Verdana" font-size="14.00" fill="#000000">SetDefault</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults&#45;&gt;github.com/spf13/viper.SetDefault -->
<g id="edge19" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.setDefaults&#45;&gt;github.com/spf13/viper.SetDefault</title>
<g id="a_edge19"><a xlink:title="at config.go:42: calling [github.com/spf13/viper.SetDefault]&#10;at config.go:43: calling [github.com/spf13/viper.SetDefault]&#10;at config.go:46: calling [github.com/spf13/viper.SetDefault]&#10;at config.go:49: calling [github.com/spf13/viper.SetDefault]&#10;at config.go:50: calling [github.com/spf13/viper.SetDefault]">
<path fill="none" stroke="#8b4513" d="M285.6244,-325.0294C295.4438,-329.5187 305.1846,-335.3971 312.7462,-343 370.4433,-401.0118 329.948,-452.1596 385.7462,-512 391.5685,-518.2441 398.683,-523.6151 406.1414,-528.1742"/>
<polygon fill="#8b4513" stroke="#8b4513" points="404.5665,-531.304 414.9981,-533.1569 407.9988,-525.2033 404.5665,-531.304"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig -->
<g id="edge30" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig</title>
<g id="a_edge30"><a xlink:title="at config.go:97: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.createDefaultConfig]">
<path fill="none" stroke="#000000" d="M303.1277,-268.317C328.1391,-275.4069 357.3021,-283.6737 383.4868,-291.0962"/>
<polygon fill="#000000" stroke="#000000" points="382.7861,-294.5354 393.3616,-293.8954 384.6952,-287.8007 382.7861,-294.5354"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath -->
<g id="edge20" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath</title>
<g id="a_edge20"><a xlink:title="at config.go:97: calling [github.com/go&#45;i2p/go&#45;i2p/lib/config.BuildI2PDirPath]">
<path fill="none" stroke="#000000" d="M297.8748,-269.0032C303.4844,-272.5994 308.6209,-276.8894 312.7462,-282 363.8802,-345.348 334.1124,-578.0587 385.7462,-641 387.4268,-643.0486 389.2716,-644.9596 391.2456,-646.7419"/>
<polygon fill="#000000" stroke="#000000" points="389.3554,-649.7026 399.4247,-652.9981 393.6082,-644.1426 389.3554,-649.7026"/>
</a>
</g>
</g>
<!-- github.com/spf13/viper.ReadInConfig -->
<g id="node19" class="node">
<title>github.com/spf13/viper.ReadInConfig</title>
<g id="a_node19"><a xlink:title="github.com/spf13/viper.ReadInConfig | defined in viper.go:1632">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M497.0448,-418C497.0448,-418 417.4154,-418 417.4154,-418 411.4154,-418 405.4154,-412 405.4154,-406 405.4154,-406 405.4154,-394 405.4154,-394 405.4154,-388 411.4154,-382 417.4154,-382 417.4154,-382 497.0448,-382 497.0448,-382 503.0448,-382 509.0448,-388 509.0448,-394 509.0448,-394 509.0448,-406 509.0448,-406 509.0448,-412 503.0448,-418 497.0448,-418"/>
<text text-anchor="middle" x="457.2301" y="-404.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="457.2301" y="-387.4" font-family="Verdana" font-size="14.00" fill="#000000">ReadInConfig</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;github.com/spf13/viper.ReadInConfig -->
<g id="edge6" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;github.com/spf13/viper.ReadInConfig</title>
<g id="a_edge6"><a xlink:title="at config.go:92: calling [github.com/spf13/viper.ReadInConfig]">
<path fill="none" stroke="#8b4513" d="M290.7042,-269.046C298.3863,-272.8098 306.008,-277.136 312.7462,-282 352.0409,-310.3649 347.3857,-333.3839 385.7462,-363 392.2015,-367.9838 399.4285,-372.6182 406.74,-376.8034"/>
<polygon fill="#8b4513" stroke="#8b4513" points="405.5404,-380.1362 415.9945,-381.857 408.8953,-373.9925 405.5404,-380.1362"/>
</a>
</g>
</g>
<!-- github.com/spf13/viper.ConfigFileUsed -->
<g id="node20" class="node">
<title>github.com/spf13/viper.ConfigFileUsed</title>
<g id="a_node20"><a xlink:title="github.com/spf13/viper.ConfigFileUsed | defined in viper.go:569">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M502.1629,-479C502.1629,-479 412.2973,-479 412.2973,-479 406.2973,-479 400.2973,-473 400.2973,-467 400.2973,-467 400.2973,-455 400.2973,-455 400.2973,-449 406.2973,-443 412.2973,-443 412.2973,-443 502.1629,-443 502.1629,-443 508.1629,-443 514.1629,-449 514.1629,-455 514.1629,-455 514.1629,-467 514.1629,-467 514.1629,-473 508.1629,-479 502.1629,-479"/>
<text text-anchor="middle" x="457.2301" y="-465.2" font-family="Verdana" font-size="14.00" fill="#000000">viper</text>
<text text-anchor="middle" x="457.2301" y="-448.4" font-family="Verdana" font-size="14.00" fill="#000000">ConfigFileUsed</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;github.com/spf13/viper.ConfigFileUsed -->
<g id="edge29" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;github.com/spf13/viper.ConfigFileUsed</title>
<g id="a_edge29"><a xlink:title="at config.go:103: calling [github.com/spf13/viper.ConfigFileUsed]">
<path fill="none" stroke="#8b4513" d="M294.8749,-269.0888C301.3538,-272.7167 307.5209,-276.9915 312.7462,-282 365.9835,-333.0276 332.1067,-380.3954 385.7462,-431 388.2702,-433.3811 391.0107,-435.587 393.8987,-437.6286"/>
<polygon fill="#8b4513" stroke="#8b4513" points="392.0421,-440.5956 402.3704,-442.9569 395.769,-434.6701 392.0421,-440.5956"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;(*github.com/sirupsen/logrus.Logger).Fatalf -->
<g id="edge4" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;(*github.com/sirupsen/logrus.Logger).Fatalf</title>
<g id="a_edge4"><a xlink:title="at config.go:100: calling [(*github.com/sirupsen/logrus.Logger).Fatalf]&#10;at config.go:95: calling [(*github.com/sirupsen/logrus.Logger).Fatalf]">
<path fill="none" stroke="#8b4513" d="M288.2681,-269.0078C296.6305,-272.8933 305.112,-277.2706 312.7462,-282 348.6887,-304.2663 346.5755,-327.0842 385.7462,-343 460.2172,-373.259 556.1927,-371.4538 609.2948,-367.3099"/>
<polygon fill="#8b4513" stroke="#8b4513" points="609.6563,-370.7919 619.3245,-366.4587 609.0643,-363.817 609.6563,-370.7919"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debugf -->
<g id="edge13" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/config.handleConfigFile&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debugf</title>
<g id="a_edge13"><a xlink:title="at config.go:103: calling [(*github.com/sirupsen/logrus.Logger).Debugf]">
<path fill="none" stroke="#8b4513" d="M296.5193,-269.1421C302.5087,-272.7299 308.1062,-276.98 312.7462,-282 346.2813,-318.2814 345.482,-463.369 385.7462,-492 437.5303,-528.8225 475.2252,-526.2992 528.714,-492 594.1711,-450.0263 550.9746,-391.9231 601.714,-333 603.6383,-330.7654 605.7622,-328.6288 608.0125,-326.5979"/>
<polygon fill="#8b4513" stroke="#8b4513" points="610.4635,-329.1174 616.0444,-320.1116 606.0655,-323.6715 610.4635,-329.1174"/>
</a>
</g>
</g>

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 49 KiB

View File

@@ -1,136 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: gocallvis Pages: 1 -->
<svg width="374pt" height="306pt"
viewBox="0.00 0.00 374.02 306.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(0 306)">
<title>gocallvis</title>
<polygon fill="#d3d3d3" stroke="transparent" points="0,0 0,-306 374.0184,-306 374.0184,0 0,0"/>
<g id="clust1" class="cluster">
<title>cluster_focus</title>
<polygon fill="#e6ecfa" stroke="#000000" stroke-width=".5" points="8,-8 8,-298 366.0184,-298 366.0184,-8 8,-8"/>
<text text-anchor="middle" x="187.0092" y="-277.8" font-family="Arial" font-size="18.00" fill="#000000">handshake</text>
</g>
<g id="clust2" class="cluster">
<title>cluster_*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState</title>
<g id="a_clust2"><a xlink:title="type: *github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState">
<path fill="#b0c4de" stroke="#000000" stroke-width=".5" d="M28,-60C28,-60 160.6326,-60 160.6326,-60 166.6326,-60 172.6326,-66 172.6326,-72 172.6326,-72 172.6326,-248 172.6326,-248 172.6326,-254 166.6326,-260 160.6326,-260 160.6326,-260 28,-260 28,-260 22,-260 16,-254 16,-248 16,-248 16,-72 16,-72 16,-66 22,-60 28,-60"/>
<text text-anchor="middle" x="94.3163" y="-68.5" font-family="Arial" font-size="15.00" fill="#222222">(*HandshakeState)</text>
</a>
</g>
</g>
<!-- github.com/samber/oops.Errorf -->
<g id="node1" class="node">
<title>github.com/samber/oops.Errorf</title>
<g id="a_node1"><a xlink:title="github.com/samber/oops.Errorf | defined in oops.go:34">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M315.0208,-167C315.0208,-167 280.6302,-167 280.6302,-167 274.6302,-167 268.6302,-161 268.6302,-155 268.6302,-155 268.6302,-143 268.6302,-143 268.6302,-137 274.6302,-131 280.6302,-131 280.6302,-131 315.0208,-131 315.0208,-131 321.0208,-131 327.0208,-137 327.0208,-143 327.0208,-143 327.0208,-155 327.0208,-155 327.0208,-161 321.0208,-167 315.0208,-167"/>
<text text-anchor="middle" x="297.8255" y="-153.2" font-family="Verdana" font-size="14.00" fill="#000000">oops</text>
<text text-anchor="middle" x="297.8255" y="-136.4" font-family="Verdana" font-size="14.00" fill="#000000">Errorf</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.NewHandshakeState -->
<g id="node2" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.NewHandshakeState</title>
<g id="a_node2"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.NewHandshakeState | defined in handshake.go:78&#10;at handshake.go:98: calling [github.com/go&#45;i2p/go&#45;i2p/lib/crypto/curve25519.GenerateKeyPair]&#10;at handshake.go:101: calling [github.com/samber/oops.Errorf]&#10;at handshake.go:107: calling [github.com/samber/oops.Errorf]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M152.4326,-52C152.4326,-52 36.2,-52 36.2,-52 30.2,-52 24.2,-46 24.2,-40 24.2,-40 24.2,-28 24.2,-28 24.2,-22 30.2,-16 36.2,-16 36.2,-16 152.4326,-16 152.4326,-16 158.4326,-16 164.4326,-22 164.4326,-28 164.4326,-28 164.4326,-40 164.4326,-40 164.4326,-46 158.4326,-52 152.4326,-52"/>
<text text-anchor="middle" x="94.3163" y="-29.8" font-family="Verdana" font-size="14.00" fill="#000000">NewHandshakeState</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.NewHandshakeState&#45;&gt;github.com/samber/oops.Errorf -->
<g id="edge6" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.NewHandshakeState&#45;&gt;github.com/samber/oops.Errorf</title>
<g id="a_edge6"><a xlink:title="at handshake.go:101: calling [github.com/samber/oops.Errorf]&#10;at handshake.go:107: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M164.0061,-52.1084C166.9555,-53.3343 169.8436,-54.6307 172.6326,-56 192.2937,-65.6526 237.1068,-100.2496 267.4276,-124.4066"/>
<polygon fill="#8b4513" stroke="#8b4513" points="265.5671,-127.4003 275.5624,-130.9138 269.9397,-121.934 265.5671,-127.4003"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/crypto/curve25519.GenerateKeyPair -->
<g id="node3" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/crypto/curve25519.GenerateKeyPair</title>
<g id="a_node3"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/crypto/curve25519.GenerateKeyPair | defined in curve25519.go:24">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M346.2119,-86C346.2119,-86 249.4391,-86 249.4391,-86 243.4391,-86 237.4391,-80 237.4391,-74 237.4391,-74 237.4391,-62 237.4391,-62 237.4391,-56 243.4391,-50 249.4391,-50 249.4391,-50 346.2119,-50 346.2119,-50 352.2119,-50 358.2119,-56 358.2119,-62 358.2119,-62 358.2119,-74 358.2119,-74 358.2119,-80 352.2119,-86 346.2119,-86"/>
<text text-anchor="middle" x="297.8255" y="-72.2" font-family="Verdana" font-size="14.00" fill="#000000">curve25519</text>
<text text-anchor="middle" x="297.8255" y="-55.4" font-family="Verdana" font-size="14.00" fill="#000000">GenerateKeyPair</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.NewHandshakeState&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/crypto/curve25519.GenerateKeyPair -->
<g id="edge5" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.NewHandshakeState&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/crypto/curve25519.GenerateKeyPair</title>
<g id="a_edge5"><a xlink:title="at handshake.go:98: calling [github.com/go&#45;i2p/go&#45;i2p/lib/crypto/curve25519.GenerateKeyPair]">
<path fill="none" stroke="#8b4513" d="M164.6376,-45.7485C184.8842,-49.1311 206.9719,-52.8212 227.2347,-56.2065"/>
<polygon fill="#8b4513" stroke="#8b4513" points="226.8909,-59.6975 237.331,-57.8933 228.0445,-52.7932 226.8909,-59.6975"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState).WriteMessage -->
<g id="node4" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState).WriteMessage</title>
<g id="a_node4"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState).WriteMessage | defined in methods.go:66&#10;at methods.go:67: calling [github.com/samber/oops.Errorf]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M134.665,-191C134.665,-191 53.9676,-191 53.9676,-191 47.9676,-191 41.9676,-185 41.9676,-179 41.9676,-179 41.9676,-167 41.9676,-167 41.9676,-161 47.9676,-155 53.9676,-155 53.9676,-155 134.665,-155 134.665,-155 140.665,-155 146.665,-161 146.665,-167 146.665,-167 146.665,-179 146.665,-179 146.665,-185 140.665,-191 134.665,-191"/>
<text text-anchor="middle" x="94.3163" y="-168.8" font-family="Verdana" font-size="14.00" fill="#000000">WriteMessage</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState).WriteMessage&#45;&gt;github.com/samber/oops.Errorf -->
<g id="edge3" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState).WriteMessage&#45;&gt;github.com/samber/oops.Errorf</title>
<g id="a_edge3"><a xlink:title="at methods.go:67: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M146.725,-166.8194C181.5362,-162.7141 226.5141,-157.4098 258.3176,-153.6592"/>
<polygon fill="#8b4513" stroke="#8b4513" points="259.0431,-157.098 268.5644,-152.4508 258.2233,-150.1462 259.0431,-157.098"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState).CompleteHandshake -->
<g id="node5" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState).CompleteHandshake</title>
<g id="a_node5"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState).CompleteHandshake | defined in methods.go:10&#10;at methods.go:13: calling [github.com/samber/oops.Errorf]&#10;at methods.go:17: calling [github.com/samber/oops.Errorf]&#10;at methods.go:21: calling [github.com/samber/oops.Errorf]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M152.4494,-252C152.4494,-252 36.1832,-252 36.1832,-252 30.1832,-252 24.1832,-246 24.1832,-240 24.1832,-240 24.1832,-228 24.1832,-228 24.1832,-222 30.1832,-216 36.1832,-216 36.1832,-216 152.4494,-216 152.4494,-216 158.4494,-216 164.4494,-222 164.4494,-228 164.4494,-228 164.4494,-240 164.4494,-240 164.4494,-246 158.4494,-252 152.4494,-252"/>
<text text-anchor="middle" x="94.3163" y="-229.8" font-family="Verdana" font-size="14.00" fill="#000000">CompleteHandshake</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState).CompleteHandshake&#45;&gt;github.com/samber/oops.Errorf -->
<g id="edge4" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState).CompleteHandshake&#45;&gt;github.com/samber/oops.Errorf</title>
<g id="a_edge4"><a xlink:title="at methods.go:13: calling [github.com/samber/oops.Errorf]&#10;at methods.go:17: calling [github.com/samber/oops.Errorf]&#10;at methods.go:21: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M142.5048,-215.9594C152.499,-212.1007 162.9361,-207.9844 172.6326,-204 201.904,-191.972 234.6371,-177.5571 259.2897,-166.5026"/>
<polygon fill="#8b4513" stroke="#8b4513" points="260.9686,-169.5853 268.653,-162.2915 258.0973,-163.2013 260.9686,-169.5853"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState).GenerateEphemeral -->
<g id="node6" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState).GenerateEphemeral</title>
<g id="a_node6"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState).GenerateEphemeral | defined in methods.go:27&#10;at methods.go:31: calling [github.com/go&#45;i2p/go&#45;i2p/lib/crypto/curve25519.GenerateKeyPair]&#10;at methods.go:33: calling [github.com/samber/oops.Errorf]&#10;at methods.go:40: calling [github.com/samber/oops.Errorf]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M149.9708,-130C149.9708,-130 38.6618,-130 38.6618,-130 32.6618,-130 26.6618,-124 26.6618,-118 26.6618,-118 26.6618,-106 26.6618,-106 26.6618,-100 32.6618,-94 38.6618,-94 38.6618,-94 149.9708,-94 149.9708,-94 155.9708,-94 161.9708,-100 161.9708,-106 161.9708,-106 161.9708,-118 161.9708,-118 161.9708,-124 155.9708,-130 149.9708,-130"/>
<text text-anchor="middle" x="94.3163" y="-107.8" font-family="Verdana" font-size="14.00" fill="#000000">GenerateEphemeral</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState).GenerateEphemeral&#45;&gt;github.com/samber/oops.Errorf -->
<g id="edge2" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState).GenerateEphemeral&#45;&gt;github.com/samber/oops.Errorf</title>
<g id="a_edge2"><a xlink:title="at methods.go:33: calling [github.com/samber/oops.Errorf]&#10;at methods.go:40: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M162.0819,-124.3205C194.1733,-130.155 231.3605,-136.916 258.689,-141.8846"/>
<polygon fill="#8b4513" stroke="#8b4513" points="258.1842,-145.3501 268.649,-143.6954 259.4364,-138.463 258.1842,-145.3501"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState).GenerateEphemeral&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/crypto/curve25519.GenerateKeyPair -->
<g id="edge1" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/handshake.HandshakeState).GenerateEphemeral&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/crypto/curve25519.GenerateKeyPair</title>
<g id="a_edge1"><a xlink:title="at methods.go:31: calling [github.com/go&#45;i2p/go&#45;i2p/lib/crypto/curve25519.GenerateKeyPair]">
<path fill="none" stroke="#8b4513" d="M162.0819,-97.3486C183.1436,-92.795 206.4003,-87.7667 227.6243,-83.178"/>
<polygon fill="#8b4513" stroke="#8b4513" points="228.5039,-86.5687 237.5384,-81.0345 227.0245,-79.7268 228.5039,-86.5687"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 166 KiB

After

Width:  |  Height:  |  Size: 272 KiB

View File

@@ -1,144 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: gocallvis Pages: 1 -->
<svg width="368pt" height="445pt"
viewBox="0.00 0.00 367.78 445.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(0 445)">
<title>gocallvis</title>
<polygon fill="#d3d3d3" stroke="transparent" points="0,0 0,-445 367.7758,-445 367.7758,0 0,0"/>
<g id="clust1" class="cluster">
<title>cluster_focus</title>
<polygon fill="#e6ecfa" stroke="#000000" stroke-width=".5" points="8,-8 8,-437 359.7758,-437 359.7758,-8 8,-8"/>
<text text-anchor="middle" x="183.8879" y="-416.8" font-family="Arial" font-size="18.00" fill="#000000">kdf</text>
</g>
<g id="clust2" class="cluster">
<title>cluster_*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF</title>
<g id="a_clust2"><a xlink:title="type: *github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF">
<path fill="#b0c4de" stroke="#000000" stroke-width=".5" d="M28,-16C28,-16 216.5808,-16 216.5808,-16 222.5808,-16 228.5808,-22 228.5808,-28 228.5808,-28 228.5808,-387 228.5808,-387 228.5808,-393 222.5808,-399 216.5808,-399 216.5808,-399 28,-399 28,-399 22,-399 16,-393 16,-387 16,-387 16,-28 16,-28 16,-22 22,-16 28,-16"/>
<text text-anchor="middle" x="122.2904" y="-24.5" font-family="Arial" font-size="15.00" fill="#222222">(*NTCP2KDF)</text>
</a>
</g>
</g>
<!-- github.com/samber/oops.Errorf -->
<g id="node1" class="node">
<title>github.com/samber/oops.Errorf</title>
<g id="a_node1"><a xlink:title="github.com/samber/oops.Errorf | defined in oops.go:34">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M339.8736,-238C339.8736,-238 305.483,-238 305.483,-238 299.483,-238 293.483,-232 293.483,-226 293.483,-226 293.483,-214 293.483,-214 293.483,-208 299.483,-202 305.483,-202 305.483,-202 339.8736,-202 339.8736,-202 345.8736,-202 351.8736,-208 351.8736,-214 351.8736,-214 351.8736,-226 351.8736,-226 351.8736,-232 345.8736,-238 339.8736,-238"/>
<text text-anchor="middle" x="322.6783" y="-224.2" font-family="Verdana" font-size="14.00" fill="#000000">oops</text>
<text text-anchor="middle" x="322.6783" y="-207.4" font-family="Verdana" font-size="14.00" fill="#000000">Errorf</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveSipHashKey -->
<g id="node2" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveSipHashKey</title>
<g id="a_node2"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveSipHashKey | defined in kdf.go:112&#10;at kdf.go:116: calling [github.com/samber/oops.Errorf]&#10;at kdf.go:119: calling [github.com/samber/oops.Errorf]&#10;at kdf.go:126: calling [github.com/samber/oops.Errorf]&#10;at kdf.go:129: calling [github.com/samber/oops.Errorf]&#10;at kdf.go:135: calling [github.com/samber/oops.Errorf]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M176.6377,-86C176.6377,-86 67.9431,-86 67.9431,-86 61.9431,-86 55.9431,-80 55.9431,-74 55.9431,-74 55.9431,-62 55.9431,-62 55.9431,-56 61.9431,-50 67.9431,-50 67.9431,-50 176.6377,-50 176.6377,-50 182.6377,-50 188.6377,-56 188.6377,-62 188.6377,-62 188.6377,-74 188.6377,-74 188.6377,-80 182.6377,-86 176.6377,-86"/>
<text text-anchor="middle" x="122.2904" y="-63.8" font-family="Verdana" font-size="14.00" fill="#000000">DeriveSipHashKey</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveSipHashKey&#45;&gt;github.com/samber/oops.Errorf -->
<g id="edge1" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveSipHashKey&#45;&gt;github.com/samber/oops.Errorf</title>
<g id="a_edge1"><a xlink:title="at kdf.go:116: calling [github.com/samber/oops.Errorf]&#10;at kdf.go:119: calling [github.com/samber/oops.Errorf]&#10;at kdf.go:126: calling [github.com/samber/oops.Errorf]&#10;at kdf.go:129: calling [github.com/samber/oops.Errorf]&#10;at kdf.go:135: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M188.6745,-80.4262C202.5959,-84.8824 216.6564,-90.8979 228.5808,-99 264.375,-123.3205 292.6637,-165.5676 308.539,-193.1531"/>
<polygon fill="#8b4513" stroke="#8b4513" points="305.4981,-194.8862 313.4398,-201.899 311.6047,-191.4643 305.4981,-194.8862"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).MixKey -->
<g id="node3" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).MixKey</title>
<g id="a_node3"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).MixKey | defined in kdf.go:37&#10;at kdf.go:39: calling [github.com/samber/oops.Errorf]&#10;at kdf.go:45: calling [github.com/samber/oops.Errorf]&#10;at kdf.go:52: calling [github.com/samber/oops.Errorf]&#10;at kdf.go:59: calling [github.com/samber/oops.Errorf]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M145.4476,-147C145.4476,-147 99.1332,-147 99.1332,-147 93.1332,-147 87.1332,-141 87.1332,-135 87.1332,-135 87.1332,-123 87.1332,-123 87.1332,-117 93.1332,-111 99.1332,-111 99.1332,-111 145.4476,-111 145.4476,-111 151.4476,-111 157.4476,-117 157.4476,-123 157.4476,-123 157.4476,-135 157.4476,-135 157.4476,-141 151.4476,-147 145.4476,-147"/>
<text text-anchor="middle" x="122.2904" y="-124.8" font-family="Verdana" font-size="14.00" fill="#000000">MixKey</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).MixKey&#45;&gt;github.com/samber/oops.Errorf -->
<g id="edge2" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).MixKey&#45;&gt;github.com/samber/oops.Errorf</title>
<g id="a_edge2"><a xlink:title="at kdf.go:39: calling [github.com/samber/oops.Errorf]&#10;at kdf.go:45: calling [github.com/samber/oops.Errorf]&#10;at kdf.go:52: calling [github.com/samber/oops.Errorf]&#10;at kdf.go:59: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M157.6506,-136.6371C178.7686,-141.8477 205.8225,-149.6805 228.5808,-160 250.2655,-169.8327 272.8149,-184.0515 290.4018,-196.1797"/>
<polygon fill="#8b4513" stroke="#8b4513" points="288.4143,-199.0607 298.6112,-201.9371 292.4337,-193.3297 288.4143,-199.0607"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveFramingKey -->
<g id="node4" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveFramingKey</title>
<g id="a_node4"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveFramingKey | defined in kdf.go:144&#10;at kdf.go:148: calling [github.com/samber/oops.Errorf]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M176.6377,-208C176.6377,-208 67.9431,-208 67.9431,-208 61.9431,-208 55.9431,-202 55.9431,-196 55.9431,-196 55.9431,-184 55.9431,-184 55.9431,-178 61.9431,-172 67.9431,-172 67.9431,-172 176.6377,-172 176.6377,-172 182.6377,-172 188.6377,-178 188.6377,-184 188.6377,-184 188.6377,-196 188.6377,-196 188.6377,-202 182.6377,-208 176.6377,-208"/>
<text text-anchor="middle" x="122.2904" y="-185.8" font-family="Verdana" font-size="14.00" fill="#000000">DeriveFramingKey</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveFramingKey&#45;&gt;github.com/samber/oops.Errorf -->
<g id="edge3" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveFramingKey&#45;&gt;github.com/samber/oops.Errorf</title>
<g id="a_edge3"><a xlink:title="at kdf.go:148: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M188.7383,-199.9479C220.0178,-204.6307 256.2655,-210.0574 283.1586,-214.0835"/>
<polygon fill="#8b4513" stroke="#8b4513" points="282.9322,-217.5886 293.3403,-215.6078 283.9687,-210.6657 282.9322,-217.5886"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveKeys -->
<g id="node5" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveKeys</title>
<g id="a_node5"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveKeys | defined in kdf.go:82&#10;at kdf.go:86: calling [github.com/samber/oops.Errorf]&#10;at kdf.go:93: calling [github.com/samber/oops.Errorf]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M155.6433,-269C155.6433,-269 88.9375,-269 88.9375,-269 82.9375,-269 76.9375,-263 76.9375,-257 76.9375,-257 76.9375,-245 76.9375,-245 76.9375,-239 82.9375,-233 88.9375,-233 88.9375,-233 155.6433,-233 155.6433,-233 161.6433,-233 167.6433,-239 167.6433,-245 167.6433,-245 167.6433,-257 167.6433,-257 167.6433,-263 161.6433,-269 155.6433,-269"/>
<text text-anchor="middle" x="122.2904" y="-246.8" font-family="Verdana" font-size="14.00" fill="#000000">DeriveKeys</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveKeys&#45;&gt;github.com/samber/oops.Errorf -->
<g id="edge4" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveKeys&#45;&gt;github.com/samber/oops.Errorf</title>
<g id="a_edge4"><a xlink:title="at kdf.go:86: calling [github.com/samber/oops.Errorf]&#10;at kdf.go:93: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M167.7615,-243.9656C202.5635,-238.5818 250.0718,-231.2322 283.2689,-226.0966"/>
<polygon fill="#8b4513" stroke="#8b4513" points="284.1627,-229.5001 293.51,-224.5123 283.0925,-222.5824 284.1627,-229.5001"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveHandshakeMessageKey -->
<g id="node6" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveHandshakeMessageKey</title>
<g id="a_node6"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveHandshakeMessageKey | defined in kdf.go:102&#10;at kdf.go:105: calling [github.com/samber/oops.Errorf]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M208.3716,-330C208.3716,-330 36.2092,-330 36.2092,-330 30.2092,-330 24.2092,-324 24.2092,-318 24.2092,-318 24.2092,-306 24.2092,-306 24.2092,-300 30.2092,-294 36.2092,-294 36.2092,-294 208.3716,-294 208.3716,-294 214.3716,-294 220.3716,-300 220.3716,-306 220.3716,-306 220.3716,-318 220.3716,-318 220.3716,-324 214.3716,-330 208.3716,-330"/>
<text text-anchor="middle" x="122.2904" y="-307.8" font-family="Verdana" font-size="14.00" fill="#000000">DeriveHandshakeMessageKey</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveHandshakeMessageKey&#45;&gt;github.com/samber/oops.Errorf -->
<g id="edge5" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).DeriveHandshakeMessageKey&#45;&gt;github.com/samber/oops.Errorf</title>
<g id="a_edge5"><a xlink:title="at kdf.go:105: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M197.3838,-293.9461C208.0475,-290.4824 218.7284,-286.5047 228.5808,-282 250.7515,-271.863 273.6334,-256.9048 291.2812,-244.2206"/>
<polygon fill="#8b4513" stroke="#8b4513" points="293.495,-246.9377 299.4981,-238.2076 289.3611,-241.2886 293.495,-246.9377"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).MixHash -->
<g id="node7" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).MixHash</title>
<g id="a_node7"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).MixHash | defined in kdf.go:68&#10;at kdf.go:71: calling [github.com/samber/oops.Errorf]&#10;at kdf.go:74: calling [github.com/samber/oops.Errorf]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M148.3915,-391C148.3915,-391 96.1893,-391 96.1893,-391 90.1893,-391 84.1893,-385 84.1893,-379 84.1893,-379 84.1893,-367 84.1893,-367 84.1893,-361 90.1893,-355 96.1893,-355 96.1893,-355 148.3915,-355 148.3915,-355 154.3915,-355 160.3915,-361 160.3915,-367 160.3915,-367 160.3915,-379 160.3915,-379 160.3915,-385 154.3915,-391 148.3915,-391"/>
<text text-anchor="middle" x="122.2904" y="-368.8" font-family="Verdana" font-size="14.00" fill="#000000">MixHash</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).MixHash&#45;&gt;github.com/samber/oops.Errorf -->
<g id="edge6" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/kdf.NTCP2KDF).MixHash&#45;&gt;github.com/samber/oops.Errorf</title>
<g id="a_edge6"><a xlink:title="at kdf.go:71: calling [github.com/samber/oops.Errorf]&#10;at kdf.go:74: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M160.4585,-368.2914C181.9101,-364.2267 208.3545,-356.7315 228.5808,-343 264.954,-318.3064 293.2516,-274.9765 308.9503,-246.8921"/>
<polygon fill="#8b4513" stroke="#8b4513" points="312.0825,-248.4584 313.7847,-238.0012 305.9328,-245.1145 312.0825,-248.4584"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -15,8 +15,8 @@
<text text-anchor="middle" x="342.2926" y="-1015.8" font-family="Arial" font-size="18.00" fill="#000000">keys</text>
</g>
<g id="clust5" class="cluster">
<title>cluster_github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificate</title>
<g id="a_clust5"><a xlink:title="type: github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificate">
<title>cluster_github.com/go&#45;i2p/common/key_certificate.KeyCertificate</title>
<g id="a_clust5"><a xlink:title="type: github.com/go&#45;i2p/common/key_certificate.KeyCertificate">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M299.7035,-859C299.7035,-859 398.8747,-859 398.8747,-859 404.8747,-859 410.8747,-865 410.8747,-871 410.8747,-871 410.8747,-986 410.8747,-986 410.8747,-992 404.8747,-998 398.8747,-998 398.8747,-998 299.7035,-998 299.7035,-998 293.7035,-998 287.7035,-992 287.7035,-986 287.7035,-986 287.7035,-871 287.7035,-871 287.7035,-865 293.7035,-859 299.7035,-859"/>
<text text-anchor="middle" x="349.2891" y="-867.5" font-family="Arial" font-size="15.00" fill="#222222">(KeyCertificate)</text>
</a>
@@ -49,26 +49,26 @@
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/keys.generateNewKey -->
<g id="node1" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/keys.generateNewKey</title>
<g id="a_node1"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/keys.generateNewKey | defined in routerinfo_keystore.go:70&#10;at routerinfo_keystore.go:72: calling [github.com/go&#45;i2p/go&#45;i2p/lib/crypto/ed25519.GenerateEd25519Key]">
<g id="a_node1"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/keys.generateNewKey | defined in routerinfo_keystore.go:71&#10;at routerinfo_keystore.go:73: calling [github.com/go&#45;i2p/crypto/ed25519.GenerateEd25519Key]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M397.9478,-52C397.9478,-52 300.6304,-52 300.6304,-52 294.6304,-52 288.6304,-46 288.6304,-40 288.6304,-40 288.6304,-28 288.6304,-28 288.6304,-22 294.6304,-16 300.6304,-16 300.6304,-16 397.9478,-16 397.9478,-16 403.9478,-16 409.9478,-22 409.9478,-28 409.9478,-28 409.9478,-40 409.9478,-40 409.9478,-46 403.9478,-52 397.9478,-52"/>
<text text-anchor="middle" x="349.2891" y="-29.8" font-family="Verdana" font-size="14.00" fill="#000000">generateNewKey</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/crypto/ed25519.GenerateEd25519Key -->
<!-- github.com/go&#45;i2p/crypto/ed25519.GenerateEd25519Key -->
<g id="node2" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/crypto/ed25519.GenerateEd25519Key</title>
<g id="a_node2"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/crypto/ed25519.GenerateEd25519Key | defined in ed25519.go:21">
<title>github.com/go&#45;i2p/crypto/ed25519.GenerateEd25519Key</title>
<g id="a_node2"><a xlink:title="github.com/go&#45;i2p/crypto/ed25519.GenerateEd25519Key | defined in utils.go:18">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M656.7807,-52C656.7807,-52 531.9997,-52 531.9997,-52 525.9997,-52 519.9997,-46 519.9997,-40 519.9997,-40 519.9997,-28 519.9997,-28 519.9997,-22 525.9997,-16 531.9997,-16 531.9997,-16 656.7807,-16 656.7807,-16 662.7807,-16 668.7807,-22 668.7807,-28 668.7807,-28 668.7807,-40 668.7807,-40 668.7807,-46 662.7807,-52 656.7807,-52"/>
<text text-anchor="middle" x="594.3902" y="-38.2" font-family="Verdana" font-size="14.00" fill="#000000">ed25519</text>
<text text-anchor="middle" x="594.3902" y="-21.4" font-family="Verdana" font-size="14.00" fill="#000000">GenerateEd25519Key</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/keys.generateNewKey&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/crypto/ed25519.GenerateEd25519Key -->
<g id="edge2" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/keys.generateNewKey&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/crypto/ed25519.GenerateEd25519Key</title>
<g id="a_edge2"><a xlink:title="at routerinfo_keystore.go:72: calling [github.com/go&#45;i2p/go&#45;i2p/lib/crypto/ed25519.GenerateEd25519Key]">
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/keys.generateNewKey&#45;&gt;github.com/go&#45;i2p/crypto/ed25519.GenerateEd25519Key -->
<g id="edge8" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/keys.generateNewKey&#45;&gt;github.com/go&#45;i2p/crypto/ed25519.GenerateEd25519Key</title>
<g id="a_edge8"><a xlink:title="at routerinfo_keystore.go:73: calling [github.com/go&#45;i2p/crypto/ed25519.GenerateEd25519Key]">
<path fill="none" stroke="#8b4513" d="M409.8759,-34C440.0665,-34 477.0656,-34 509.9856,-34"/>
<polygon fill="#8b4513" stroke="#8b4513" points="510.0592,-37.5001 520.0592,-34 510.0591,-30.5001 510.0592,-37.5001"/>
</a>
@@ -77,16 +77,16 @@
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/keys.NewRouterInfoKeystore -->
<g id="node3" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/keys.NewRouterInfoKeystore</title>
<g id="a_node3"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/keys.NewRouterInfoKeystore | defined in routerinfo_keystore.go:36&#10;at routerinfo_keystore.go:61: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewRouterTimestamper]&#10;at routerinfo_keystore.go:55: calling [github.com/go&#45;i2p/go&#45;i2p/lib/keys.loadExistingKey]&#10;at routerinfo_keystore.go:46: calling [github.com/go&#45;i2p/go&#45;i2p/lib/keys.generateNewKey]">
<g id="a_node3"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/keys.NewRouterInfoKeystore | defined in routerinfo_keystore.go:37&#10;at routerinfo_keystore.go:47: calling [github.com/go&#45;i2p/go&#45;i2p/lib/keys.generateNewKey]&#10;at routerinfo_keystore.go:62: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewRouterTimestamper]&#10;at routerinfo_keystore.go:56: calling [github.com/go&#45;i2p/go&#45;i2p/lib/keys.loadExistingKey]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M166.575,-113C166.575,-113 27.808,-113 27.808,-113 21.808,-113 15.808,-107 15.808,-101 15.808,-101 15.808,-89 15.808,-89 15.808,-83 21.808,-77 27.808,-77 27.808,-77 166.575,-77 166.575,-77 172.575,-77 178.575,-83 178.575,-89 178.575,-89 178.575,-101 178.575,-101 178.575,-107 172.575,-113 166.575,-113"/>
<text text-anchor="middle" x="97.1915" y="-90.8" font-family="Verdana" font-size="14.00" fill="#000000">NewRouterInfoKeystore</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/keys.NewRouterInfoKeystore&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/keys.generateNewKey -->
<g id="edge15" class="edge">
<g id="edge5" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/keys.NewRouterInfoKeystore&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/keys.generateNewKey</title>
<g id="a_edge15"><a xlink:title="at routerinfo_keystore.go:46: calling [github.com/go&#45;i2p/go&#45;i2p/lib/keys.generateNewKey]">
<g id="a_edge5"><a xlink:title="at routerinfo_keystore.go:47: calling [github.com/go&#45;i2p/go&#45;i2p/lib/keys.generateNewKey]">
<path fill="none" stroke="#000000" d="M171.8059,-76.9456C205.49,-68.795 245.0892,-59.2132 278.3268,-51.1707"/>
<polygon fill="#000000" stroke="#000000" points="279.5277,-54.4812 288.424,-48.7275 277.8814,-47.6776 279.5277,-54.4812"/>
</a>
@@ -103,9 +103,9 @@
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/keys.NewRouterInfoKeystore&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewRouterTimestamper -->
<g id="edge3" class="edge">
<g id="edge10" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/keys.NewRouterInfoKeystore&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewRouterTimestamper</title>
<g id="a_edge3"><a xlink:title="at routerinfo_keystore.go:61: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewRouterTimestamper]">
<g id="a_edge10"><a xlink:title="at routerinfo_keystore.go:62: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewRouterTimestamper]">
<path fill="none" stroke="#8b4513" d="M178.6922,-95C203.9647,-95 231.9791,-95 257.8783,-95"/>
<polygon fill="#8b4513" stroke="#8b4513" points="258.069,-98.5001 268.069,-95 258.0689,-91.5001 258.069,-98.5001"/>
</a>
@@ -114,16 +114,16 @@
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/keys.loadExistingKey -->
<g id="node5" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/keys.loadExistingKey</title>
<g id="a_node5"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/keys.loadExistingKey | defined in routerinfo_keystore.go:81">
<g id="a_node5"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/keys.loadExistingKey | defined in routerinfo_keystore.go:82">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M396.3845,-174C396.3845,-174 302.1937,-174 302.1937,-174 296.1937,-174 290.1937,-168 290.1937,-162 290.1937,-162 290.1937,-150 290.1937,-150 290.1937,-144 296.1937,-138 302.1937,-138 302.1937,-138 396.3845,-138 396.3845,-138 402.3845,-138 408.3845,-144 408.3845,-150 408.3845,-150 408.3845,-162 408.3845,-162 408.3845,-168 402.3845,-174 396.3845,-174"/>
<text text-anchor="middle" x="349.2891" y="-151.8" font-family="Verdana" font-size="14.00" fill="#000000">loadExistingKey</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/keys.NewRouterInfoKeystore&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/keys.loadExistingKey -->
<g id="edge4" class="edge">
<g id="edge11" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/keys.NewRouterInfoKeystore&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/keys.loadExistingKey</title>
<g id="a_edge4"><a xlink:title="at routerinfo_keystore.go:55: calling [github.com/go&#45;i2p/go&#45;i2p/lib/keys.loadExistingKey]">
<g id="a_edge11"><a xlink:title="at routerinfo_keystore.go:56: calling [github.com/go&#45;i2p/go&#45;i2p/lib/keys.loadExistingKey]">
<path fill="none" stroke="#000000" d="M171.8059,-113.0544C206.1638,-121.368 246.6757,-131.1707 280.3135,-139.31"/>
<polygon fill="#000000" stroke="#000000" points="279.5188,-142.7186 290.0615,-141.6687 281.1651,-135.915 279.5188,-142.7186"/>
</a>
@@ -139,50 +139,50 @@
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/common/data.NewIntegerFromInt -->
<!-- github.com/go&#45;i2p/common/data.NewIntegerFromInt -->
<g id="node7" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/common/data.NewIntegerFromInt</title>
<g id="a_node7"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/common/data.NewIntegerFromInt | defined in integer.go:68">
<title>github.com/go&#45;i2p/common/data.NewIntegerFromInt</title>
<g id="a_node7"><a xlink:title="github.com/go&#45;i2p/common/data.NewIntegerFromInt | defined in integer.go:61">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M405.2429,-521C405.2429,-521 293.3353,-521 293.3353,-521 287.3353,-521 281.3353,-515 281.3353,-509 281.3353,-509 281.3353,-497 281.3353,-497 281.3353,-491 287.3353,-485 293.3353,-485 293.3353,-485 405.2429,-485 405.2429,-485 411.2429,-485 417.2429,-491 417.2429,-497 417.2429,-497 417.2429,-509 417.2429,-509 417.2429,-515 411.2429,-521 405.2429,-521"/>
<text text-anchor="middle" x="349.2891" y="-507.2" font-family="Verdana" font-size="14.00" fill="#000000">data</text>
<text text-anchor="middle" x="349.2891" y="-490.4" font-family="Verdana" font-size="14.00" fill="#000000">NewIntegerFromInt</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/common/certificate.NewCertificateWithType -->
<!-- github.com/go&#45;i2p/common/certificate.NewCertificateWithType -->
<g id="node8" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/common/certificate.NewCertificateWithType</title>
<g id="a_node8"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/common/certificate.NewCertificateWithType | defined in certificate.go:252">
<title>github.com/go&#45;i2p/common/certificate.NewCertificateWithType</title>
<g id="a_node8"><a xlink:title="github.com/go&#45;i2p/common/certificate.NewCertificateWithType | defined in certificate_struct.go:79">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M420.5587,-582C420.5587,-582 278.0195,-582 278.0195,-582 272.0195,-582 266.0195,-576 266.0195,-570 266.0195,-570 266.0195,-558 266.0195,-558 266.0195,-552 272.0195,-546 278.0195,-546 278.0195,-546 420.5587,-546 420.5587,-546 426.5587,-546 432.5587,-552 432.5587,-558 432.5587,-558 432.5587,-570 432.5587,-570 432.5587,-576 426.5587,-582 420.5587,-582"/>
<text text-anchor="middle" x="349.2891" y="-568.2" font-family="Verdana" font-size="14.00" fill="#000000">certificate</text>
<text text-anchor="middle" x="349.2891" y="-551.4" font-family="Verdana" font-size="14.00" fill="#000000">NewCertificateWithType</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificateFromCertificate -->
<!-- github.com/go&#45;i2p/common/key_certificate.KeyCertificateFromCertificate -->
<g id="node9" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificateFromCertificate</title>
<g id="a_node9"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificateFromCertificate | defined in key_certificate.go:399">
<title>github.com/go&#45;i2p/common/key_certificate.KeyCertificateFromCertificate</title>
<g id="a_node9"><a xlink:title="github.com/go&#45;i2p/common/key_certificate.KeyCertificateFromCertificate | defined in key_certificate_struct.go:116">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M435.1014,-643C435.1014,-643 263.4768,-643 263.4768,-643 257.4768,-643 251.4768,-637 251.4768,-631 251.4768,-631 251.4768,-619 251.4768,-619 251.4768,-613 257.4768,-607 263.4768,-607 263.4768,-607 435.1014,-607 435.1014,-607 441.1014,-607 447.1014,-613 447.1014,-619 447.1014,-619 447.1014,-631 447.1014,-631 447.1014,-637 441.1014,-643 435.1014,-643"/>
<text text-anchor="middle" x="349.2891" y="-629.2" font-family="Verdana" font-size="14.00" fill="#000000">key_certificate</text>
<text text-anchor="middle" x="349.2891" y="-612.4" font-family="Verdana" font-size="14.00" fill="#000000">KeyCertificateFromCertificate</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/common/router_identity.NewRouterIdentity -->
<!-- github.com/go&#45;i2p/common/router_identity.NewRouterIdentity -->
<g id="node10" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/common/router_identity.NewRouterIdentity</title>
<g id="a_node10"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/common/router_identity.NewRouterIdentity | defined in router_identity.go:55">
<title>github.com/go&#45;i2p/common/router_identity.NewRouterIdentity</title>
<g id="a_node10"><a xlink:title="github.com/go&#45;i2p/common/router_identity.NewRouterIdentity | defined in router_identity_struct.go:37">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M403.3663,-704C403.3663,-704 295.2119,-704 295.2119,-704 289.2119,-704 283.2119,-698 283.2119,-692 283.2119,-692 283.2119,-680 283.2119,-680 283.2119,-674 289.2119,-668 295.2119,-668 295.2119,-668 403.3663,-668 403.3663,-668 409.3663,-668 415.3663,-674 415.3663,-680 415.3663,-680 415.3663,-692 415.3663,-692 415.3663,-698 409.3663,-704 403.3663,-704"/>
<text text-anchor="middle" x="349.2891" y="-690.2" font-family="Verdana" font-size="14.00" fill="#000000">router_identity</text>
<text text-anchor="middle" x="349.2891" y="-673.4" font-family="Verdana" font-size="14.00" fill="#000000">NewRouterIdentity</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.NewRouterInfo -->
<!-- github.com/go&#45;i2p/common/router_info.NewRouterInfo -->
<g id="node11" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.NewRouterInfo</title>
<g id="a_node11"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.NewRouterInfo | defined in router_info.go:372">
<title>github.com/go&#45;i2p/common/router_info.NewRouterInfo</title>
<g id="a_node11"><a xlink:title="github.com/go&#45;i2p/common/router_info.NewRouterInfo | defined in router_info_struct.go:116">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M393.1406,-765C393.1406,-765 305.4376,-765 305.4376,-765 299.4376,-765 293.4376,-759 293.4376,-753 293.4376,-753 293.4376,-741 293.4376,-741 293.4376,-735 299.4376,-729 305.4376,-729 305.4376,-729 393.1406,-729 393.1406,-729 399.1406,-729 405.1406,-735 405.1406,-741 405.1406,-741 405.1406,-753 405.1406,-753 405.1406,-759 399.1406,-765 393.1406,-765"/>
<text text-anchor="middle" x="349.2891" y="-751.2" font-family="Verdana" font-size="14.00" fill="#000000">router_info</text>
<text text-anchor="middle" x="349.2891" y="-734.4" font-family="Verdana" font-size="14.00" fill="#000000">NewRouterInfo</text>
@@ -192,7 +192,7 @@
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.KeyStoreImpl).StoreKeys -->
<g id="node12" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.KeyStoreImpl).StoreKeys</title>
<g id="a_node12"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.KeyStoreImpl).StoreKeys | defined in types.go:56&#10;at types.go:65: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.KeyStoreImpl).KeyID]">
<g id="a_node12"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.KeyStoreImpl).StoreKeys | defined in types.go:57&#10;at types.go:66: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.KeyStoreImpl).KeyID]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M126.5063,-252C126.5063,-252 67.8767,-252 67.8767,-252 61.8767,-252 55.8767,-246 55.8767,-240 55.8767,-240 55.8767,-228 55.8767,-228 55.8767,-222 61.8767,-216 67.8767,-216 67.8767,-216 126.5063,-216 126.5063,-216 132.5063,-216 138.5063,-222 138.5063,-228 138.5063,-228 138.5063,-240 138.5063,-240 138.5063,-246 132.5063,-252 126.5063,-252"/>
<text text-anchor="middle" x="97.1915" y="-229.8" font-family="Verdana" font-size="14.00" fill="#000000">StoreKeys</text>
</a>
@@ -201,16 +201,16 @@
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.KeyStoreImpl).KeyID -->
<g id="node13" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.KeyStoreImpl).KeyID</title>
<g id="a_node13"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.KeyStoreImpl).KeyID | defined in types.go:33">
<g id="a_node13"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.KeyStoreImpl).KeyID | defined in types.go:34">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M368.3776,-252C368.3776,-252 330.2006,-252 330.2006,-252 324.2006,-252 318.2006,-246 318.2006,-240 318.2006,-240 318.2006,-228 318.2006,-228 318.2006,-222 324.2006,-216 330.2006,-216 330.2006,-216 368.3776,-216 368.3776,-216 374.3776,-216 380.3776,-222 380.3776,-228 380.3776,-228 380.3776,-240 380.3776,-240 380.3776,-246 374.3776,-252 368.3776,-252"/>
<text text-anchor="middle" x="349.2891" y="-229.8" font-family="Verdana" font-size="14.00" fill="#000000">KeyID</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.KeyStoreImpl).StoreKeys&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.KeyStoreImpl).KeyID -->
<g id="edge6" class="edge">
<g id="edge15" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.KeyStoreImpl).StoreKeys&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.KeyStoreImpl).KeyID</title>
<g id="a_edge6"><a xlink:title="at types.go:65: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.KeyStoreImpl).KeyID]">
<g id="a_edge15"><a xlink:title="at types.go:66: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.KeyStoreImpl).KeyID]">
<path fill="none" stroke="#000000" d="M138.538,-234C185.2893,-234 260.9744,-234 307.789,-234"/>
<polygon fill="#000000" stroke="#000000" points="307.8904,-237.5001 317.8903,-234 307.8903,-230.5001 307.8904,-237.5001"/>
</a>
@@ -219,7 +219,7 @@
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).StoreKeys -->
<g id="node14" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).StoreKeys</title>
<g id="a_node14"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).StoreKeys | defined in routerinfo_keystore.go:94&#10;at routerinfo_keystore.go:102: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).KeyID]">
<g id="a_node14"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).StoreKeys | defined in routerinfo_keystore.go:95&#10;at routerinfo_keystore.go:103: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).KeyID]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M126.5063,-338C126.5063,-338 67.8767,-338 67.8767,-338 61.8767,-338 55.8767,-332 55.8767,-326 55.8767,-326 55.8767,-314 55.8767,-314 55.8767,-308 61.8767,-302 67.8767,-302 67.8767,-302 126.5063,-302 126.5063,-302 132.5063,-302 138.5063,-308 138.5063,-314 138.5063,-314 138.5063,-326 138.5063,-326 138.5063,-332 132.5063,-338 126.5063,-338"/>
<text text-anchor="middle" x="97.1915" y="-315.8" font-family="Verdana" font-size="14.00" fill="#000000">StoreKeys</text>
</a>
@@ -228,16 +228,16 @@
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).KeyID -->
<g id="node15" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).KeyID</title>
<g id="a_node15"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).KeyID | defined in routerinfo_keystore.go:106">
<g id="a_node15"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).KeyID | defined in routerinfo_keystore.go:107">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M368.3776,-338C368.3776,-338 330.2006,-338 330.2006,-338 324.2006,-338 318.2006,-332 318.2006,-326 318.2006,-326 318.2006,-314 318.2006,-314 318.2006,-308 324.2006,-302 330.2006,-302 330.2006,-302 368.3776,-302 368.3776,-302 374.3776,-302 380.3776,-308 380.3776,-314 380.3776,-314 380.3776,-326 380.3776,-326 380.3776,-332 374.3776,-338 368.3776,-338"/>
<text text-anchor="middle" x="349.2891" y="-315.8" font-family="Verdana" font-size="14.00" fill="#000000">KeyID</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).StoreKeys&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).KeyID -->
<g id="edge7" class="edge">
<g id="edge4" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).StoreKeys&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).KeyID</title>
<g id="a_edge7"><a xlink:title="at routerinfo_keystore.go:102: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).KeyID]">
<g id="a_edge4"><a xlink:title="at routerinfo_keystore.go:103: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).KeyID]">
<path fill="none" stroke="#000000" d="M138.538,-320C185.2893,-320 260.9744,-320 307.789,-320"/>
<polygon fill="#000000" stroke="#000000" points="307.8904,-323.5001 317.8903,-320 307.8903,-316.5001 307.8904,-323.5001"/>
</a>
@@ -246,61 +246,61 @@
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo -->
<g id="node16" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo</title>
<g id="a_node16"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo | defined in routerinfo_keystore.go:120&#10;at routerinfo_keystore.go:161: calling [github.com/go&#45;i2p/go&#45;i2p/lib/common/router_identity.NewRouterIdentity]&#10;at routerinfo_keystore.go:122: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).GetKeys]&#10;at routerinfo_keystore.go:140: calling [github.com/go&#45;i2p/go&#45;i2p/lib/common/certificate.NewCertificateWithType]&#10;at routerinfo_keystore.go:172: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).GetCurrentTime]&#10;at routerinfo_keystore.go:124: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:131: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:135: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:142: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:148: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:157: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:168: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:189: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:146: calling [github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificateFromCertificate]&#10;at routerinfo_keystore.go:151: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificate).CryptoSize]&#10;at routerinfo_keystore.go:152: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificate).SignatureSize]&#10;at routerinfo_keystore.go:180: calling [github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.NewRouterInfo]&#10;at routerinfo_keystore.go:129: calling [github.com/go&#45;i2p/go&#45;i2p/lib/common/data.NewIntegerFromInt]&#10;at routerinfo_keystore.go:133: calling [github.com/go&#45;i2p/go&#45;i2p/lib/common/data.NewIntegerFromInt]">
<g id="a_node16"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo | defined in routerinfo_keystore.go:127&#10;at routerinfo_keystore.go:153: calling [github.com/go&#45;i2p/common/key_certificate.KeyCertificateFromCertificate]&#10;at routerinfo_keystore.go:168: calling [github.com/go&#45;i2p/common/router_identity.NewRouterIdentity]&#10;at routerinfo_keystore.go:179: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).GetCurrentTime]&#10;at routerinfo_keystore.go:136: calling [github.com/go&#45;i2p/common/data.NewIntegerFromInt]&#10;at routerinfo_keystore.go:140: calling [github.com/go&#45;i2p/common/data.NewIntegerFromInt]&#10;at routerinfo_keystore.go:159: calling [(github.com/go&#45;i2p/common/key_certificate.KeyCertificate).SignatureSize]&#10;at routerinfo_keystore.go:147: calling [github.com/go&#45;i2p/common/certificate.NewCertificateWithType]&#10;at routerinfo_keystore.go:131: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:138: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:142: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:149: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:155: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:164: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:175: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:196: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:158: calling [(github.com/go&#45;i2p/common/key_certificate.KeyCertificate).CryptoSize]&#10;at routerinfo_keystore.go:187: calling [github.com/go&#45;i2p/common/router_info.NewRouterInfo]&#10;at routerinfo_keystore.go:129: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).GetKeys]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M155.0528,-399C155.0528,-399 39.3302,-399 39.3302,-399 33.3302,-399 27.3302,-393 27.3302,-387 27.3302,-387 27.3302,-375 27.3302,-375 27.3302,-369 33.3302,-363 39.3302,-363 39.3302,-363 155.0528,-363 155.0528,-363 161.0528,-363 167.0528,-369 167.0528,-375 167.0528,-375 167.0528,-387 167.0528,-387 167.0528,-393 161.0528,-399 155.0528,-399"/>
<text text-anchor="middle" x="97.1915" y="-376.8" font-family="Verdana" font-size="14.00" fill="#000000">ConstructRouterInfo</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/samber/oops.Errorf -->
<g id="edge10" class="edge">
<g id="edge12" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/samber/oops.Errorf</title>
<g id="a_edge10"><a xlink:title="at routerinfo_keystore.go:124: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:131: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:135: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:142: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:148: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:157: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:168: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:189: calling [github.com/samber/oops.Errorf]">
<g id="a_edge12"><a xlink:title="at routerinfo_keystore.go:131: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:138: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:142: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:149: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:155: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:164: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:175: calling [github.com/samber/oops.Errorf]&#10;at routerinfo_keystore.go:196: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M167.08,-397.9109C213.1652,-409.0621 271.84,-423.2597 309.9668,-432.4852"/>
<polygon fill="#8b4513" stroke="#8b4513" points="309.6054,-435.9987 320.1481,-434.9488 311.2518,-429.195 309.6054,-435.9987"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/common/data.NewIntegerFromInt -->
<g id="edge16" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/common/data.NewIntegerFromInt</title>
<g id="a_edge16"><a xlink:title="at routerinfo_keystore.go:129: calling [github.com/go&#45;i2p/go&#45;i2p/lib/common/data.NewIntegerFromInt]&#10;at routerinfo_keystore.go:133: calling [github.com/go&#45;i2p/go&#45;i2p/lib/common/data.NewIntegerFromInt]">
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/common/data.NewIntegerFromInt -->
<g id="edge6" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/common/data.NewIntegerFromInt</title>
<g id="a_edge6"><a xlink:title="at routerinfo_keystore.go:136: calling [github.com/go&#45;i2p/common/data.NewIntegerFromInt]&#10;at routerinfo_keystore.go:140: calling [github.com/go&#45;i2p/common/data.NewIntegerFromInt]">
<path fill="none" stroke="#8b4513" d="M123.1572,-399.1526C152.9874,-419.3634 203.9423,-451.9481 251.383,-473 258.3525,-476.0928 265.735,-478.9913 273.1963,-481.6739"/>
<polygon fill="#8b4513" stroke="#8b4513" points="272.0695,-484.9875 282.6643,-484.9547 274.3614,-478.3734 272.0695,-484.9875"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/common/certificate.NewCertificateWithType -->
<g id="edge8" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/common/certificate.NewCertificateWithType</title>
<g id="a_edge8"><a xlink:title="at routerinfo_keystore.go:140: calling [github.com/go&#45;i2p/go&#45;i2p/lib/common/certificate.NewCertificateWithType]">
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/common/certificate.NewCertificateWithType -->
<g id="edge9" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/common/certificate.NewCertificateWithType</title>
<g id="a_edge9"><a xlink:title="at routerinfo_keystore.go:147: calling [github.com/go&#45;i2p/common/certificate.NewCertificateWithType]">
<path fill="none" stroke="#8b4513" d="M110.5872,-399.178C135.0387,-431.0938 190.0671,-497.2932 251.383,-534 256.3177,-536.9541 261.5687,-539.6407 266.9773,-542.0802"/>
<polygon fill="#8b4513" stroke="#8b4513" points="265.6254,-545.3085 276.2004,-545.9561 268.3373,-538.8552 265.6254,-545.3085"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificateFromCertificate -->
<g id="edge11" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificateFromCertificate</title>
<g id="a_edge11"><a xlink:title="at routerinfo_keystore.go:146: calling [github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificateFromCertificate]">
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/common/key_certificate.KeyCertificateFromCertificate -->
<g id="edge1" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/common/key_certificate.KeyCertificateFromCertificate</title>
<g id="a_edge1"><a xlink:title="at routerinfo_keystore.go:153: calling [github.com/go&#45;i2p/common/key_certificate.KeyCertificateFromCertificate]">
<path fill="none" stroke="#8b4513" d="M105.2684,-399.2715C124.4441,-440.5391 176.7586,-541.5127 251.383,-595 255.2437,-597.7672 259.365,-600.2835 263.6505,-602.5712"/>
<polygon fill="#8b4513" stroke="#8b4513" points="262.1237,-605.7207 272.6467,-606.9531 265.1891,-599.4275 262.1237,-605.7207"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/common/router_identity.NewRouterIdentity -->
<g id="edge1" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/common/router_identity.NewRouterIdentity</title>
<g id="a_edge1"><a xlink:title="at routerinfo_keystore.go:161: calling [github.com/go&#45;i2p/go&#45;i2p/lib/common/router_identity.NewRouterIdentity]">
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/common/router_identity.NewRouterIdentity -->
<g id="edge2" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/common/router_identity.NewRouterIdentity</title>
<g id="a_edge2"><a xlink:title="at routerinfo_keystore.go:168: calling [github.com/go&#45;i2p/common/router_identity.NewRouterIdentity]">
<path fill="none" stroke="#8b4513" d="M102.1769,-399.1952C116.5795,-448.3171 162.9659,-584.7115 251.383,-656 258.0476,-661.3735 265.6693,-665.787 273.6522,-669.4114"/>
<polygon fill="#8b4513" stroke="#8b4513" points="272.5737,-672.7521 283.1536,-673.314 275.2333,-666.277 272.5737,-672.7521"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.NewRouterInfo -->
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/common/router_info.NewRouterInfo -->
<g id="edge14" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.NewRouterInfo</title>
<g id="a_edge14"><a xlink:title="at routerinfo_keystore.go:180: calling [github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.NewRouterInfo]">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;github.com/go&#45;i2p/common/router_info.NewRouterInfo</title>
<g id="a_edge14"><a xlink:title="at routerinfo_keystore.go:187: calling [github.com/go&#45;i2p/common/router_info.NewRouterInfo]">
<path fill="none" stroke="#8b4513" d="M100.1446,-399.0269C110.2618,-454.9599 148.7515,-627.1761 251.383,-717 260.5801,-725.0494 271.8986,-730.9391 283.5356,-735.2484"/>
<polygon fill="#8b4513" stroke="#8b4513" points="282.7525,-738.6764 293.346,-738.5094 284.9605,-732.0337 282.7525,-738.6764"/>
</a>
@@ -309,16 +309,16 @@
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).GetKeys -->
<g id="node17" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).GetKeys</title>
<g id="a_node17"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).GetKeys | defined in routerinfo_keystore.go:86">
<g id="a_node17"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).GetKeys | defined in routerinfo_keystore.go:87">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M373.7667,-399C373.7667,-399 324.8115,-399 324.8115,-399 318.8115,-399 312.8115,-393 312.8115,-387 312.8115,-387 312.8115,-375 312.8115,-375 312.8115,-369 318.8115,-363 324.8115,-363 324.8115,-363 373.7667,-363 373.7667,-363 379.7667,-363 385.7667,-369 385.7667,-375 385.7667,-375 385.7667,-387 385.7667,-387 385.7667,-393 379.7667,-399 373.7667,-399"/>
<text text-anchor="middle" x="349.2891" y="-376.8" font-family="Verdana" font-size="14.00" fill="#000000">GetKeys</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).GetKeys -->
<g id="edge5" class="edge">
<g id="edge16" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).GetKeys</title>
<g id="a_edge5"><a xlink:title="at routerinfo_keystore.go:122: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).GetKeys]">
<g id="a_edge16"><a xlink:title="at routerinfo_keystore.go:129: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).GetKeys]">
<path fill="none" stroke="#000000" d="M167.08,-381C210.2349,-381 264.4294,-381 302.4534,-381"/>
<polygon fill="#000000" stroke="#000000" points="302.7267,-384.5001 312.7267,-381 302.7266,-377.5001 302.7267,-384.5001"/>
</a>
@@ -335,47 +335,47 @@
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).GetCurrentTime -->
<g id="edge9" class="edge">
<g id="edge3" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).GetCurrentTime</title>
<g id="a_edge9"><a xlink:title="at routerinfo_keystore.go:172: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).GetCurrentTime]">
<g id="a_edge3"><a xlink:title="at routerinfo_keystore.go:179: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).GetCurrentTime]">
<path fill="none" stroke="#8b4513" d="M98.3907,-399.4173C103.1159,-459.3916 124.8601,-652.392 214.383,-777 229.877,-798.5663 255.9295,-810.4922 281.0313,-817.0679"/>
<polygon fill="#8b4513" stroke="#8b4513" points="280.4133,-820.5182 290.9504,-819.4138 282.0244,-813.7061 280.4133,-820.5182"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificate).CryptoSize -->
<!-- (github.com/go&#45;i2p/common/key_certificate.KeyCertificate).CryptoSize -->
<g id="node19" class="node">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificate).CryptoSize</title>
<g id="a_node19"><a xlink:title="(github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificate).CryptoSize | defined in key_certificate.go:340">
<title>(github.com/go&#45;i2p/common/key_certificate.KeyCertificate).CryptoSize</title>
<g id="a_node19"><a xlink:title="(github.com/go&#45;i2p/common/key_certificate.KeyCertificate).CryptoSize | defined in key_certificate_struct.go:418">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M390.9604,-929C390.9604,-929 307.6178,-929 307.6178,-929 301.6178,-929 295.6178,-923 295.6178,-917 295.6178,-917 295.6178,-905 295.6178,-905 295.6178,-899 301.6178,-893 307.6178,-893 307.6178,-893 390.9604,-893 390.9604,-893 396.9604,-893 402.9604,-899 402.9604,-905 402.9604,-905 402.9604,-917 402.9604,-917 402.9604,-923 396.9604,-929 390.9604,-929"/>
<text text-anchor="middle" x="349.2891" y="-915.2" font-family="Verdana" font-size="14.00" fill="#000000">key_certificate</text>
<text text-anchor="middle" x="349.2891" y="-898.4" font-family="Verdana" font-size="14.00" fill="#000000">CryptoSize</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificate).CryptoSize -->
<g id="edge12" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificate).CryptoSize</title>
<g id="a_edge12"><a xlink:title="at routerinfo_keystore.go:151: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificate).CryptoSize]">
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;(github.com/go&#45;i2p/common/key_certificate.KeyCertificate).CryptoSize -->
<g id="edge13" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;(github.com/go&#45;i2p/common/key_certificate.KeyCertificate).CryptoSize</title>
<g id="a_edge13"><a xlink:title="at routerinfo_keystore.go:158: calling [(github.com/go&#45;i2p/common/key_certificate.KeyCertificate).CryptoSize]">
<path fill="none" stroke="#8b4513" d="M100.8634,-399.2164C117.0358,-477.8466 184.1015,-787.3271 251.383,-857 263.5568,-869.6065 279.3207,-880.0373 294.6285,-888.2592"/>
<polygon fill="#8b4513" stroke="#8b4513" points="293.0637,-891.3901 303.5582,-892.8446 296.2613,-885.1631 293.0637,-891.3901"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificate).SignatureSize -->
<!-- (github.com/go&#45;i2p/common/key_certificate.KeyCertificate).SignatureSize -->
<g id="node20" class="node">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificate).SignatureSize</title>
<g id="a_node20"><a xlink:title="(github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificate).SignatureSize | defined in key_certificate.go:312">
<title>(github.com/go&#45;i2p/common/key_certificate.KeyCertificate).SignatureSize</title>
<g id="a_node20"><a xlink:title="(github.com/go&#45;i2p/common/key_certificate.KeyCertificate).SignatureSize | defined in key_certificate_struct.go:386">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M390.9604,-990C390.9604,-990 307.6178,-990 307.6178,-990 301.6178,-990 295.6178,-984 295.6178,-978 295.6178,-978 295.6178,-966 295.6178,-966 295.6178,-960 301.6178,-954 307.6178,-954 307.6178,-954 390.9604,-954 390.9604,-954 396.9604,-954 402.9604,-960 402.9604,-966 402.9604,-966 402.9604,-978 402.9604,-978 402.9604,-984 396.9604,-990 390.9604,-990"/>
<text text-anchor="middle" x="349.2891" y="-976.2" font-family="Verdana" font-size="14.00" fill="#000000">key_certificate</text>
<text text-anchor="middle" x="349.2891" y="-959.4" font-family="Verdana" font-size="14.00" fill="#000000">SignatureSize</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificate).SignatureSize -->
<g id="edge13" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificate).SignatureSize</title>
<g id="a_edge13"><a xlink:title="at routerinfo_keystore.go:152: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/key_certificate.KeyCertificate).SignatureSize]">
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;(github.com/go&#45;i2p/common/key_certificate.KeyCertificate).SignatureSize -->
<g id="edge7" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/keys.RouterInfoKeystore).ConstructRouterInfo&#45;&gt;(github.com/go&#45;i2p/common/key_certificate.KeyCertificate).SignatureSize</title>
<g id="a_edge7"><a xlink:title="at routerinfo_keystore.go:159: calling [(github.com/go&#45;i2p/common/key_certificate.KeyCertificate).SignatureSize]">
<path fill="none" stroke="#8b4513" d="M99.814,-399.2223C112.7051,-486.4192 171.9458,-860.2164 251.383,-942 260.7106,-951.6031 273.0223,-958.1524 285.7555,-962.6135"/>
<polygon fill="#8b4513" stroke="#8b4513" points="284.9448,-966.0262 295.5324,-965.634 287.011,-959.3381 284.9448,-966.0262"/>
</a>

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

@@ -1,282 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: gocallvis Pages: 1 -->
<svg width="595pt" height="495pt"
viewBox="0.00 0.00 595.09 495.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(0 495)">
<title>gocallvis</title>
<polygon fill="#d3d3d3" stroke="transparent" points="0,0 0,-495 595.0912,-495 595.0912,0 0,0"/>
<g id="clust1" class="cluster">
<title>cluster_focus</title>
<polygon fill="#e6ecfa" stroke="#000000" stroke-width=".5" points="0,-8 0,-487 587.0912,-487 587.0912,-8 0,-8"/>
<text text-anchor="middle" x="293.5456" y="-466.8" font-family="Arial" font-size="18.00" fill="#000000">messages</text>
</g>
<g id="clust9" class="cluster">
<title>cluster_github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.RequestOptions</title>
<g id="a_clust9"><a xlink:title="type: github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.RequestOptions">
<path fill="#b0c4de" stroke="#000000" stroke-width=".5" d="M288.2048,-310C288.2048,-310 397.2048,-310 397.2048,-310 403.2048,-310 409.2048,-316 409.2048,-322 409.2048,-322 409.2048,-376 409.2048,-376 409.2048,-382 403.2048,-388 397.2048,-388 397.2048,-388 288.2048,-388 288.2048,-388 282.2048,-388 276.2048,-382 276.2048,-376 276.2048,-376 276.2048,-322 276.2048,-322 276.2048,-316 282.2048,-310 288.2048,-310"/>
<text text-anchor="middle" x="342.7048" y="-318.5" font-family="Arial" font-size="15.00" fill="#222222">(RequestOptions)</text>
</a>
</g>
</g>
<g id="clust8" class="cluster">
<title>cluster_github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer</title>
<g id="a_clust8"><a xlink:title="type: github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M519.2048,-224C519.2048,-224 567.0912,-224 567.0912,-224 573.0912,-224 579.0912,-230 579.0912,-236 579.0912,-236 579.0912,-290 579.0912,-290 579.0912,-296 573.0912,-302 567.0912,-302 567.0912,-302 519.2048,-302 519.2048,-302 513.2048,-302 507.2048,-296 507.2048,-290 507.2048,-290 507.2048,-236 507.2048,-236 507.2048,-230 513.2048,-224 519.2048,-224"/>
<text text-anchor="middle" x="543.148" y="-232.5" font-family="Arial" font-size="15.00" fill="#222222">(Integer)</text>
</a>
</g>
</g>
<g id="clust7" class="cluster">
<title>cluster_github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Date</title>
<g id="a_clust7"><a xlink:title="type: github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Date">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M519.2048,-310C519.2048,-310 567.0912,-310 567.0912,-310 573.0912,-310 579.0912,-316 579.0912,-322 579.0912,-322 579.0912,-376 579.0912,-376 579.0912,-382 573.0912,-388 567.0912,-388 567.0912,-388 519.2048,-388 519.2048,-388 513.2048,-388 507.2048,-382 507.2048,-376 507.2048,-376 507.2048,-322 507.2048,-322 507.2048,-316 513.2048,-310 519.2048,-310"/>
<text text-anchor="middle" x="543.148" y="-318.5" font-family="Arial" font-size="15.00" fill="#222222">(Date)</text>
</a>
</g>
</g>
<g id="clust6" class="cluster">
<title>cluster_*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionRequest</title>
<g id="a_clust6"><a xlink:title="type: *github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionRequest">
<path fill="#b0c4de" stroke="#000000" stroke-width=".5" d="M27,-310C27,-310 143.2048,-310 143.2048,-310 149.2048,-310 155.2048,-316 155.2048,-322 155.2048,-322 155.2048,-437 155.2048,-437 155.2048,-443 149.2048,-449 143.2048,-449 143.2048,-449 27,-449 27,-449 21,-449 15,-443 15,-437 15,-437 15,-322 15,-322 15,-316 21,-310 27,-310"/>
<text text-anchor="middle" x="85.1024" y="-318.5" font-family="Arial" font-size="15.00" fill="#222222">(*SessionRequest)</text>
</a>
</g>
</g>
<g id="clust5" class="cluster">
<title>cluster_*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionCreated</title>
<g id="a_clust5"><a xlink:title="type: *github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionCreated">
<path fill="#b0c4de" stroke="#000000" stroke-width=".5" d="M28,-163C28,-163 142.2048,-163 142.2048,-163 148.2048,-163 154.2048,-169 154.2048,-175 154.2048,-175 154.2048,-290 154.2048,-290 154.2048,-296 148.2048,-302 142.2048,-302 142.2048,-302 28,-302 28,-302 22,-302 16,-296 16,-290 16,-290 16,-175 16,-175 16,-169 22,-163 28,-163"/>
<text text-anchor="middle" x="85.1024" y="-171.5" font-family="Arial" font-size="15.00" fill="#222222">(*SessionCreated)</text>
</a>
</g>
</g>
<g id="clust4" class="cluster">
<title>cluster_*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionConfirmed</title>
<g id="a_clust4"><a xlink:title="type: *github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionConfirmed">
<path fill="#b0c4de" stroke="#000000" stroke-width=".5" d="M20,-16C20,-16 150.2048,-16 150.2048,-16 156.2048,-16 162.2048,-22 162.2048,-28 162.2048,-28 162.2048,-143 162.2048,-143 162.2048,-149 156.2048,-155 150.2048,-155 150.2048,-155 20,-155 20,-155 14,-155 8,-149 8,-143 8,-143 8,-28 8,-28 8,-22 14,-16 20,-16"/>
<text text-anchor="middle" x="85.1024" y="-24.5" font-family="Arial" font-size="15.00" fill="#222222">(*SessionConfirmed)</text>
</a>
</g>
</g>
<g id="clust3" class="cluster">
<title>cluster_*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.CreatedOptions</title>
<g id="a_clust3"><a xlink:title="type: *github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.CreatedOptions">
<path fill="#b0c4de" stroke="#000000" stroke-width=".5" d="M286.2048,-224C286.2048,-224 398.2048,-224 398.2048,-224 404.2048,-224 410.2048,-230 410.2048,-236 410.2048,-236 410.2048,-290 410.2048,-290 410.2048,-296 404.2048,-302 398.2048,-302 398.2048,-302 286.2048,-302 286.2048,-302 280.2048,-302 274.2048,-296 274.2048,-290 274.2048,-290 274.2048,-236 274.2048,-236 274.2048,-230 280.2048,-224 286.2048,-224"/>
<text text-anchor="middle" x="342.2048" y="-232.5" font-family="Arial" font-size="15.00" fill="#222222">(*CreatedOptions)</text>
</a>
</g>
</g>
<g id="clust2" class="cluster">
<title>cluster_*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.ConfirmedOptions</title>
<g id="a_clust2"><a xlink:title="type: *github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.ConfirmedOptions">
<path fill="#b0c4de" stroke="#000000" stroke-width=".5" d="M278.2048,-77C278.2048,-77 406.2048,-77 406.2048,-77 412.2048,-77 418.2048,-83 418.2048,-89 418.2048,-89 418.2048,-143 418.2048,-143 418.2048,-149 412.2048,-155 406.2048,-155 406.2048,-155 278.2048,-155 278.2048,-155 272.2048,-155 266.2048,-149 266.2048,-143 266.2048,-143 266.2048,-89 266.2048,-89 266.2048,-83 272.2048,-77 278.2048,-77"/>
<text text-anchor="middle" x="342.2048" y="-85.5" font-family="Arial" font-size="15.00" fill="#222222">(*ConfirmedOptions)</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.ConfirmedOptions).Data -->
<g id="node1" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.ConfirmedOptions).Data</title>
<g id="a_node1"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.ConfirmedOptions).Data | defined in session_confirmed.go:293&#10;at session_confirmed.go:295: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M357.2048,-147C357.2048,-147 327.2048,-147 327.2048,-147 321.2048,-147 315.2048,-141 315.2048,-135 315.2048,-135 315.2048,-123 315.2048,-123 315.2048,-117 321.2048,-111 327.2048,-111 327.2048,-111 357.2048,-111 357.2048,-111 363.2048,-111 369.2048,-117 369.2048,-123 369.2048,-123 369.2048,-135 369.2048,-135 369.2048,-141 363.2048,-147 357.2048,-147"/>
<text text-anchor="middle" x="342.2048" y="-124.8" font-family="Verdana" font-size="14.00" fill="#000000">Data</text>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes -->
<g id="node10" class="node">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes</title>
<g id="a_node10"><a xlink:title="(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes | defined in integer.go:27">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M559.0345,-294C559.0345,-294 527.2615,-294 527.2615,-294 521.2615,-294 515.2615,-288 515.2615,-282 515.2615,-282 515.2615,-270 515.2615,-270 515.2615,-264 521.2615,-258 527.2615,-258 527.2615,-258 559.0345,-258 559.0345,-258 565.0345,-258 571.0345,-264 571.0345,-270 571.0345,-270 571.0345,-282 571.0345,-282 571.0345,-288 565.0345,-294 559.0345,-294"/>
<text text-anchor="middle" x="543.148" y="-280.2" font-family="Verdana" font-size="14.00" fill="#000000">data</text>
<text text-anchor="middle" x="543.148" y="-263.4" font-family="Verdana" font-size="14.00" fill="#000000">Bytes</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.ConfirmedOptions).Data&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes -->
<g id="edge6" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.ConfirmedOptions).Data&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes</title>
<g id="a_edge6"><a xlink:title="at session_confirmed.go:295: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes]">
<path fill="none" stroke="#8b4513" d="M366.8444,-147.0251C402.8497,-173.3648 469.9184,-222.4289 510.1501,-251.8604"/>
<polygon fill="#8b4513" stroke="#8b4513" points="508.1694,-254.748 518.3069,-257.8275 512.3025,-249.0983 508.1694,-254.748"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.CreatedOptions).Data -->
<g id="node2" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.CreatedOptions).Data</title>
<g id="a_node2"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.CreatedOptions).Data | defined in session_created.go:302&#10;at session_created.go:304: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes]&#10;at session_created.go:305: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Date).Bytes]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M357.2048,-294C357.2048,-294 327.2048,-294 327.2048,-294 321.2048,-294 315.2048,-288 315.2048,-282 315.2048,-282 315.2048,-270 315.2048,-270 315.2048,-264 321.2048,-258 327.2048,-258 327.2048,-258 357.2048,-258 357.2048,-258 363.2048,-258 369.2048,-264 369.2048,-270 369.2048,-270 369.2048,-282 369.2048,-282 369.2048,-288 363.2048,-294 357.2048,-294"/>
<text text-anchor="middle" x="342.2048" y="-271.8" font-family="Verdana" font-size="14.00" fill="#000000">Data</text>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Date).Bytes -->
<g id="node9" class="node">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Date).Bytes</title>
<g id="a_node9"><a xlink:title="(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Date).Bytes | defined in date.go:35">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M559.0345,-380C559.0345,-380 527.2615,-380 527.2615,-380 521.2615,-380 515.2615,-374 515.2615,-368 515.2615,-368 515.2615,-356 515.2615,-356 515.2615,-350 521.2615,-344 527.2615,-344 527.2615,-344 559.0345,-344 559.0345,-344 565.0345,-344 571.0345,-350 571.0345,-356 571.0345,-356 571.0345,-368 571.0345,-368 571.0345,-374 565.0345,-380 559.0345,-380"/>
<text text-anchor="middle" x="543.148" y="-366.2" font-family="Verdana" font-size="14.00" fill="#000000">data</text>
<text text-anchor="middle" x="543.148" y="-349.4" font-family="Verdana" font-size="14.00" fill="#000000">Bytes</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.CreatedOptions).Data&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Date).Bytes -->
<g id="edge11" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.CreatedOptions).Data&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Date).Bytes</title>
<g id="a_edge11"><a xlink:title="at session_created.go:305: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Date).Bytes]">
<path fill="none" stroke="#8b4513" d="M369.4973,-285.4462C384.0646,-290.6407 402.2331,-297.3637 418.2048,-304 448.1661,-316.449 481.4616,-331.9926 506.1426,-343.8544"/>
<polygon fill="#8b4513" stroke="#8b4513" points="504.6281,-347.0097 515.1552,-348.2062 507.6719,-340.7061 504.6281,-347.0097"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.CreatedOptions).Data&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes -->
<g id="edge10" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.CreatedOptions).Data&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes</title>
<g id="a_edge10"><a xlink:title="at session_created.go:304: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes]">
<path fill="none" stroke="#8b4513" d="M369.3049,-276C404.3136,-276 465.4548,-276 505.1066,-276"/>
<polygon fill="#8b4513" stroke="#8b4513" points="505.1879,-279.5001 515.1879,-276 505.1879,-272.5001 505.1879,-279.5001"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionConfirmed).PayloadSize -->
<g id="node3" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionConfirmed).PayloadSize</title>
<g id="a_node3"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionConfirmed).PayloadSize | defined in session_confirmed.go:272&#10;at session_confirmed.go:273: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.ConfirmedOptions).Data]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M119.3074,-86C119.3074,-86 49.8974,-86 49.8974,-86 43.8974,-86 37.8974,-80 37.8974,-74 37.8974,-74 37.8974,-62 37.8974,-62 37.8974,-56 43.8974,-50 49.8974,-50 49.8974,-50 119.3074,-50 119.3074,-50 125.3074,-50 131.3074,-56 131.3074,-62 131.3074,-62 131.3074,-74 131.3074,-74 131.3074,-80 125.3074,-86 119.3074,-86"/>
<text text-anchor="middle" x="84.6024" y="-63.8" font-family="Verdana" font-size="14.00" fill="#000000">PayloadSize</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionConfirmed).PayloadSize&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.ConfirmedOptions).Data -->
<g id="edge7" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionConfirmed).PayloadSize&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.ConfirmedOptions).Data</title>
<g id="a_edge7"><a xlink:title="at session_confirmed.go:273: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.ConfirmedOptions).Data]">
<path fill="none" stroke="#000000" d="M131.2523,-79.0466C181.1259,-90.8567 259.2036,-109.3454 305.0761,-120.208"/>
<polygon fill="#000000" stroke="#000000" points="304.368,-123.637 314.9054,-122.5355 305.9811,-116.8254 304.368,-123.637"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionConfirmed).Payload -->
<g id="node4" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionConfirmed).Payload</title>
<g id="a_node4"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionConfirmed).Payload | defined in session_confirmed.go:267&#10;at session_confirmed.go:268: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.ConfirmedOptions).Data]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M107.2049,-147C107.2049,-147 61.9999,-147 61.9999,-147 55.9999,-147 49.9999,-141 49.9999,-135 49.9999,-135 49.9999,-123 49.9999,-123 49.9999,-117 55.9999,-111 61.9999,-111 61.9999,-111 107.2049,-111 107.2049,-111 113.2049,-111 119.2049,-117 119.2049,-123 119.2049,-123 119.2049,-135 119.2049,-135 119.2049,-141 113.2049,-147 107.2049,-147"/>
<text text-anchor="middle" x="84.6024" y="-124.8" font-family="Verdana" font-size="14.00" fill="#000000">Payload</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionConfirmed).Payload&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.ConfirmedOptions).Data -->
<g id="edge4" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionConfirmed).Payload&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.ConfirmedOptions).Data</title>
<g id="a_edge4"><a xlink:title="at session_confirmed.go:268: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.ConfirmedOptions).Data]">
<path fill="none" stroke="#000000" d="M119.3438,-129C167.8084,-129 255.3391,-129 305.0588,-129"/>
<polygon fill="#000000" stroke="#000000" points="305.0669,-132.5001 315.0668,-129 305.0668,-125.5001 305.0669,-132.5001"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionCreated).PayloadSize -->
<g id="node5" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionCreated).PayloadSize</title>
<g id="a_node5"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionCreated).PayloadSize | defined in session_created.go:279&#10;at session_created.go:280: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.CreatedOptions).Data]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M119.3074,-233C119.3074,-233 49.8974,-233 49.8974,-233 43.8974,-233 37.8974,-227 37.8974,-221 37.8974,-221 37.8974,-209 37.8974,-209 37.8974,-203 43.8974,-197 49.8974,-197 49.8974,-197 119.3074,-197 119.3074,-197 125.3074,-197 131.3074,-203 131.3074,-209 131.3074,-209 131.3074,-221 131.3074,-221 131.3074,-227 125.3074,-233 119.3074,-233"/>
<text text-anchor="middle" x="84.6024" y="-210.8" font-family="Verdana" font-size="14.00" fill="#000000">PayloadSize</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionCreated).PayloadSize&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.CreatedOptions).Data -->
<g id="edge1" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionCreated).PayloadSize&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.CreatedOptions).Data</title>
<g id="a_edge1"><a xlink:title="at session_created.go:280: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.CreatedOptions).Data]">
<path fill="none" stroke="#000000" d="M131.2523,-226.0466C181.1259,-237.8567 259.2036,-256.3454 305.0761,-267.208"/>
<polygon fill="#000000" stroke="#000000" points="304.368,-270.637 314.9054,-269.5355 305.9811,-263.8254 304.368,-270.637"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionCreated).Payload -->
<g id="node6" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionCreated).Payload</title>
<g id="a_node6"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionCreated).Payload | defined in session_created.go:274&#10;at session_created.go:275: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.CreatedOptions).Data]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M107.2049,-294C107.2049,-294 61.9999,-294 61.9999,-294 55.9999,-294 49.9999,-288 49.9999,-282 49.9999,-282 49.9999,-270 49.9999,-270 49.9999,-264 55.9999,-258 61.9999,-258 61.9999,-258 107.2049,-258 107.2049,-258 113.2049,-258 119.2049,-264 119.2049,-270 119.2049,-270 119.2049,-282 119.2049,-282 119.2049,-288 113.2049,-294 107.2049,-294"/>
<text text-anchor="middle" x="84.6024" y="-271.8" font-family="Verdana" font-size="14.00" fill="#000000">Payload</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionCreated).Payload&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.CreatedOptions).Data -->
<g id="edge3" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionCreated).Payload&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.CreatedOptions).Data</title>
<g id="a_edge3"><a xlink:title="at session_created.go:275: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.CreatedOptions).Data]">
<path fill="none" stroke="#000000" d="M119.3438,-276C167.8084,-276 255.3391,-276 305.0588,-276"/>
<polygon fill="#000000" stroke="#000000" points="305.0669,-279.5001 315.0668,-276 305.0668,-272.5001 305.0669,-279.5001"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionRequest).PayloadSize -->
<g id="node7" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionRequest).PayloadSize</title>
<g id="a_node7"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionRequest).PayloadSize | defined in session_request.go:268&#10;at session_request.go:269: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.RequestOptions).Data]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M119.3074,-380C119.3074,-380 49.8974,-380 49.8974,-380 43.8974,-380 37.8974,-374 37.8974,-368 37.8974,-368 37.8974,-356 37.8974,-356 37.8974,-350 43.8974,-344 49.8974,-344 49.8974,-344 119.3074,-344 119.3074,-344 125.3074,-344 131.3074,-350 131.3074,-356 131.3074,-356 131.3074,-368 131.3074,-368 131.3074,-374 125.3074,-380 119.3074,-380"/>
<text text-anchor="middle" x="84.6024" y="-357.8" font-family="Verdana" font-size="14.00" fill="#000000">PayloadSize</text>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.RequestOptions).Data -->
<g id="node11" class="node">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.RequestOptions).Data</title>
<g id="a_node11"><a xlink:title="(github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.RequestOptions).Data | defined in session_request.go:296&#10;at session_request.go:303: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Date).Bytes]&#10;at session_request.go:299: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes]&#10;at session_request.go:300: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes]&#10;at session_request.go:301: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes]&#10;at session_request.go:302: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M357.2048,-380C357.2048,-380 327.2048,-380 327.2048,-380 321.2048,-380 315.2048,-374 315.2048,-368 315.2048,-368 315.2048,-356 315.2048,-356 315.2048,-350 321.2048,-344 327.2048,-344 327.2048,-344 357.2048,-344 357.2048,-344 363.2048,-344 369.2048,-350 369.2048,-356 369.2048,-356 369.2048,-368 369.2048,-368 369.2048,-374 363.2048,-380 357.2048,-380"/>
<text text-anchor="middle" x="342.2048" y="-357.8" font-family="Verdana" font-size="14.00" fill="#000000">Data</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionRequest).PayloadSize&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.RequestOptions).Data -->
<g id="edge2" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionRequest).PayloadSize&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.RequestOptions).Data</title>
<g id="a_edge2"><a xlink:title="at session_request.go:269: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.RequestOptions).Data]">
<path fill="none" stroke="#000000" d="M131.2523,-362C181.0211,-362 258.8757,-362 304.7866,-362"/>
<polygon fill="#000000" stroke="#000000" points="304.9055,-365.5001 314.9054,-362 304.9054,-358.5001 304.9055,-365.5001"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionRequest).Payload -->
<g id="node8" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionRequest).Payload</title>
<g id="a_node8"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionRequest).Payload | defined in session_request.go:263&#10;at session_request.go:264: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.RequestOptions).Data]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M107.2049,-441C107.2049,-441 61.9999,-441 61.9999,-441 55.9999,-441 49.9999,-435 49.9999,-429 49.9999,-429 49.9999,-417 49.9999,-417 49.9999,-411 55.9999,-405 61.9999,-405 61.9999,-405 107.2049,-405 107.2049,-405 113.2049,-405 119.2049,-411 119.2049,-417 119.2049,-417 119.2049,-429 119.2049,-429 119.2049,-435 113.2049,-441 107.2049,-441"/>
<text text-anchor="middle" x="84.6024" y="-418.8" font-family="Verdana" font-size="14.00" fill="#000000">Payload</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionRequest).Payload&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.RequestOptions).Data -->
<g id="edge8" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.SessionRequest).Payload&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.RequestOptions).Data</title>
<g id="a_edge8"><a xlink:title="at session_request.go:264: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.RequestOptions).Data]">
<path fill="none" stroke="#000000" d="M119.3438,-414.7733C167.8084,-403.2969 255.3391,-382.5697 305.0588,-370.7961"/>
<polygon fill="#000000" stroke="#000000" points="306.1425,-374.1364 315.0668,-368.4262 304.5294,-367.3248 306.1425,-374.1364"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.RequestOptions).Data&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Date).Bytes -->
<g id="edge5" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.RequestOptions).Data&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Date).Bytes</title>
<g id="a_edge5"><a xlink:title="at session_request.go:303: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Date).Bytes]">
<path fill="none" stroke="#8b4513" d="M369.3049,-362C404.3136,-362 465.4548,-362 505.1066,-362"/>
<polygon fill="#8b4513" stroke="#8b4513" points="505.1879,-365.5001 515.1879,-362 505.1879,-358.5001 505.1879,-365.5001"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.RequestOptions).Data&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes -->
<g id="edge9" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp/messages.RequestOptions).Data&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes</title>
<g id="a_edge9"><a xlink:title="at session_request.go:299: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes]&#10;at session_request.go:300: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes]&#10;at session_request.go:301: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes]&#10;at session_request.go:302: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/data.Integer).Bytes]">
<path fill="none" stroke="#8b4513" d="M369.3049,-350.4017C404.537,-335.3229 466.2363,-308.9168 505.8633,-291.9572"/>
<polygon fill="#8b4513" stroke="#8b4513" points="507.3716,-295.1188 515.1879,-287.9664 504.6173,-288.6834 507.3716,-295.1188"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 27 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 111 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 247 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 254 KiB

922
images/ntcp2.svg Normal file
View File

@@ -0,0 +1,922 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: gocallvis Pages: 1 -->
<svg width="1101pt" height="1073pt"
viewBox="0.00 0.00 1100.79 1073.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(0 1073)">
<title>gocallvis</title>
<polygon fill="#d3d3d3" stroke="transparent" points="0,0 0,-1073 1100.7914,-1073 1100.7914,0 0,0"/>
<g id="clust1" class="cluster">
<title>cluster_focus</title>
<polygon fill="#e6ecfa" stroke="#000000" stroke-width=".5" points="8,-8 8,-1065 1100.7914,-1065 1100.7914,-8 8,-8"/>
<text text-anchor="middle" x="554.3957" y="-1044.8" font-family="Arial" font-size="18.00" fill="#000000">ntcp2</text>
</g>
<g id="clust11" class="cluster">
<title>cluster_github.com/go&#45;i2p/common/router_address.RouterAddress</title>
<g id="a_clust11"><a xlink:title="type: github.com/go&#45;i2p/common/router_address.RouterAddress">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M739.5206,-343C739.5206,-343 840.7226,-343 840.7226,-343 846.7226,-343 852.7226,-349 852.7226,-355 852.7226,-355 852.7226,-531 852.7226,-531 852.7226,-537 846.7226,-543 840.7226,-543 840.7226,-543 739.5206,-543 739.5206,-543 733.5206,-543 727.5206,-537 727.5206,-531 727.5206,-531 727.5206,-355 727.5206,-355 727.5206,-349 733.5206,-343 739.5206,-343"/>
<text text-anchor="middle" x="790.1216" y="-351.5" font-family="Arial" font-size="15.00" fill="#222222">(RouterAddress)</text>
</a>
</g>
</g>
<g id="clust10" class="cluster">
<title>cluster_github.com/go&#45;i2p/common/data.I2PString</title>
<g id="a_clust10"><a xlink:title="type: github.com/go&#45;i2p/common/data.I2PString">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M759.1216,-257C759.1216,-257 822.1216,-257 822.1216,-257 828.1216,-257 834.1216,-263 834.1216,-269 834.1216,-269 834.1216,-323 834.1216,-323 834.1216,-329 828.1216,-335 822.1216,-335 822.1216,-335 759.1216,-335 759.1216,-335 753.1216,-335 747.1216,-329 747.1216,-323 747.1216,-323 747.1216,-269 747.1216,-269 747.1216,-263 753.1216,-257 759.1216,-257"/>
<text text-anchor="middle" x="790.6216" y="-265.5" font-family="Arial" font-size="15.00" fill="#222222">(I2PString)</text>
</a>
</g>
</g>
<g id="clust9" class="cluster">
<title>cluster_github.com/go&#45;i2p/common/data.Hash</title>
<g id="a_clust9"><a xlink:title="type: github.com/go&#45;i2p/common/data.Hash">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M548.8957,-594C548.8957,-594 596.7821,-594 596.7821,-594 602.7821,-594 608.7821,-600 608.7821,-606 608.7821,-606 608.7821,-660 608.7821,-660 608.7821,-666 602.7821,-672 596.7821,-672 596.7821,-672 548.8957,-672 548.8957,-672 542.8957,-672 536.8957,-666 536.8957,-660 536.8957,-660 536.8957,-606 536.8957,-606 536.8957,-600 542.8957,-594 548.8957,-594"/>
<text text-anchor="middle" x="572.8389" y="-602.5" font-family="Arial" font-size="15.00" fill="#222222">(Hash)</text>
</a>
</g>
</g>
<g id="clust8" class="cluster">
<title>cluster_*github.com/sirupsen/logrus.Entry</title>
<g id="a_clust8"><a xlink:title="type: *github.com/sirupsen/logrus.Entry">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M296.4005,-527C296.4005,-527 369.9307,-527 369.9307,-527 375.9307,-527 381.9307,-533 381.9307,-539 381.9307,-539 381.9307,-776 381.9307,-776 381.9307,-782 375.9307,-788 369.9307,-788 369.9307,-788 296.4005,-788 296.4005,-788 290.4005,-788 284.4005,-782 284.4005,-776 284.4005,-776 284.4005,-539 284.4005,-539 284.4005,-533 290.4005,-527 296.4005,-527"/>
<text text-anchor="middle" x="333.1656" y="-535.5" font-family="Arial" font-size="15.00" fill="#222222">(*Entry)</text>
</a>
</g>
</g>
<g id="clust7" class="cluster">
<title>cluster_*github.com/go&#45;i2p/go&#45;noise/ntcp2.NTCP2Config</title>
<g id="a_clust7"><a xlink:title="type: *github.com/go&#45;i2p/go&#45;noise/ntcp2.NTCP2Config">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M255.9601,-842C255.9601,-842 410.3711,-842 410.3711,-842 416.3711,-842 422.3711,-848 422.3711,-854 422.3711,-854 422.3711,-908 422.3711,-908 422.3711,-914 416.3711,-920 410.3711,-920 410.3711,-920 255.9601,-920 255.9601,-920 249.9601,-920 243.9601,-914 243.9601,-908 243.9601,-908 243.9601,-854 243.9601,-854 243.9601,-848 249.9601,-842 255.9601,-842"/>
<text text-anchor="middle" x="333.1656" y="-850.5" font-family="Arial" font-size="15.00" fill="#222222">(*NTCP2Config)</text>
</a>
</g>
</g>
<g id="clust6" class="cluster">
<title>cluster_*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport</title>
<g id="a_clust6"><a xlink:title="type: *github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport">
<path fill="#b0c4de" stroke="#000000" stroke-width=".5" d="M30.1508,-466C30.1508,-466 150.479,-466 150.479,-466 156.479,-466 162.479,-472 162.479,-478 162.479,-478 162.479,-715 162.479,-715 162.479,-721 156.479,-727 150.479,-727 150.479,-727 30.1508,-727 30.1508,-727 24.1508,-727 18.1508,-721 18.1508,-715 18.1508,-715 18.1508,-478 18.1508,-478 18.1508,-472 24.1508,-466 30.1508,-466"/>
<text text-anchor="middle" x="90.3149" y="-474.5" font-family="Arial" font-size="15.00" fill="#222222">(*NTCP2Transport)</text>
</a>
</g>
</g>
<g id="clust5" class="cluster">
<title>cluster_*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session</title>
<g id="a_clust5"><a xlink:title="type: *github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session">
<path fill="#b0c4de" stroke="#000000" stroke-width=".5" d="M523.2589,-844C523.2589,-844 820.6637,-844 820.6637,-844 826.6637,-844 832.6637,-850 832.6637,-856 832.6637,-856 832.6637,-971 832.6637,-971 832.6637,-977 826.6637,-983 820.6637,-983 820.6637,-983 523.2589,-983 523.2589,-983 517.2589,-983 511.2589,-977 511.2589,-971 511.2589,-971 511.2589,-856 511.2589,-856 511.2589,-850 517.2589,-844 523.2589,-844"/>
<text text-anchor="middle" x="671.9613" y="-852.5" font-family="Arial" font-size="15.00" fill="#222222">(*NTCP2Session)</text>
</a>
</g>
</g>
<g id="clust4" class="cluster">
<title>cluster_*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer</title>
<g id="a_clust4"><a xlink:title="type: *github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer">
<path fill="#b0c4de" stroke="#000000" stroke-width=".5" d="M729.644,-594C729.644,-594 1044.3559,-594 1044.3559,-594 1050.3559,-594 1056.3559,-600 1056.3559,-606 1056.3559,-606 1056.3559,-660 1056.3559,-660 1056.3559,-666 1050.3559,-672 1044.3559,-672 1044.3559,-672 729.644,-672 729.644,-672 723.644,-672 717.644,-666 717.644,-660 717.644,-660 717.644,-606 717.644,-606 717.644,-600 723.644,-594 729.644,-594"/>
<text text-anchor="middle" x="887" y="-602.5" font-family="Arial" font-size="15.00" fill="#222222">(*I2NPUnframer)</text>
</a>
</g>
</g>
<g id="clust3" class="cluster">
<title>cluster_*github.com/go&#45;i2p/go&#45;i2p/lib/i2np.BaseI2NPMessage</title>
<g id="a_clust3"><a xlink:title="type: *github.com/go&#45;i2p/go&#45;i2p/lib/i2np.BaseI2NPMessage">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M945.2668,-680C945.2668,-680 1080.7914,-680 1080.7914,-680 1086.7914,-680 1092.7914,-686 1092.7914,-692 1092.7914,-692 1092.7914,-746 1092.7914,-746 1092.7914,-752 1086.7914,-758 1080.7914,-758 1080.7914,-758 945.2668,-758 945.2668,-758 939.2668,-758 933.2668,-752 933.2668,-746 933.2668,-746 933.2668,-692 933.2668,-692 933.2668,-686 939.2668,-680 945.2668,-680"/>
<text text-anchor="middle" x="1013.0291" y="-688.5" font-family="Arial" font-size="15.00" fill="#222222">(*BaseI2NPMessage)</text>
</a>
</g>
</g>
<g id="clust2" class="cluster">
<title>cluster_*github.com/go&#45;i2p/common/router_info.RouterInfo</title>
<g id="a_clust2"><a xlink:title="type: *github.com/go&#45;i2p/common/router_info.RouterInfo">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M734.3053,-110C734.3053,-110 845.9379,-110 845.9379,-110 851.9379,-110 857.9379,-116 857.9379,-122 857.9379,-122 857.9379,-237 857.9379,-237 857.9379,-243 851.9379,-249 845.9379,-249 845.9379,-249 734.3053,-249 734.3053,-249 728.3053,-249 722.3053,-243 722.3053,-237 722.3053,-237 722.3053,-122 722.3053,-122 722.3053,-116 728.3053,-110 734.3053,-110"/>
<text text-anchor="middle" x="790.1216" y="-118.5" font-family="Arial" font-size="15.00" fill="#222222">(*RouterInfo)</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.FrameI2NPMessage -->
<g id="node1" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.FrameI2NPMessage</title>
<g id="a_node1"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.FrameI2NPMessage | defined in framing.go:10">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M847.4123,-1027C847.4123,-1027 732.8309,-1027 732.8309,-1027 726.8309,-1027 720.8309,-1021 720.8309,-1015 720.8309,-1015 720.8309,-1003 720.8309,-1003 720.8309,-997 726.8309,-991 732.8309,-991 732.8309,-991 847.4123,-991 847.4123,-991 853.4123,-991 859.4123,-997 859.4123,-1003 859.4123,-1003 859.4123,-1015 859.4123,-1015 859.4123,-1021 853.4123,-1027 847.4123,-1027"/>
<text text-anchor="middle" x="790.1216" y="-1004.8" font-family="Verdana" font-size="14.00" fill="#000000">FrameI2NPMessage</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error -->
<g id="node2" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error</title>
<g id="a_node2"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error | defined in errors.go:18&#10;at errors.go:19: calling [github.com/samber/oops.Wrapf]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M842.0248,-836C842.0248,-836 738.2184,-836 738.2184,-836 732.2184,-836 726.2184,-830 726.2184,-824 726.2184,-824 726.2184,-812 726.2184,-812 726.2184,-806 732.2184,-800 738.2184,-800 738.2184,-800 842.0248,-800 842.0248,-800 848.0248,-800 854.0248,-806 854.0248,-812 854.0248,-812 854.0248,-824 854.0248,-824 854.0248,-830 848.0248,-836 842.0248,-836"/>
<text text-anchor="middle" x="790.1216" y="-813.8" font-family="Verdana" font-size="14.00" fill="#000000">WrapNTCP2Error</text>
</a>
</g>
</g>
<!-- github.com/samber/oops.Wrapf -->
<g id="node3" class="node">
<title>github.com/samber/oops.Wrapf</title>
<g id="a_node3"><a xlink:title="github.com/samber/oops.Wrapf | defined in oops.go:20">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M1030.78,-836C1030.78,-836 995.2782,-836 995.2782,-836 989.2782,-836 983.2782,-830 983.2782,-824 983.2782,-824 983.2782,-812 983.2782,-812 983.2782,-806 989.2782,-800 995.2782,-800 995.2782,-800 1030.78,-800 1030.78,-800 1036.78,-800 1042.78,-806 1042.78,-812 1042.78,-812 1042.78,-824 1042.78,-824 1042.78,-830 1036.78,-836 1030.78,-836"/>
<text text-anchor="middle" x="1013.0291" y="-822.2" font-family="Verdana" font-size="14.00" fill="#000000">oops</text>
<text text-anchor="middle" x="1013.0291" y="-805.4" font-family="Verdana" font-size="14.00" fill="#000000">Wrapf</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error&#45;&gt;github.com/samber/oops.Wrapf -->
<g id="edge24" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error&#45;&gt;github.com/samber/oops.Wrapf</title>
<g id="a_edge24"><a xlink:title="at errors.go:19: calling [github.com/samber/oops.Wrapf]">
<path fill="none" stroke="#8b4513" d="M853.9979,-818C892.3065,-818 939.8469,-818 972.9233,-818"/>
<polygon fill="#8b4513" stroke="#8b4513" points="973.1241,-821.5001 983.1241,-818 973.1241,-814.5001 973.1241,-821.5001"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.SupportsNTCP2 -->
<g id="node4" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.SupportsNTCP2</title>
<g id="a_node4"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.SupportsNTCP2 | defined in addr.go:48&#10;at addr.go:54: calling [(github.com/go&#45;i2p/common/data.I2PString).Data]&#10;at addr.go:52: calling [(*github.com/go&#45;i2p/common/router_info.RouterInfo).RouterAddresses]&#10;at addr.go:53: calling [(github.com/go&#45;i2p/common/router_address.RouterAddress).TransportStyle]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M618.8965,-315C618.8965,-315 526.7813,-315 526.7813,-315 520.7813,-315 514.7813,-309 514.7813,-303 514.7813,-303 514.7813,-291 514.7813,-291 514.7813,-285 520.7813,-279 526.7813,-279 526.7813,-279 618.8965,-279 618.8965,-279 624.8965,-279 630.8965,-285 630.8965,-291 630.8965,-291 630.8965,-303 630.8965,-303 630.8965,-309 624.8965,-315 618.8965,-315"/>
<text text-anchor="middle" x="572.8389" y="-292.8" font-family="Verdana" font-size="14.00" fill="#000000">SupportsNTCP2</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/common/router_info.RouterInfo).RouterAddresses -->
<g id="node18" class="node">
<title>(*github.com/go&#45;i2p/common/router_info.RouterInfo).RouterAddresses</title>
<g id="a_node18"><a xlink:title="(*github.com/go&#45;i2p/common/router_info.RouterInfo).RouterAddresses | defined in router_info_struct.go:336">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M837.7548,-241C837.7548,-241 742.4884,-241 742.4884,-241 736.4884,-241 730.4884,-235 730.4884,-229 730.4884,-229 730.4884,-217 730.4884,-217 730.4884,-211 736.4884,-205 742.4884,-205 742.4884,-205 837.7548,-205 837.7548,-205 843.7548,-205 849.7548,-211 849.7548,-217 849.7548,-217 849.7548,-229 849.7548,-229 849.7548,-235 843.7548,-241 837.7548,-241"/>
<text text-anchor="middle" x="790.1216" y="-227.2" font-family="Verdana" font-size="14.00" fill="#000000">router_info</text>
<text text-anchor="middle" x="790.1216" y="-210.4" font-family="Verdana" font-size="14.00" fill="#000000">RouterAddresses</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.SupportsNTCP2&#45;&gt;(*github.com/go&#45;i2p/common/router_info.RouterInfo).RouterAddresses -->
<g id="edge25" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.SupportsNTCP2&#45;&gt;(*github.com/go&#45;i2p/common/router_info.RouterInfo).RouterAddresses</title>
<g id="a_edge25"><a xlink:title="at addr.go:52: calling [(*github.com/go&#45;i2p/common/router_info.RouterInfo).RouterAddresses]">
<path fill="none" stroke="#8b4513" d="M629.04,-278.9305C647.2389,-272.9964 667.493,-266.3046 685.9764,-260 700.5013,-255.0457 716.1158,-249.5755 730.7213,-244.3954"/>
<polygon fill="#8b4513" stroke="#8b4513" points="731.9028,-247.6901 740.152,-241.0416 729.5573,-241.0947 731.9028,-247.6901"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/common/data.I2PString).Data -->
<g id="node35" class="node">
<title>(github.com/go&#45;i2p/common/data.I2PString).Data</title>
<g id="a_node35"><a xlink:title="(github.com/go&#45;i2p/common/data.I2PString).Data | defined in string.go:70">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M805.1216,-327C805.1216,-327 775.1216,-327 775.1216,-327 769.1216,-327 763.1216,-321 763.1216,-315 763.1216,-315 763.1216,-303 763.1216,-303 763.1216,-297 769.1216,-291 775.1216,-291 775.1216,-291 805.1216,-291 805.1216,-291 811.1216,-291 817.1216,-297 817.1216,-303 817.1216,-303 817.1216,-315 817.1216,-315 817.1216,-321 811.1216,-327 805.1216,-327"/>
<text text-anchor="middle" x="790.1216" y="-313.2" font-family="Verdana" font-size="14.00" fill="#000000">data</text>
<text text-anchor="middle" x="790.1216" y="-296.4" font-family="Verdana" font-size="14.00" fill="#000000">Data</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.SupportsNTCP2&#45;&gt;(github.com/go&#45;i2p/common/data.I2PString).Data -->
<g id="edge3" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.SupportsNTCP2&#45;&gt;(github.com/go&#45;i2p/common/data.I2PString).Data</title>
<g id="a_edge3"><a xlink:title="at addr.go:54: calling [(github.com/go&#45;i2p/common/data.I2PString).Data]">
<path fill="none" stroke="#8b4513" d="M631.0667,-300.2158C669.7465,-302.352 719.3811,-305.0932 752.8334,-306.9407"/>
<polygon fill="#8b4513" stroke="#8b4513" points="752.9137,-310.4503 763.0915,-307.5072 753.2998,-303.461 752.9137,-310.4503"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/common/router_address.RouterAddress).TransportStyle -->
<g id="node36" class="node">
<title>(github.com/go&#45;i2p/common/router_address.RouterAddress).TransportStyle</title>
<g id="a_node36"><a xlink:title="(github.com/go&#45;i2p/common/router_address.RouterAddress).TransportStyle | defined in router_address_methods.go:104">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M831.8238,-474C831.8238,-474 748.4194,-474 748.4194,-474 742.4194,-474 736.4194,-468 736.4194,-462 736.4194,-462 736.4194,-450 736.4194,-450 736.4194,-444 742.4194,-438 748.4194,-438 748.4194,-438 831.8238,-438 831.8238,-438 837.8238,-438 843.8238,-444 843.8238,-450 843.8238,-450 843.8238,-462 843.8238,-462 843.8238,-468 837.8238,-474 831.8238,-474"/>
<text text-anchor="middle" x="790.1216" y="-460.2" font-family="Verdana" font-size="14.00" fill="#000000">router_address</text>
<text text-anchor="middle" x="790.1216" y="-443.4" font-family="Verdana" font-size="14.00" fill="#000000">TransportStyle</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.SupportsNTCP2&#45;&gt;(github.com/go&#45;i2p/common/router_address.RouterAddress).TransportStyle -->
<g id="edge26" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.SupportsNTCP2&#45;&gt;(github.com/go&#45;i2p/common/router_address.RouterAddress).TransportStyle</title>
<g id="a_edge26"><a xlink:title="at addr.go:53: calling [(github.com/go&#45;i2p/common/router_address.RouterAddress).TransportStyle]">
<path fill="none" stroke="#8b4513" d="M589.5486,-315.3924C615.0056,-342.5437 666.015,-393.6245 717.644,-426 721.9327,-428.6893 726.504,-431.2302 731.1855,-433.609"/>
<polygon fill="#8b4513" stroke="#8b4513" points="729.7495,-436.8021 740.2787,-437.9802 732.7824,-430.4932 729.7495,-436.8021"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr -->
<g id="node5" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr</title>
<g id="a_node5"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr | defined in addr.go:11&#10;at addr.go:16: calling [(github.com/go&#45;i2p/common/router_address.RouterAddress).TransportStyle]&#10;at addr.go:17: calling [(github.com/go&#45;i2p/common/data.I2PString).Data]&#10;at addr.go:15: calling [(*github.com/go&#45;i2p/common/router_info.RouterInfo).RouterAddresses]&#10;at addr.go:12: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.SupportsNTCP2]&#10;at addr.go:39: calling [(github.com/go&#45;i2p/common/data.Hash).Bytes]&#10;at addr.go:23: calling [(github.com/go&#45;i2p/common/router_address.RouterAddress).Host]&#10;at addr.go:40: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Addr]&#10;at addr.go:27: calling [(github.com/go&#45;i2p/common/router_address.RouterAddress).Port]&#10;at addr.go:39: calling [(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M389.1348,-404C389.1348,-404 277.1964,-404 277.1964,-404 271.1964,-404 265.1964,-398 265.1964,-392 265.1964,-392 265.1964,-380 265.1964,-380 265.1964,-374 271.1964,-368 277.1964,-368 277.1964,-368 389.1348,-368 389.1348,-368 395.1348,-368 401.1348,-374 401.1348,-380 401.1348,-380 401.1348,-392 401.1348,-392 401.1348,-398 395.1348,-404 389.1348,-404"/>
<text text-anchor="middle" x="333.1656" y="-381.8" font-family="Verdana" font-size="14.00" fill="#000000">ExtractNTCP2Addr</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.SupportsNTCP2 -->
<g id="edge15" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.SupportsNTCP2</title>
<g id="a_edge15"><a xlink:title="at addr.go:12: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.SupportsNTCP2]">
<path fill="none" stroke="#000000" d="M394.2971,-367.8683C404.2755,-364.3063 414.3881,-360.3194 423.7014,-356 440.7121,-348.1106 442.6754,-341.8562 459.7014,-334 473.9396,-327.4302 489.677,-321.5044 504.7738,-316.418"/>
<polygon fill="#000000" stroke="#000000" points="506.1708,-319.6433 514.58,-313.1984 503.9872,-312.9925 506.1708,-319.6433"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Addr -->
<g id="node6" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Addr</title>
<g id="a_node6"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Addr | defined in addr.go:66">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M623.9748,-504C623.9748,-504 521.703,-504 521.703,-504 515.703,-504 509.703,-498 509.703,-492 509.703,-492 509.703,-480 509.703,-480 509.703,-474 515.703,-468 521.703,-468 521.703,-468 623.9748,-468 623.9748,-468 629.9748,-468 635.9748,-474 635.9748,-480 635.9748,-480 635.9748,-492 635.9748,-492 635.9748,-498 629.9748,-504 623.9748,-504"/>
<text text-anchor="middle" x="572.8389" y="-481.8" font-family="Verdana" font-size="14.00" fill="#000000">WrapNTCP2Addr</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Addr -->
<g id="edge33" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Addr</title>
<g id="a_edge33"><a xlink:title="at addr.go:40: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Addr]">
<path fill="none" stroke="#000000" d="M383.4947,-404.0957C396.8617,-409.5633 411.0821,-415.9954 423.7014,-423 440.9578,-432.5785 442.1119,-440.0479 459.7014,-449 472.2246,-455.3736 486.0769,-460.9718 499.6688,-465.7567"/>
<polygon fill="#000000" stroke="#000000" points="498.9026,-469.1929 509.497,-469.0966 501.155,-462.5651 498.9026,-469.1929"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash -->
<g id="node17" class="node">
<title>(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash</title>
<g id="a_node17"><a xlink:title="(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash | defined in router_info_struct.go:314">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M821.5992,-180C821.5992,-180 758.644,-180 758.644,-180 752.644,-180 746.644,-174 746.644,-168 746.644,-168 746.644,-156 746.644,-156 746.644,-150 752.644,-144 758.644,-144 758.644,-144 821.5992,-144 821.5992,-144 827.5992,-144 833.5992,-150 833.5992,-156 833.5992,-156 833.5992,-168 833.5992,-168 833.5992,-174 827.5992,-180 821.5992,-180"/>
<text text-anchor="middle" x="790.1216" y="-166.2" font-family="Verdana" font-size="14.00" fill="#000000">router_info</text>
<text text-anchor="middle" x="790.1216" y="-149.4" font-family="Verdana" font-size="14.00" fill="#000000">IdentHash</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr&#45;&gt;(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash -->
<g id="edge46" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr&#45;&gt;(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash</title>
<g id="a_edge46"><a xlink:title="at addr.go:39: calling [(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash]">
<path fill="none" stroke="#8b4513" d="M401.2329,-369.4937C409.2745,-365.8407 416.9931,-361.3979 423.7014,-356 473.2282,-316.148 444.3754,-269.0981 496.7014,-233 566.9895,-184.5104 603.4825,-222.0547 685.9764,-200 702.7601,-195.5129 720.656,-189.4657 736.7931,-183.5164"/>
<polygon fill="#8b4513" stroke="#8b4513" points="738.4557,-186.6308 746.5878,-179.8396 735.9956,-180.0773 738.4557,-186.6308"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr&#45;&gt;(*github.com/go&#45;i2p/common/router_info.RouterInfo).RouterAddresses -->
<g id="edge9" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr&#45;&gt;(*github.com/go&#45;i2p/common/router_info.RouterInfo).RouterAddresses</title>
<g id="a_edge9"><a xlink:title="at addr.go:15: calling [(*github.com/go&#45;i2p/common/router_info.RouterInfo).RouterAddresses]">
<path fill="none" stroke="#8b4513" d="M401.433,-368.0926C409.265,-364.6889 416.8772,-360.6878 423.7014,-356 465.8698,-327.0327 452.2117,-292.2577 496.7014,-267 515.7908,-256.1626 639.5511,-240.2494 720.1269,-230.8249"/>
<polygon fill="#8b4513" stroke="#8b4513" points="720.688,-234.2833 730.217,-229.6521 719.8798,-227.3301 720.688,-234.2833"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/common/data.Hash).Bytes -->
<g id="node34" class="node">
<title>(github.com/go&#45;i2p/common/data.Hash).Bytes</title>
<g id="a_node34"><a xlink:title="(github.com/go&#45;i2p/common/data.Hash).Bytes | defined in hash.go:25">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M588.7254,-664C588.7254,-664 556.9524,-664 556.9524,-664 550.9524,-664 544.9524,-658 544.9524,-652 544.9524,-652 544.9524,-640 544.9524,-640 544.9524,-634 550.9524,-628 556.9524,-628 556.9524,-628 588.7254,-628 588.7254,-628 594.7254,-628 600.7254,-634 600.7254,-640 600.7254,-640 600.7254,-652 600.7254,-652 600.7254,-658 594.7254,-664 588.7254,-664"/>
<text text-anchor="middle" x="572.8389" y="-650.2" font-family="Verdana" font-size="14.00" fill="#000000">data</text>
<text text-anchor="middle" x="572.8389" y="-633.4" font-family="Verdana" font-size="14.00" fill="#000000">Bytes</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr&#45;&gt;(github.com/go&#45;i2p/common/data.Hash).Bytes -->
<g id="edge16" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr&#45;&gt;(github.com/go&#45;i2p/common/data.Hash).Bytes</title>
<g id="a_edge16"><a xlink:title="at addr.go:39: calling [(github.com/go&#45;i2p/common/data.Hash).Bytes]">
<path fill="none" stroke="#8b4513" d="M396.6485,-404.1913C406.5703,-409.1076 416.053,-415.28 423.7014,-423 455.0098,-454.6014 445.4394,-474.2156 460.7014,-516 478.0604,-563.5254 460.2079,-588.954 496.7014,-624 506.9029,-633.7969 521.1882,-639.2732 534.6327,-642.3192"/>
<polygon fill="#8b4513" stroke="#8b4513" points="534.1937,-645.7979 544.6682,-644.206 535.4872,-638.9184 534.1937,-645.7979"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr&#45;&gt;(github.com/go&#45;i2p/common/data.I2PString).Data -->
<g id="edge5" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr&#45;&gt;(github.com/go&#45;i2p/common/data.I2PString).Data</title>
<g id="a_edge5"><a xlink:title="at addr.go:17: calling [(github.com/go&#45;i2p/common/data.I2PString).Data]">
<path fill="none" stroke="#8b4513" d="M401.5765,-374.4723C499.4275,-357.9838 675.9949,-328.2311 752.7765,-315.2929"/>
<polygon fill="#8b4513" stroke="#8b4513" points="753.6505,-318.695 762.9298,-313.582 752.4873,-311.7924 753.6505,-318.695"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr&#45;&gt;(github.com/go&#45;i2p/common/router_address.RouterAddress).TransportStyle -->
<g id="edge4" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr&#45;&gt;(github.com/go&#45;i2p/common/router_address.RouterAddress).TransportStyle</title>
<g id="a_edge4"><a xlink:title="at addr.go:16: calling [(github.com/go&#45;i2p/common/router_address.RouterAddress).TransportStyle]">
<path fill="none" stroke="#8b4513" d="M401.3202,-394.2139C472.5195,-403.0876 587.3669,-418.2265 685.9764,-435 699.0898,-437.2306 713.0798,-439.871 726.4119,-442.5133"/>
<polygon fill="#8b4513" stroke="#8b4513" points="725.9602,-445.9923 736.4533,-444.5274 727.3369,-439.129 725.9602,-445.9923"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/common/router_address.RouterAddress).Host -->
<g id="node37" class="node">
<title>(github.com/go&#45;i2p/common/router_address.RouterAddress).Host</title>
<g id="a_node37"><a xlink:title="(github.com/go&#45;i2p/common/router_address.RouterAddress).Host | defined in router_address_methods.go:195">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M831.5278,-413C831.5278,-413 748.7154,-413 748.7154,-413 742.7154,-413 736.7154,-407 736.7154,-401 736.7154,-401 736.7154,-389 736.7154,-389 736.7154,-383 742.7154,-377 748.7154,-377 748.7154,-377 831.5278,-377 831.5278,-377 837.5278,-377 843.5278,-383 843.5278,-389 843.5278,-389 843.5278,-401 843.5278,-401 843.5278,-407 837.5278,-413 831.5278,-413"/>
<text text-anchor="middle" x="790.1216" y="-399.2" font-family="Verdana" font-size="14.00" fill="#000000">router_address</text>
<text text-anchor="middle" x="790.1216" y="-382.4" font-family="Verdana" font-size="14.00" fill="#000000">Host</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr&#45;&gt;(github.com/go&#45;i2p/common/router_address.RouterAddress).Host -->
<g id="edge20" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr&#45;&gt;(github.com/go&#45;i2p/common/router_address.RouterAddress).Host</title>
<g id="a_edge20"><a xlink:title="at addr.go:23: calling [(github.com/go&#45;i2p/common/router_address.RouterAddress).Host]">
<path fill="none" stroke="#8b4513" d="M401.5765,-387.3474C489.5008,-389.0791 640.9806,-392.0626 726.5142,-393.7472"/>
<polygon fill="#8b4513" stroke="#8b4513" points="726.5425,-397.2484 736.6096,-393.9461 726.6805,-390.2497 726.5425,-397.2484"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/common/router_address.RouterAddress).Port -->
<g id="node38" class="node">
<title>(github.com/go&#45;i2p/common/router_address.RouterAddress).Port</title>
<g id="a_node38"><a xlink:title="(github.com/go&#45;i2p/common/router_address.RouterAddress).Port | defined in router_address_methods.go:218">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M831.5278,-535C831.5278,-535 748.7154,-535 748.7154,-535 742.7154,-535 736.7154,-529 736.7154,-523 736.7154,-523 736.7154,-511 736.7154,-511 736.7154,-505 742.7154,-499 748.7154,-499 748.7154,-499 831.5278,-499 831.5278,-499 837.5278,-499 843.5278,-505 843.5278,-511 843.5278,-511 843.5278,-523 843.5278,-523 843.5278,-529 837.5278,-535 831.5278,-535"/>
<text text-anchor="middle" x="790.1216" y="-521.2" font-family="Verdana" font-size="14.00" fill="#000000">router_address</text>
<text text-anchor="middle" x="790.1216" y="-504.4" font-family="Verdana" font-size="14.00" fill="#000000">Port</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr&#45;&gt;(github.com/go&#45;i2p/common/router_address.RouterAddress).Port -->
<g id="edge41" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr&#45;&gt;(github.com/go&#45;i2p/common/router_address.RouterAddress).Port</title>
<g id="a_edge41"><a xlink:title="at addr.go:27: calling [(github.com/go&#45;i2p/common/router_address.RouterAddress).Port]">
<path fill="none" stroke="#8b4513" d="M401.5204,-402.2234C430.7993,-409.0843 465.3955,-417.0742 496.7014,-424 564.2248,-438.9382 583.2359,-434.5352 648.9764,-456 680.8075,-466.3931 686.9111,-473.7063 717.644,-487 723.7744,-489.6517 730.2161,-492.3886 736.6249,-495.0806"/>
<polygon fill="#8b4513" stroke="#8b4513" points="735.3745,-498.3513 745.9508,-498.9775 738.0734,-491.8925 735.3745,-498.3513"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Config -->
<g id="node7" class="node">
<title>github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Config</title>
<g id="a_node7"><a xlink:title="github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Config | defined in config.go:97">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M387.2596,-282C387.2596,-282 279.0716,-282 279.0716,-282 273.0716,-282 267.0716,-276 267.0716,-270 267.0716,-270 267.0716,-258 267.0716,-258 267.0716,-252 273.0716,-246 279.0716,-246 279.0716,-246 387.2596,-246 387.2596,-246 393.2596,-246 399.2596,-252 399.2596,-258 399.2596,-258 399.2596,-270 399.2596,-270 399.2596,-276 393.2596,-282 387.2596,-282"/>
<text text-anchor="middle" x="333.1656" y="-268.2" font-family="Verdana" font-size="14.00" fill="#000000">ntcp2</text>
<text text-anchor="middle" x="333.1656" y="-251.4" font-family="Verdana" font-size="14.00" fill="#000000">NewNTCP2Config</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;noise/ntcp2.DialNTCP2WithHandshake -->
<g id="node8" class="node">
<title>github.com/go&#45;i2p/go&#45;noise/ntcp2.DialNTCP2WithHandshake</title>
<g id="a_node8"><a xlink:title="github.com/go&#45;i2p/go&#45;noise/ntcp2.DialNTCP2WithHandshake | defined in transport.go:35">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M411.7372,-492C411.7372,-492 254.594,-492 254.594,-492 248.594,-492 242.594,-486 242.594,-480 242.594,-480 242.594,-468 242.594,-468 242.594,-462 248.594,-456 254.594,-456 254.594,-456 411.7372,-456 411.7372,-456 417.7372,-456 423.7372,-462 423.7372,-468 423.7372,-468 423.7372,-480 423.7372,-480 423.7372,-486 417.7372,-492 411.7372,-492"/>
<text text-anchor="middle" x="333.1656" y="-478.2" font-family="Verdana" font-size="14.00" fill="#000000">ntcp2</text>
<text text-anchor="middle" x="333.1656" y="-461.4" font-family="Verdana" font-size="14.00" fill="#000000">DialNTCP2WithHandshake</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Session -->
<g id="node9" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Session</title>
<g id="a_node9"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Session | defined in session.go:40&#10;at session.go:58: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).sendWorker]&#10;at session.go:59: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).receiveWorker]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M389.1488,-1027C389.1488,-1027 277.1824,-1027 277.1824,-1027 271.1824,-1027 265.1824,-1021 265.1824,-1015 265.1824,-1015 265.1824,-1003 265.1824,-1003 265.1824,-997 271.1824,-991 277.1824,-991 277.1824,-991 389.1488,-991 389.1488,-991 395.1488,-991 401.1488,-997 401.1488,-1003 401.1488,-1003 401.1488,-1015 401.1488,-1015 401.1488,-1021 395.1488,-1027 389.1488,-1027"/>
<text text-anchor="middle" x="333.1656" y="-1004.8" font-family="Verdana" font-size="14.00" fill="#000000">NewNTCP2Session</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).sendWorker -->
<g id="node22" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).sendWorker</title>
<g id="a_node22"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).sendWorker | defined in session.go:108&#10;at session.go:119: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]&#10;at session.go:126: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]&#10;at session.go:117: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.FrameI2NPMessage]&#10;at session.go:119: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).setError]&#10;at session.go:126: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).setError]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M607.2494,-975C607.2494,-975 538.4284,-975 538.4284,-975 532.4284,-975 526.4284,-969 526.4284,-963 526.4284,-963 526.4284,-951 526.4284,-951 526.4284,-945 532.4284,-939 538.4284,-939 538.4284,-939 607.2494,-939 607.2494,-939 613.2494,-939 619.2494,-945 619.2494,-951 619.2494,-951 619.2494,-963 619.2494,-963 619.2494,-969 613.2494,-975 607.2494,-975"/>
<text text-anchor="middle" x="572.8389" y="-952.8" font-family="Verdana" font-size="14.00" fill="#000000">sendWorker</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Session&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).sendWorker -->
<g id="edge6" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Session&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).sendWorker</title>
<g id="a_edge6"><a xlink:title="at session.go:58: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).sendWorker]">
<path fill="none" stroke="#000000" d="M401.2053,-994.238C433.2333,-987.2891 471.3737,-979.0141 503.5574,-972.0315"/>
<polygon fill="#000000" stroke="#000000" points="517.255,-972.6411 526.2855,-967.1003 515.7707,-965.8002 517.255,-972.6411"/>
<polyline fill="none" stroke="#000000" points="516.5129,-969.2206 511.6265,-970.2808 "/>
<ellipse fill="none" stroke="#000000" cx="507.7175" cy="-971.1289" rx="4" ry="4"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).receiveWorker -->
<g id="node24" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).receiveWorker</title>
<g id="a_node24"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).receiveWorker | defined in session.go:137&#10;at session.go:150: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]&#10;at session.go:150: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).setError]&#10;at session.go:148: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).ReadNextMessage]&#10;at session.go:140: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewI2NPUnframer]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M614.499,-914C614.499,-914 531.1788,-914 531.1788,-914 525.1788,-914 519.1788,-908 519.1788,-902 519.1788,-902 519.1788,-890 519.1788,-890 519.1788,-884 525.1788,-878 531.1788,-878 531.1788,-878 614.499,-878 614.499,-878 620.499,-878 626.499,-884 626.499,-890 626.499,-890 626.499,-902 626.499,-902 626.499,-908 620.499,-914 614.499,-914"/>
<text text-anchor="middle" x="572.8389" y="-891.8" font-family="Verdana" font-size="14.00" fill="#000000">receiveWorker</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Session&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).receiveWorker -->
<g id="edge8" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Session&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).receiveWorker</title>
<g id="a_edge8"><a xlink:title="at session.go:59: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).receiveWorker]">
<path fill="none" stroke="#000000" d="M381.7517,-990.8569C395.5197,-985.2574 410.3806,-978.7697 423.7014,-972 457.6789,-954.7324 462.7126,-944.2455 496.7014,-927 498.9287,-925.8699 501.2073,-924.7494 503.5197,-923.6426"/>
<polygon fill="#000000" stroke="#000000" points="517.0704,-921.4272 524.7755,-914.1552 514.2172,-915.035 517.0704,-921.4272"/>
<polyline fill="none" stroke="#000000" points="515.6438,-918.2311 511.078,-920.269 "/>
<ellipse fill="none" stroke="#000000" cx="507.4253" cy="-921.8994" rx="4" ry="4"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewI2NPUnframer -->
<g id="node10" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewI2NPUnframer</title>
<g id="a_node10"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewI2NPUnframer | defined in framing.go:43">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M845.508,-763C845.508,-763 734.7352,-763 734.7352,-763 728.7352,-763 722.7352,-757 722.7352,-751 722.7352,-751 722.7352,-739 722.7352,-739 722.7352,-733 728.7352,-727 734.7352,-727 734.7352,-727 845.508,-727 845.508,-727 851.508,-727 857.508,-733 857.508,-739 857.508,-739 857.508,-751 857.508,-751 857.508,-757 851.508,-763 845.508,-763"/>
<text text-anchor="middle" x="790.1216" y="-740.8" font-family="Verdana" font-size="14.00" fill="#000000">NewI2NPUnframer</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Transport -->
<g id="node11" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Transport</title>
<g id="a_node11"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Transport | defined in transport.go:34&#10;at transport.go:62: calling [github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Listener]&#10;at transport.go:37: calling [(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash]&#10;at transport.go:37: calling [(github.com/go&#45;i2p/common/data.Hash).Bytes]&#10;at transport.go:36: calling [github.com/sirupsen/logrus.WithField]&#10;at transport.go:39: calling [github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Config]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M151.4452,-211C151.4452,-211 28.1846,-211 28.1846,-211 22.1846,-211 16.1846,-205 16.1846,-199 16.1846,-199 16.1846,-187 16.1846,-187 16.1846,-181 22.1846,-175 28.1846,-175 28.1846,-175 151.4452,-175 151.4452,-175 157.4452,-175 163.4452,-181 163.4452,-187 163.4452,-187 163.4452,-199 163.4452,-199 163.4452,-205 157.4452,-211 151.4452,-211"/>
<text text-anchor="middle" x="89.8149" y="-188.8" font-family="Verdana" font-size="14.00" fill="#000000">NewNTCP2Transport</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Transport&#45;&gt;github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Config -->
<g id="edge36" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Transport&#45;&gt;github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Config</title>
<g id="a_edge36"><a xlink:title="at transport.go:39: calling [github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Config]">
<path fill="none" stroke="#8b4513" d="M151.5371,-211.0081C185.0017,-220.7717 226.5326,-232.8887 261.4313,-243.0708"/>
<polygon fill="#8b4513" stroke="#8b4513" points="260.5063,-246.4468 271.0864,-245.8878 262.467,-239.727 260.5063,-246.4468"/>
</a>
</g>
</g>
<!-- github.com/sirupsen/logrus.WithField -->
<g id="node12" class="node">
<title>github.com/sirupsen/logrus.WithField</title>
<g id="a_node12"><a xlink:title="github.com/sirupsen/logrus.WithField | defined in exported.go:69">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M361.4401,-113C361.4401,-113 304.8911,-113 304.8911,-113 298.8911,-113 292.8911,-107 292.8911,-101 292.8911,-101 292.8911,-89 292.8911,-89 292.8911,-83 298.8911,-77 304.8911,-77 304.8911,-77 361.4401,-77 361.4401,-77 367.4401,-77 373.4401,-83 373.4401,-89 373.4401,-89 373.4401,-101 373.4401,-101 373.4401,-107 367.4401,-113 361.4401,-113"/>
<text text-anchor="middle" x="333.1656" y="-99.2" font-family="Verdana" font-size="14.00" fill="#000000">logrus</text>
<text text-anchor="middle" x="333.1656" y="-82.4" font-family="Verdana" font-size="14.00" fill="#000000">WithField</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Transport&#45;&gt;github.com/sirupsen/logrus.WithField -->
<g id="edge35" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Transport&#45;&gt;github.com/sirupsen/logrus.WithField</title>
<g id="a_edge35"><a xlink:title="at transport.go:36: calling [github.com/sirupsen/logrus.WithField]">
<path fill="none" stroke="#8b4513" d="M119.9751,-174.9454C142.8883,-161.77 175.4942,-144.1615 205.6298,-132 230.51,-121.9593 259.1251,-113.4013 282.9379,-107.0529"/>
<polygon fill="#8b4513" stroke="#8b4513" points="284.0342,-110.384 292.8245,-104.4695 282.2645,-103.6114 284.0342,-110.384"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Listener -->
<g id="node13" class="node">
<title>github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Listener</title>
<g id="a_node13"><a xlink:title="github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Listener | defined in listener.go:43">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M390.74,-343C390.74,-343 275.5912,-343 275.5912,-343 269.5912,-343 263.5912,-337 263.5912,-331 263.5912,-331 263.5912,-319 263.5912,-319 263.5912,-313 269.5912,-307 275.5912,-307 275.5912,-307 390.74,-307 390.74,-307 396.74,-307 402.74,-313 402.74,-319 402.74,-319 402.74,-331 402.74,-331 402.74,-337 396.74,-343 390.74,-343"/>
<text text-anchor="middle" x="333.1656" y="-329.2" font-family="Verdana" font-size="14.00" fill="#000000">ntcp2</text>
<text text-anchor="middle" x="333.1656" y="-312.4" font-family="Verdana" font-size="14.00" fill="#000000">NewNTCP2Listener</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Transport&#45;&gt;github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Listener -->
<g id="edge11" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Transport&#45;&gt;github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Listener</title>
<g id="a_edge11"><a xlink:title="at transport.go:62: calling [github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Listener]">
<path fill="none" stroke="#8b4513" d="M112.705,-211.1569C141.5965,-233.3762 193.4737,-270.9956 242.6298,-295 248.628,-297.9291 254.9821,-300.6796 261.4313,-303.2351"/>
<polygon fill="#8b4513" stroke="#8b4513" points="260.3266,-306.5594 270.9178,-306.8379 262.8119,-300.0155 260.3266,-306.5594"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Transport&#45;&gt;(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash -->
<g id="edge29" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Transport&#45;&gt;(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash</title>
<g id="a_edge29"><a xlink:title="at transport.go:37: calling [(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash]">
<path fill="none" stroke="#8b4513" d="M140.8304,-174.8686C189.5729,-159.181 265.4386,-139 333.1656,-139 333.1656,-139 333.1656,-139 572.8389,-139 628.8522,-139 692.5389,-146.6522 736.4109,-153.1289"/>
<polygon fill="#8b4513" stroke="#8b4513" points="736.1563,-156.63 746.5662,-154.6594 737.1995,-149.7082 736.1563,-156.63"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Transport&#45;&gt;(github.com/go&#45;i2p/common/data.Hash).Bytes -->
<g id="edge30" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Transport&#45;&gt;(github.com/go&#45;i2p/common/data.Hash).Bytes</title>
<g id="a_edge30"><a xlink:title="at transport.go:37: calling [(github.com/go&#45;i2p/common/data.Hash).Bytes]">
<path fill="none" stroke="#8b4513" d="M96.3417,-211.2997C113.0153,-255.1276 161.6648,-366.2316 242.6298,-417 311.5647,-460.2251 359.7619,-393.6794 423.7014,-444 457.6211,-470.6949 464.6345,-595.1058 496.7014,-624 507.2089,-633.4679 521.5545,-638.8795 534.9615,-641.9657"/>
<polygon fill="#8b4513" stroke="#8b4513" points="534.4686,-645.4352 544.9518,-643.9012 535.8001,-638.563 534.4686,-645.4352"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.UnframeI2NPMessage -->
<g id="node14" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.UnframeI2NPMessage</title>
<g id="a_node14"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.UnframeI2NPMessage | defined in framing.go:32&#10;at framing.go:34: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewI2NPUnframer]&#10;at framing.go:35: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).ReadNextMessage]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M637.1141,-586C637.1141,-586 508.5637,-586 508.5637,-586 502.5637,-586 496.5637,-580 496.5637,-574 496.5637,-574 496.5637,-562 496.5637,-562 496.5637,-556 502.5637,-550 508.5637,-550 508.5637,-550 637.1141,-550 637.1141,-550 643.1141,-550 649.1141,-556 649.1141,-562 649.1141,-562 649.1141,-574 649.1141,-574 649.1141,-580 643.1141,-586 637.1141,-586"/>
<text text-anchor="middle" x="572.8389" y="-563.8" font-family="Verdana" font-size="14.00" fill="#000000">UnframeI2NPMessage</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.UnframeI2NPMessage&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewI2NPUnframer -->
<g id="edge13" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.UnframeI2NPMessage&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewI2NPUnframer</title>
<g id="a_edge13"><a xlink:title="at framing.go:34: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewI2NPUnframer]">
<path fill="none" stroke="#000000" d="M642.5809,-586.0909C644.7857,-587.3111 646.925,-588.6124 648.9764,-590 690.0677,-617.7955 684.0601,-641.4869 717.644,-678 731.123,-692.6546 747.2975,-707.8091 760.9438,-719.9906"/>
<polygon fill="#000000" stroke="#000000" points="758.8344,-722.7972 768.6468,-726.7931 763.4679,-717.5503 758.8344,-722.7972"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).ReadNextMessage -->
<g id="node20" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).ReadNextMessage</title>
<g id="a_node20"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).ReadNextMessage | defined in framing.go:49&#10;at framing.go:52: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).readFull]&#10;at framing.go:61: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).readFull]&#10;at framing.go:67: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/i2np.BaseI2NPMessage).UnmarshalBinary]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M842.5768,-664C842.5768,-664 737.6664,-664 737.6664,-664 731.6664,-664 725.6664,-658 725.6664,-652 725.6664,-652 725.6664,-640 725.6664,-640 725.6664,-634 731.6664,-628 737.6664,-628 737.6664,-628 842.5768,-628 842.5768,-628 848.5768,-628 854.5768,-634 854.5768,-640 854.5768,-640 854.5768,-652 854.5768,-652 854.5768,-658 848.5768,-664 842.5768,-664"/>
<text text-anchor="middle" x="790.1216" y="-641.8" font-family="Verdana" font-size="14.00" fill="#000000">ReadNextMessage</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.UnframeI2NPMessage&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).ReadNextMessage -->
<g id="edge21" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.UnframeI2NPMessage&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).ReadNextMessage</title>
<g id="a_edge21"><a xlink:title="at framing.go:35: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).ReadNextMessage]">
<path fill="none" stroke="#000000" d="M636.9529,-586.0417C641.0349,-587.3397 645.0707,-588.6644 648.9764,-590 678.8571,-600.2181 711.6783,-613.135 738.1456,-623.9878"/>
<polygon fill="#000000" stroke="#000000" points="737.0129,-627.3066 747.592,-627.884 739.682,-620.8354 737.0129,-627.3066"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.init -->
<g id="node15" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.init</title>
<g id="a_node15"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.init | defined in .:0&#10;at errors.go:8: calling [github.com/samber/oops.New]&#10;at errors.go:9: calling [github.com/samber/oops.New]&#10;at errors.go:10: calling [github.com/samber/oops.New]&#10;at errors.go:11: calling [github.com/samber/oops.New]&#10;at errors.go:12: calling [github.com/samber/oops.New]&#10;at errors.go:13: calling [github.com/samber/oops.New]&#10;at errors.go:14: calling [github.com/samber/oops.New]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M104.8149,-52C104.8149,-52 74.8149,-52 74.8149,-52 68.8149,-52 62.8149,-46 62.8149,-40 62.8149,-40 62.8149,-28 62.8149,-28 62.8149,-22 68.8149,-16 74.8149,-16 74.8149,-16 104.8149,-16 104.8149,-16 110.8149,-16 116.8149,-22 116.8149,-28 116.8149,-28 116.8149,-40 116.8149,-40 116.8149,-46 110.8149,-52 104.8149,-52"/>
<text text-anchor="middle" x="89.8149" y="-29.8" font-family="Verdana" font-size="14.00" fill="#000000">init</text>
</a>
</g>
</g>
<!-- github.com/samber/oops.New -->
<g id="node16" class="node">
<title>github.com/samber/oops.New</title>
<g id="a_node16"><a xlink:title="github.com/samber/oops.New | defined in oops.go:29">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M348.1656,-52C348.1656,-52 318.1656,-52 318.1656,-52 312.1656,-52 306.1656,-46 306.1656,-40 306.1656,-40 306.1656,-28 306.1656,-28 306.1656,-22 312.1656,-16 318.1656,-16 318.1656,-16 348.1656,-16 348.1656,-16 354.1656,-16 360.1656,-22 360.1656,-28 360.1656,-28 360.1656,-40 360.1656,-40 360.1656,-46 354.1656,-52 348.1656,-52"/>
<text text-anchor="middle" x="333.1656" y="-38.2" font-family="Verdana" font-size="14.00" fill="#000000">oops</text>
<text text-anchor="middle" x="333.1656" y="-21.4" font-family="Verdana" font-size="14.00" fill="#000000">New</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.init&#45;&gt;github.com/samber/oops.New -->
<g id="edge14" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.init&#45;&gt;github.com/samber/oops.New</title>
<g id="a_edge14"><a xlink:title="at errors.go:8: calling [github.com/samber/oops.New]&#10;at errors.go:9: calling [github.com/samber/oops.New]&#10;at errors.go:10: calling [github.com/samber/oops.New]&#10;at errors.go:11: calling [github.com/samber/oops.New]&#10;at errors.go:12: calling [github.com/samber/oops.New]&#10;at errors.go:13: calling [github.com/samber/oops.New]&#10;at errors.go:14: calling [github.com/samber/oops.New]">
<path fill="none" stroke="#8b4513" d="M117.2573,-34C160.9155,-34 246.2788,-34 295.5834,-34"/>
<polygon fill="#8b4513" stroke="#8b4513" points="295.8235,-37.5001 305.8235,-34 295.8235,-30.5001 295.8235,-37.5001"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/i2np.BaseI2NPMessage).UnmarshalBinary -->
<g id="node19" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/i2np.BaseI2NPMessage).UnmarshalBinary</title>
<g id="a_node19"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/i2np.BaseI2NPMessage).UnmarshalBinary | defined in i2np.go:143">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M1062.5546,-750C1062.5546,-750 963.5036,-750 963.5036,-750 957.5036,-750 951.5036,-744 951.5036,-738 951.5036,-738 951.5036,-726 951.5036,-726 951.5036,-720 957.5036,-714 963.5036,-714 963.5036,-714 1062.5546,-714 1062.5546,-714 1068.5546,-714 1074.5546,-720 1074.5546,-726 1074.5546,-726 1074.5546,-738 1074.5546,-738 1074.5546,-744 1068.5546,-750 1062.5546,-750"/>
<text text-anchor="middle" x="1013.0291" y="-736.2" font-family="Verdana" font-size="14.00" fill="#000000">i2np</text>
<text text-anchor="middle" x="1013.0291" y="-719.4" font-family="Verdana" font-size="14.00" fill="#000000">UnmarshalBinary</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).ReadNextMessage&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/i2np.BaseI2NPMessage).UnmarshalBinary -->
<g id="edge34" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).ReadNextMessage&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/i2np.BaseI2NPMessage).UnmarshalBinary</title>
<g id="a_edge34"><a xlink:title="at framing.go:67: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/i2np.BaseI2NPMessage).UnmarshalBinary]">
<path fill="none" stroke="#8b4513" d="M848.344,-664.1244C852.0519,-665.4021 855.7183,-666.6998 859.2668,-668 894.2994,-680.8367 933.0809,-696.9928 962.9318,-709.8606"/>
<polygon fill="#8b4513" stroke="#8b4513" points="961.7263,-713.1527 972.2937,-713.9146 964.5079,-706.729 961.7263,-713.1527"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).readFull -->
<g id="node21" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).readFull</title>
<g id="a_node21"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).readFull | defined in framing.go:74">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M1036.1835,-664C1036.1835,-664 989.8747,-664 989.8747,-664 983.8747,-664 977.8747,-658 977.8747,-652 977.8747,-652 977.8747,-640 977.8747,-640 977.8747,-634 983.8747,-628 989.8747,-628 989.8747,-628 1036.1835,-628 1036.1835,-628 1042.1835,-628 1048.1835,-634 1048.1835,-640 1048.1835,-640 1048.1835,-652 1048.1835,-652 1048.1835,-658 1042.1835,-664 1036.1835,-664"/>
<text text-anchor="middle" x="1013.0291" y="-641.8" font-family="Verdana" font-size="14.00" fill="#000000">readFull</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).ReadNextMessage&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).readFull -->
<g id="edge17" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).ReadNextMessage&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).readFull</title>
<g id="a_edge17"><a xlink:title="at framing.go:52: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).readFull]&#10;at framing.go:61: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).readFull]">
<path fill="none" stroke="#000000" d="M854.5957,-646C890.795,-646 935.0875,-646 967.6279,-646"/>
<polygon fill="#000000" stroke="#000000" points="967.7549,-649.5001 977.7549,-646 967.7549,-642.5001 967.7549,-649.5001"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).sendWorker&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.FrameI2NPMessage -->
<g id="edge38" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).sendWorker&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.FrameI2NPMessage</title>
<g id="a_edge38"><a xlink:title="at session.go:117: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.FrameI2NPMessage]">
<path fill="none" stroke="#000000" d="M619.185,-968.0915C645.839,-974.4704 680.049,-982.6575 710.8527,-990.0294"/>
<polygon fill="#000000" stroke="#000000" points="710.1803,-993.4672 720.7203,-992.3909 711.8095,-986.6595 710.1803,-993.4672"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).sendWorker&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error -->
<g id="edge32" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).sendWorker&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error</title>
<g id="a_edge32"><a xlink:title="at session.go:119: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]&#10;at session.go:126: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]">
<path fill="none" stroke="#000000" d="M619.1774,-943.2435C629.5381,-938.9756 640.081,-933.609 648.9764,-927 686.1232,-899.4012 678.1643,-871.3742 717.9119,-840.8248"/>
<polygon fill="#000000" stroke="#000000" points="720.118,-843.5501 726.2162,-834.8862 716.0462,-837.8562 720.118,-843.5501"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).setError -->
<g id="node23" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).setError</title>
<g id="a_node23"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).setError | defined in session.go:166">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M812.7059,-956C812.7059,-956 767.5373,-956 767.5373,-956 761.5373,-956 755.5373,-950 755.5373,-944 755.5373,-944 755.5373,-932 755.5373,-932 755.5373,-926 761.5373,-920 767.5373,-920 767.5373,-920 812.7059,-920 812.7059,-920 818.7059,-920 824.7059,-926 824.7059,-932 824.7059,-932 824.7059,-944 824.7059,-944 824.7059,-950 818.7059,-956 812.7059,-956"/>
<text text-anchor="middle" x="790.1216" y="-933.8" font-family="Verdana" font-size="14.00" fill="#000000">setError</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).sendWorker&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).setError -->
<g id="edge39" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).sendWorker&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).setError</title>
<g id="a_edge39"><a xlink:title="at session.go:119: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).setError]&#10;at session.go:126: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).setError]">
<path fill="none" stroke="#000000" d="M619.185,-952.9473C656.4384,-949.6897 708.452,-945.1415 745.2961,-941.9197"/>
<polygon fill="#000000" stroke="#000000" points="745.6038,-945.4063 755.2608,-941.0484 744.9939,-938.4329 745.6038,-945.4063"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).receiveWorker&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error -->
<g id="edge7" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).receiveWorker&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error</title>
<g id="a_edge7"><a xlink:title="at session.go:150: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]">
<path fill="none" stroke="#000000" d="M626.4894,-881.8063C634.1109,-879.4121 641.7942,-876.79 648.9764,-874 680.7205,-861.6686 685.9833,-852.544 717.644,-840 717.9649,-839.8729 718.2869,-839.746 718.6098,-839.6195"/>
<polygon fill="#000000" stroke="#000000" points="720.0556,-842.8158 728.2011,-836.0407 717.6085,-836.2574 720.0556,-842.8158"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).receiveWorker&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewI2NPUnframer -->
<g id="edge49" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).receiveWorker&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewI2NPUnframer</title>
<g id="a_edge49"><a xlink:title="at session.go:140: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewI2NPUnframer]">
<path fill="none" stroke="#000000" d="M595.8672,-877.6391C623.9858,-855.5001 673.2873,-817.5804 717.644,-788 727.6234,-781.3449 738.6444,-774.5423 749.0163,-768.3693"/>
<polygon fill="#000000" stroke="#000000" points="751.08,-771.2159 757.9214,-763.126 747.5283,-765.1838 751.08,-771.2159"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).receiveWorker&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).ReadNextMessage -->
<g id="edge18" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).receiveWorker&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).ReadNextMessage</title>
<g id="a_edge18"><a xlink:title="at session.go:148: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.I2NPUnframer).ReadNextMessage]">
<path fill="none" stroke="#000000" d="M576.4146,-877.8265C585.8779,-834.7505 615.7526,-725.9483 684.9764,-671 693.956,-663.8722 704.6389,-658.7227 715.7006,-655.0133"/>
<polygon fill="#000000" stroke="#000000" points="716.894,-658.3101 725.4856,-652.1106 714.9032,-651.5991 716.894,-658.3101"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).receiveWorker&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).setError -->
<g id="edge10" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).receiveWorker&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).setError</title>
<g id="a_edge10"><a xlink:title="at session.go:150: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Session).setError]">
<path fill="none" stroke="#000000" d="M626.5614,-909.3393C645.0139,-913.6855 665.8398,-918.3311 684.9764,-922 704.7144,-925.7842 726.6755,-929.2428 745.4012,-931.9687"/>
<polygon fill="#000000" stroke="#000000" points="745.0418,-935.4529 755.4369,-933.4051 746.0337,-928.5235 745.0418,-935.4529"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession -->
<g id="node25" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession</title>
<g id="a_node25"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession | defined in transport.go:121&#10;at transport.go:122: calling [(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash]&#10;at transport.go:125: calling [(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash]&#10;at transport.go:143: calling [(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash]&#10;at transport.go:150: calling [(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash]&#10;at transport.go:122: calling [(*github.com/sirupsen/logrus.Entry).WithField]&#10;at transport.go:151: calling [(*github.com/go&#45;i2p/go&#45;noise/ntcp2.NTCP2Config).WithRemoteRouterHash]&#10;at transport.go:154: calling [github.com/go&#45;i2p/go&#45;noise/ntcp2.DialNTCP2WithHandshake]&#10;at transport.go:122: calling [(*github.com/sirupsen/logrus.Entry).Debug]&#10;at transport.go:134: calling [(*github.com/sirupsen/logrus.Entry).Debug]&#10;at transport.go:128: calling [(*github.com/sirupsen/logrus.Entry).Debug]&#10;at transport.go:165: calling [(*github.com/sirupsen/logrus.Entry).Debug]&#10;at transport.go:137: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr]&#10;at transport.go:139: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]&#10;at transport.go:146: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]&#10;at transport.go:156: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]&#10;at transport.go:143: calling [(github.com/go&#45;i2p/common/data.Hash).Bytes]&#10;at transport.go:150: calling [(github.com/go&#45;i2p/common/data.Hash).Bytes]&#10;at transport.go:144: calling [github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Config]&#10;at transport.go:160: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Session]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M121.3037,-658C121.3037,-658 58.3261,-658 58.3261,-658 52.3261,-658 46.3261,-652 46.3261,-646 46.3261,-646 46.3261,-634 46.3261,-634 46.3261,-628 52.3261,-622 58.3261,-622 58.3261,-622 121.3037,-622 121.3037,-622 127.3037,-622 133.3037,-628 133.3037,-634 133.3037,-634 133.3037,-646 133.3037,-646 133.3037,-652 127.3037,-658 121.3037,-658"/>
<text text-anchor="middle" x="89.8149" y="-635.8" font-family="Verdana" font-size="14.00" fill="#000000">GetSession</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error -->
<g id="edge43" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error</title>
<g id="a_edge43"><a xlink:title="at transport.go:139: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]&#10;at transport.go:146: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]&#10;at transport.go:156: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]">
<path fill="none" stroke="#000000" d="M133.3768,-650.8481C144.5294,-655.4584 155.6202,-661.9406 163.6298,-671 242.2179,-759.8884 145.8918,-857.3051 242.6298,-926 308.2453,-972.5944 351.7802,-962.1078 423.7014,-926 472.2392,-901.6317 448.5857,-853.1915 496.7014,-828 564.6062,-792.4477 653.9811,-795.2128 716.1713,-803.5464"/>
<polygon fill="#000000" stroke="#000000" points="715.9037,-807.0434 726.2965,-804.9843 716.888,-800.1129 715.9037,-807.0434"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr -->
<g id="edge42" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr</title>
<g id="a_edge42"><a xlink:title="at transport.go:137: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.ExtractNTCP2Addr]">
<path fill="none" stroke="#000000" d="M133.5224,-628.8854C144.4155,-624.4453 155.3386,-618.3372 163.6298,-610 199.0718,-574.3617 183.1873,-549.9728 205.6298,-505 219.7881,-476.6279 220.4852,-466.6947 242.6298,-444 255.7071,-430.5979 272.4369,-418.7934 287.949,-409.3923"/>
<polygon fill="#000000" stroke="#000000" points="290.0487,-412.2184 296.9047,-404.1409 286.5079,-406.18 290.0487,-412.2184"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Config -->
<g id="edge48" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Config</title>
<g id="a_edge48"><a xlink:title="at transport.go:144: calling [github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Config]">
<path fill="none" stroke="#8b4513" d="M133.5301,-629.9179C144.6842,-625.4604 155.7374,-619.0854 163.6298,-610 258.2856,-501.0364 144.9533,-401.2642 242.6298,-295 247.0568,-290.1838 252.2638,-286.1158 257.9061,-282.6797"/>
<polygon fill="#8b4513" stroke="#8b4513" points="259.9066,-285.5794 267.0814,-277.7836 256.6111,-279.4036 259.9066,-285.5794"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;github.com/go&#45;i2p/go&#45;noise/ntcp2.DialNTCP2WithHandshake -->
<g id="edge28" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;github.com/go&#45;i2p/go&#45;noise/ntcp2.DialNTCP2WithHandshake</title>
<g id="a_edge28"><a xlink:title="at transport.go:154: calling [github.com/go&#45;i2p/go&#45;noise/ntcp2.DialNTCP2WithHandshake]">
<path fill="none" stroke="#8b4513" d="M133.4074,-628.7698C144.3007,-624.3299 155.2526,-618.2508 163.6298,-610 197.6824,-576.461 169.8852,-542.7297 205.6298,-511 213.7482,-503.7935 223.1947,-497.9863 233.2061,-493.3074"/>
<polygon fill="#8b4513" stroke="#8b4513" points="234.717,-496.468 242.5371,-489.3199 231.9662,-490.0311 234.717,-496.468"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Session -->
<g id="edge50" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Session</title>
<g id="a_edge50"><a xlink:title="at transport.go:160: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NewNTCP2Session]">
<path fill="none" stroke="#000000" d="M133.4364,-649.8492C144.8649,-654.4628 156.0853,-661.1966 163.6298,-671 246.0095,-778.0445 117.2224,-869.8772 205.6298,-972 218.351,-986.6947 236.5246,-995.7236 255.1801,-1001.2248"/>
<polygon fill="#000000" stroke="#000000" points="254.3922,-1004.6365 264.9532,-1003.7913 256.1702,-997.8661 254.3922,-1004.6365"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash -->
<g id="edge1" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash</title>
<g id="a_edge1"><a xlink:title="at transport.go:122: calling [(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash]&#10;at transport.go:125: calling [(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash]&#10;at transport.go:143: calling [(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash]&#10;at transport.go:150: calling [(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash]">
<path fill="none" stroke="#8b4513" d="M133.6809,-630.9629C145.1147,-626.5089 156.2768,-619.8744 163.6298,-610 222.1614,-531.3981 134.4131,-238.3229 205.6298,-171 215.9354,-161.2578 318.9841,-166 333.1656,-166 333.1656,-166 333.1656,-166 572.8389,-166 628.5505,-166 692.2834,-164.6692 736.2488,-163.5428"/>
<polygon fill="#8b4513" stroke="#8b4513" points="736.5222,-167.0369 746.4273,-163.2766 736.3392,-160.0393 736.5222,-167.0369"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;noise/ntcp2.NTCP2Config).WithRemoteRouterHash -->
<g id="node29" class="node">
<title>(*github.com/go&#45;i2p/go&#45;noise/ntcp2.NTCP2Config).WithRemoteRouterHash</title>
<g id="a_node29"><a xlink:title="(*github.com/go&#45;i2p/go&#45;noise/ntcp2.NTCP2Config).WithRemoteRouterHash | defined in config.go:147">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M402.5771,-912C402.5771,-912 263.7541,-912 263.7541,-912 257.7541,-912 251.7541,-906 251.7541,-900 251.7541,-900 251.7541,-888 251.7541,-888 251.7541,-882 257.7541,-876 263.7541,-876 263.7541,-876 402.5771,-876 402.5771,-876 408.5771,-876 414.5771,-882 414.5771,-888 414.5771,-888 414.5771,-900 414.5771,-900 414.5771,-906 408.5771,-912 402.5771,-912"/>
<text text-anchor="middle" x="333.1656" y="-898.2" font-family="Verdana" font-size="14.00" fill="#000000">ntcp2</text>
<text text-anchor="middle" x="333.1656" y="-881.4" font-family="Verdana" font-size="14.00" fill="#000000">WithRemoteRouterHash</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;(*github.com/go&#45;i2p/go&#45;noise/ntcp2.NTCP2Config).WithRemoteRouterHash -->
<g id="edge27" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;(*github.com/go&#45;i2p/go&#45;noise/ntcp2.NTCP2Config).WithRemoteRouterHash</title>
<g id="a_edge27"><a xlink:title="at transport.go:151: calling [(*github.com/go&#45;i2p/go&#45;noise/ntcp2.NTCP2Config).WithRemoteRouterHash]">
<path fill="none" stroke="#8b4513" d="M133.6856,-651.0753C144.7079,-655.6755 155.655,-662.0957 163.6298,-671 207.5379,-720.0259 165.9961,-760.4583 205.6298,-813 224.7758,-838.3815 254.3821,-857.8864 280.2513,-871.3896"/>
<polygon fill="#8b4513" stroke="#8b4513" points="278.7177,-874.5361 289.2224,-875.9153 281.8706,-868.2863 278.7177,-874.5361"/>
</a>
</g>
</g>
<!-- (*github.com/sirupsen/logrus.Entry).WithField -->
<g id="node30" class="node">
<title>(*github.com/sirupsen/logrus.Entry).WithField</title>
<g id="a_node30"><a xlink:title="(*github.com/sirupsen/logrus.Entry).WithField | defined in entry.go:120">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M361.4401,-719C361.4401,-719 304.8911,-719 304.8911,-719 298.8911,-719 292.8911,-713 292.8911,-707 292.8911,-707 292.8911,-695 292.8911,-695 292.8911,-689 298.8911,-683 304.8911,-683 304.8911,-683 361.4401,-683 361.4401,-683 367.4401,-683 373.4401,-689 373.4401,-695 373.4401,-695 373.4401,-707 373.4401,-707 373.4401,-713 367.4401,-719 361.4401,-719"/>
<text text-anchor="middle" x="333.1656" y="-705.2" font-family="Verdana" font-size="14.00" fill="#000000">logrus</text>
<text text-anchor="middle" x="333.1656" y="-688.4" font-family="Verdana" font-size="14.00" fill="#000000">WithField</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;(*github.com/sirupsen/logrus.Entry).WithField -->
<g id="edge2" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;(*github.com/sirupsen/logrus.Entry).WithField</title>
<g id="a_edge2"><a xlink:title="at transport.go:122: calling [(*github.com/sirupsen/logrus.Entry).WithField]">
<path fill="none" stroke="#8b4513" d="M133.3211,-650.9056C175.3025,-661.4289 238.8137,-677.3491 282.9276,-688.407"/>
<polygon fill="#8b4513" stroke="#8b4513" points="282.3129,-691.8611 292.8639,-690.8977 284.015,-685.0712 282.3129,-691.8611"/>
</a>
</g>
</g>
<!-- (*github.com/sirupsen/logrus.Entry).Debug -->
<g id="node31" class="node">
<title>(*github.com/sirupsen/logrus.Entry).Debug</title>
<g id="a_node31"><a xlink:title="(*github.com/sirupsen/logrus.Entry).Debug | defined in entry.go:312">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M351.9876,-780C351.9876,-780 314.3436,-780 314.3436,-780 308.3436,-780 302.3436,-774 302.3436,-768 302.3436,-768 302.3436,-756 302.3436,-756 302.3436,-750 308.3436,-744 314.3436,-744 314.3436,-744 351.9876,-744 351.9876,-744 357.9876,-744 363.9876,-750 363.9876,-756 363.9876,-756 363.9876,-768 363.9876,-768 363.9876,-774 357.9876,-780 351.9876,-780"/>
<text text-anchor="middle" x="333.1656" y="-766.2" font-family="Verdana" font-size="14.00" fill="#000000">logrus</text>
<text text-anchor="middle" x="333.1656" y="-749.4" font-family="Verdana" font-size="14.00" fill="#000000">Debug</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;(*github.com/sirupsen/logrus.Entry).Debug -->
<g id="edge40" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;(*github.com/sirupsen/logrus.Entry).Debug</title>
<g id="a_edge40"><a xlink:title="at transport.go:122: calling [(*github.com/sirupsen/logrus.Entry).Debug]&#10;at transport.go:134: calling [(*github.com/sirupsen/logrus.Entry).Debug]&#10;at transport.go:128: calling [(*github.com/sirupsen/logrus.Entry).Debug]&#10;at transport.go:165: calling [(*github.com/sirupsen/logrus.Entry).Debug]">
<path fill="none" stroke="#8b4513" d="M133.6616,-656.204C143.7506,-660.5322 154.2624,-665.5421 163.6298,-671 201.9583,-693.3322 203.4635,-711.172 242.6298,-732 258.2479,-740.3055 276.5968,-746.9033 292.6778,-751.7725"/>
<polygon fill="#8b4513" stroke="#8b4513" points="291.7734,-755.1544 302.3527,-754.5806 293.7247,-748.4318 291.7734,-755.1544"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;(github.com/go&#45;i2p/common/data.Hash).Bytes -->
<g id="edge47" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).GetSession&#45;&gt;(github.com/go&#45;i2p/common/data.Hash).Bytes</title>
<g id="a_edge47"><a xlink:title="at transport.go:143: calling [(github.com/go&#45;i2p/common/data.Hash).Bytes]&#10;at transport.go:150: calling [(github.com/go&#45;i2p/common/data.Hash).Bytes]">
<path fill="none" stroke="#8b4513" d="M133.646,-625.9447C143.9474,-621.644 154.5579,-616.3377 163.6298,-610 206.4457,-580.0884 194.8714,-544.1432 242.6298,-523 261.0266,-514.8555 405.7865,-513.844 423.7014,-523 473.0199,-548.2059 451.4032,-592.1295 496.7014,-624 507.8893,-631.8715 521.8709,-636.9472 534.7888,-640.2114"/>
<polygon fill="#8b4513" stroke="#8b4513" points="534.3242,-643.6938 544.8469,-642.4597 535.8513,-636.8624 534.3242,-643.6938"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).Close -->
<g id="node26" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).Close</title>
<g id="a_node26"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).Close | defined in transport.go:173&#10;at transport.go:198: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M105.7014,-719C105.7014,-719 73.9284,-719 73.9284,-719 67.9284,-719 61.9284,-713 61.9284,-707 61.9284,-707 61.9284,-695 61.9284,-695 61.9284,-689 67.9284,-683 73.9284,-683 73.9284,-683 105.7014,-683 105.7014,-683 111.7014,-683 117.7014,-689 117.7014,-695 117.7014,-695 117.7014,-707 117.7014,-707 117.7014,-713 111.7014,-719 105.7014,-719"/>
<text text-anchor="middle" x="89.8149" y="-696.8" font-family="Verdana" font-size="14.00" fill="#000000">Close</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).Close&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error -->
<g id="edge12" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).Close&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error</title>
<g id="a_edge12"><a xlink:title="at transport.go:198: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]">
<path fill="none" stroke="#000000" d="M107.5223,-719.0569C134.0684,-744.6924 187.0306,-790.4699 242.6298,-808 319.3815,-832.1993 343.45,-814.0124 423.7014,-808 456.4204,-805.5487 464.1917,-801.4342 496.7014,-797 580.2279,-785.6073 600.8322,-779.1206 684.9764,-774 710.1552,-772.4678 736.3299,-783.3717 756.2654,-794.7064"/>
<polygon fill="#000000" stroke="#000000" points="754.5803,-797.7767 764.9599,-799.9015 758.1708,-791.7677 754.5803,-797.7767"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).Compatible -->
<g id="node27" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).Compatible</title>
<g id="a_node27"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).Compatible | defined in transport.go:168&#10;at transport.go:169: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.SupportsNTCP2]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M122.6437,-536C122.6437,-536 56.9861,-536 56.9861,-536 50.9861,-536 44.9861,-530 44.9861,-524 44.9861,-524 44.9861,-512 44.9861,-512 44.9861,-506 50.9861,-500 56.9861,-500 56.9861,-500 122.6437,-500 122.6437,-500 128.6437,-500 134.6437,-506 134.6437,-512 134.6437,-512 134.6437,-524 134.6437,-524 134.6437,-530 128.6437,-536 122.6437,-536"/>
<text text-anchor="middle" x="89.8149" y="-513.8" font-family="Verdana" font-size="14.00" fill="#000000">Compatible</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).Compatible&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.SupportsNTCP2 -->
<g id="edge31" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).Compatible&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.SupportsNTCP2</title>
<g id="a_edge31"><a xlink:title="at transport.go:169: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.SupportsNTCP2]">
<path fill="none" stroke="#000000" d="M134.7928,-512.3497C145.4228,-509.0769 155.8997,-503.9643 163.6298,-496 248.3372,-408.726 143.2562,-304.1212 242.6298,-234 333.0335,-170.2083 470.6343,-235.4505 535.948,-273.5974"/>
<polygon fill="#000000" stroke="#000000" points="534.2876,-276.682 544.6718,-278.784 537.8648,-270.6651 534.2876,-276.682"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).SetIdentity -->
<g id="node28" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).SetIdentity</title>
<g id="a_node28"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).SetIdentity | defined in transport.go:88&#10;at transport.go:92: calling [(github.com/go&#45;i2p/common/data.Hash).Bytes]&#10;at transport.go:92: calling [(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash]&#10;at transport.go:110: calling [github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Listener]&#10;at transport.go:102: calling [(*github.com/sirupsen/logrus.Entry).WithError]&#10;at transport.go:93: calling [github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Config]&#10;at transport.go:95: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]&#10;at transport.go:107: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]&#10;at transport.go:112: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]&#10;at transport.go:102: calling [(*github.com/sirupsen/logrus.Entry).Warn]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M120.7508,-597C120.7508,-597 58.879,-597 58.879,-597 52.879,-597 46.879,-591 46.879,-585 46.879,-585 46.879,-573 46.879,-573 46.879,-567 52.879,-561 58.879,-561 58.879,-561 120.7508,-561 120.7508,-561 126.7508,-561 132.7508,-567 132.7508,-573 132.7508,-573 132.7508,-585 132.7508,-585 132.7508,-591 126.7508,-597 120.7508,-597"/>
<text text-anchor="middle" x="89.8149" y="-574.8" font-family="Verdana" font-size="14.00" fill="#000000">SetIdentity</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).SetIdentity&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error -->
<g id="edge45" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).SetIdentity&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error</title>
<g id="a_edge45"><a xlink:title="at transport.go:95: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]&#10;at transport.go:107: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]&#10;at transport.go:112: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.WrapNTCP2Error]">
<path fill="none" stroke="#000000" d="M132.7849,-589.3787C144.1991,-594.004 155.5749,-600.6114 163.6298,-610 257.8934,-719.8718 128.5238,-836.9087 242.6298,-926 306.0616,-975.5261 350.3613,-959.1309 423.7014,-926 446.3724,-915.7585 444.6,-902.9633 460.7014,-884 477.0552,-864.7394 474.2892,-851.6667 496.7014,-840 515.6853,-830.1179 635.553,-823.7463 716.0885,-820.5238"/>
<polygon fill="#000000" stroke="#000000" points="716.34,-824.0167 726.1952,-820.1276 716.0657,-817.0221 716.34,-824.0167"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).SetIdentity&#45;&gt;github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Config -->
<g id="edge44" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).SetIdentity&#45;&gt;github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Config</title>
<g id="a_edge44"><a xlink:title="at transport.go:93: calling [github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Config]">
<path fill="none" stroke="#8b4513" d="M132.5373,-569.5104C144.084,-565.039 155.5931,-558.5083 163.6298,-549 239.9464,-458.709 151.5713,-370.3993 242.6298,-295 247.2205,-291.1987 252.3026,-287.8541 257.6481,-284.9127"/>
<polygon fill="#8b4513" stroke="#8b4513" points="259.4581,-287.9215 266.8526,-280.3339 256.3404,-281.6541 259.4581,-287.9215"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).SetIdentity&#45;&gt;github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Listener -->
<g id="edge23" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).SetIdentity&#45;&gt;github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Listener</title>
<g id="a_edge23"><a xlink:title="at transport.go:110: calling [github.com/go&#45;i2p/go&#45;noise/ntcp2.NewNTCP2Listener]">
<path fill="none" stroke="#8b4513" d="M132.709,-568.1515C143.855,-563.6865 155.1094,-557.4993 163.6298,-549 229.25,-483.543 175.1985,-419.5896 242.6298,-356 246.2181,-352.6161 250.1918,-349.6001 254.4131,-346.9123"/>
<polygon fill="#8b4513" stroke="#8b4513" points="256.3982,-349.8107 263.3817,-341.8432 252.9538,-343.7167 256.3982,-349.8107"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).SetIdentity&#45;&gt;(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash -->
<g id="edge22" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).SetIdentity&#45;&gt;(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash</title>
<g id="a_edge22"><a xlink:title="at transport.go:92: calling [(*github.com/go&#45;i2p/common/router_info.RouterInfo).IdentHash]">
<path fill="none" stroke="#8b4513" d="M132.7001,-570.101C144.3943,-565.6412 155.9433,-558.9688 163.6298,-549 252.2942,-434.0084 131.6418,-349.9409 205.6298,-225 216.0027,-207.4836 223.3492,-204.5328 242.6298,-198 288.4339,-182.4802 411.8394,-193 460.2014,-193 460.2014,-193 460.2014,-193 572.8389,-193 629.047,-193 692.6215,-182.7074 736.4112,-173.9837"/>
<polygon fill="#8b4513" stroke="#8b4513" points="737.1689,-177.4013 746.2711,-171.9792 735.7743,-170.5416 737.1689,-177.4013"/>
</a>
</g>
</g>
<!-- (*github.com/sirupsen/logrus.Entry).WithError -->
<g id="node32" class="node">
<title>(*github.com/sirupsen/logrus.Entry).WithError</title>
<g id="a_node32"><a xlink:title="(*github.com/sirupsen/logrus.Entry).WithError | defined in entry.go:106">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M361.6971,-597C361.6971,-597 304.6341,-597 304.6341,-597 298.6341,-597 292.6341,-591 292.6341,-585 292.6341,-585 292.6341,-573 292.6341,-573 292.6341,-567 298.6341,-561 304.6341,-561 304.6341,-561 361.6971,-561 361.6971,-561 367.6971,-561 373.6971,-567 373.6971,-573 373.6971,-573 373.6971,-585 373.6971,-585 373.6971,-591 367.6971,-597 361.6971,-597"/>
<text text-anchor="middle" x="333.1656" y="-583.2" font-family="Verdana" font-size="14.00" fill="#000000">logrus</text>
<text text-anchor="middle" x="333.1656" y="-566.4" font-family="Verdana" font-size="14.00" fill="#000000">WithError</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).SetIdentity&#45;&gt;(*github.com/sirupsen/logrus.Entry).WithError -->
<g id="edge37" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).SetIdentity&#45;&gt;(*github.com/sirupsen/logrus.Entry).WithError</title>
<g id="a_edge37"><a xlink:title="at transport.go:102: calling [(*github.com/sirupsen/logrus.Entry).WithError]">
<path fill="none" stroke="#8b4513" d="M132.7609,-579C174.4468,-579 237.7382,-579 282.0093,-579"/>
<polygon fill="#8b4513" stroke="#8b4513" points="282.2691,-582.5001 292.2691,-579 282.2691,-575.5001 282.2691,-582.5001"/>
</a>
</g>
</g>
<!-- (*github.com/sirupsen/logrus.Entry).Warn -->
<g id="node33" class="node">
<title>(*github.com/sirupsen/logrus.Entry).Warn</title>
<g id="a_node33"><a xlink:title="(*github.com/sirupsen/logrus.Entry).Warn | defined in entry.go:324">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M350.6614,-658C350.6614,-658 315.6698,-658 315.6698,-658 309.6698,-658 303.6698,-652 303.6698,-646 303.6698,-646 303.6698,-634 303.6698,-634 303.6698,-628 309.6698,-622 315.6698,-622 315.6698,-622 350.6614,-622 350.6614,-622 356.6614,-622 362.6614,-628 362.6614,-634 362.6614,-634 362.6614,-646 362.6614,-646 362.6614,-652 356.6614,-658 350.6614,-658"/>
<text text-anchor="middle" x="333.1656" y="-644.2" font-family="Verdana" font-size="14.00" fill="#000000">logrus</text>
<text text-anchor="middle" x="333.1656" y="-627.4" font-family="Verdana" font-size="14.00" fill="#000000">Warn</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).SetIdentity&#45;&gt;(*github.com/sirupsen/logrus.Entry).Warn -->
<g id="edge51" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).SetIdentity&#45;&gt;(*github.com/sirupsen/logrus.Entry).Warn</title>
<g id="a_edge51"><a xlink:title="at transport.go:102: calling [(*github.com/sirupsen/logrus.Entry).Warn]">
<path fill="none" stroke="#8b4513" d="M132.7609,-589.7652C178.3323,-601.1884 249.7248,-619.0841 293.8602,-630.1474"/>
<polygon fill="#8b4513" stroke="#8b4513" points="293.1018,-633.5656 303.6528,-632.6021 294.8039,-626.7756 293.1018,-633.5656"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).SetIdentity&#45;&gt;(github.com/go&#45;i2p/common/data.Hash).Bytes -->
<g id="edge19" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport/ntcp2.NTCP2Transport).SetIdentity&#45;&gt;(github.com/go&#45;i2p/common/data.Hash).Bytes</title>
<g id="a_edge19"><a xlink:title="at transport.go:92: calling [(github.com/go&#45;i2p/common/data.Hash).Bytes]">
<path fill="none" stroke="#8b4513" d="M132.6252,-590.5578C143.7704,-595.1751 155.0453,-601.4834 163.6298,-610 226.8094,-672.6796 168.3157,-745.0325 242.6298,-794 276.2295,-816.1397 388.839,-814.0928 423.7014,-794 479.7747,-761.6825 445.7121,-707.8589 496.7014,-668 507.6719,-659.4243 521.8675,-654.1907 535.0237,-650.9971"/>
<polygon fill="#8b4513" stroke="#8b4513" points="535.7497,-654.4211 544.8112,-648.931 534.3039,-647.572 535.7497,-654.4211"/>
</a>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 91 KiB

View File

@@ -1,118 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: gocallvis Pages: 1 -->
<svg width="479pt" height="279pt"
viewBox="0.00 0.00 479.00 279.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(0 279)">
<title>gocallvis</title>
<polygon fill="#d3d3d3" stroke="transparent" points="0,0 0,-279 479.0016,-279 479.0016,0 0,0"/>
<g id="clust1" class="cluster">
<title>cluster_focus</title>
<polygon fill="#e6ecfa" stroke="#000000" stroke-width=".5" points="8,-8 8,-271 479.0016,-271 479.0016,-8 8,-8"/>
<text text-anchor="middle" x="243.5008" y="-250.8" font-family="Arial" font-size="18.00" fill="#000000">obfs</text>
</g>
<g id="clust3" class="cluster">
<title>cluster_*github.com/go&#45;i2p/go&#45;i2p/lib/crypto/aes.AESSymmetricEncrypter</title>
<g id="a_clust3"><a xlink:title="type: *github.com/go&#45;i2p/go&#45;i2p/lib/crypto/aes.AESSymmetricEncrypter">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M286.3045,-16C286.3045,-16 458.6173,-16 458.6173,-16 464.6173,-16 470.6173,-22 470.6173,-28 470.6173,-28 470.6173,-82 470.6173,-82 470.6173,-88 464.6173,-94 458.6173,-94 458.6173,-94 286.3045,-94 286.3045,-94 280.3045,-94 274.3045,-88 274.3045,-82 274.3045,-82 274.3045,-28 274.3045,-28 274.3045,-22 280.3045,-16 286.3045,-16"/>
<text text-anchor="middle" x="372.4609" y="-24.5" font-family="Arial" font-size="15.00" fill="#222222">(*AESSymmetricEncrypter)</text>
</a>
</g>
</g>
<g id="clust2" class="cluster">
<title>cluster_*github.com/go&#45;i2p/go&#45;i2p/lib/crypto/aes.AESSymmetricDecrypter</title>
<g id="a_clust2"><a xlink:title="type: *github.com/go&#45;i2p/go&#45;i2p/lib/crypto/aes.AESSymmetricDecrypter">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M285.9202,-155C285.9202,-155 459.0016,-155 459.0016,-155 465.0016,-155 471.0016,-161 471.0016,-167 471.0016,-167 471.0016,-221 471.0016,-221 471.0016,-227 465.0016,-233 459.0016,-233 459.0016,-233 285.9202,-233 285.9202,-233 279.9202,-233 273.9202,-227 273.9202,-221 273.9202,-221 273.9202,-167 273.9202,-167 273.9202,-161 279.9202,-155 285.9202,-155"/>
<text text-anchor="middle" x="372.4609" y="-163.5" font-family="Arial" font-size="15.00" fill="#222222">(*AESSymmetricDecrypter)</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/obfs.DeobfuscateEphemeralKey -->
<g id="node1" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/obfs.DeobfuscateEphemeralKey</title>
<g id="a_node1"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport/obfs.DeobfuscateEphemeralKey | defined in obfs.go:36&#10;at obfs.go:38: calling [github.com/samber/oops.Errorf]&#10;at obfs.go:51: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/crypto/aes.AESSymmetricDecrypter).DecryptNoPadding]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M181.8803,-169C181.8803,-169 28.0399,-169 28.0399,-169 22.0399,-169 16.0399,-163 16.0399,-157 16.0399,-157 16.0399,-145 16.0399,-145 16.0399,-139 22.0399,-133 28.0399,-133 28.0399,-133 181.8803,-133 181.8803,-133 187.8803,-133 193.8803,-139 193.8803,-145 193.8803,-145 193.8803,-157 193.8803,-157 193.8803,-163 187.8803,-169 181.8803,-169"/>
<text text-anchor="middle" x="104.9601" y="-146.8" font-family="Verdana" font-size="14.00" fill="#000000">DeobfuscateEphemeralKey</text>
</a>
</g>
</g>
<!-- github.com/samber/oops.Errorf -->
<g id="node2" class="node">
<title>github.com/samber/oops.Errorf</title>
<g id="a_node2"><a xlink:title="github.com/samber/oops.Errorf | defined in oops.go:34">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M389.1562,-147C389.1562,-147 354.7656,-147 354.7656,-147 348.7656,-147 342.7656,-141 342.7656,-135 342.7656,-135 342.7656,-123 342.7656,-123 342.7656,-117 348.7656,-111 354.7656,-111 354.7656,-111 389.1562,-111 389.1562,-111 395.1562,-111 401.1562,-117 401.1562,-123 401.1562,-123 401.1562,-135 401.1562,-135 401.1562,-141 395.1562,-147 389.1562,-147"/>
<text text-anchor="middle" x="371.9609" y="-133.2" font-family="Verdana" font-size="14.00" fill="#000000">oops</text>
<text text-anchor="middle" x="371.9609" y="-116.4" font-family="Verdana" font-size="14.00" fill="#000000">Errorf</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/obfs.DeobfuscateEphemeralKey&#45;&gt;github.com/samber/oops.Errorf -->
<g id="edge1" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/obfs.DeobfuscateEphemeralKey&#45;&gt;github.com/samber/oops.Errorf</title>
<g id="a_edge1"><a xlink:title="at obfs.go:38: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M194.2387,-143.6437C241.1517,-139.7783 296.2782,-135.236 332.5523,-132.2471"/>
<polygon fill="#8b4513" stroke="#8b4513" points="333.0385,-135.719 342.7173,-131.4096 332.4636,-128.7427 333.0385,-135.719"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/crypto/aes.AESSymmetricDecrypter).DecryptNoPadding -->
<g id="node4" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/crypto/aes.AESSymmetricDecrypter).DecryptNoPadding</title>
<g id="a_node4"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/crypto/aes.AESSymmetricDecrypter).DecryptNoPadding | defined in aes_decrypter.go:49">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M426.0423,-225C426.0423,-225 317.8795,-225 317.8795,-225 311.8795,-225 305.8795,-219 305.8795,-213 305.8795,-213 305.8795,-201 305.8795,-201 305.8795,-195 311.8795,-189 317.8795,-189 317.8795,-189 426.0423,-189 426.0423,-189 432.0423,-189 438.0423,-195 438.0423,-201 438.0423,-201 438.0423,-213 438.0423,-213 438.0423,-219 432.0423,-225 426.0423,-225"/>
<text text-anchor="middle" x="371.9609" y="-211.2" font-family="Verdana" font-size="14.00" fill="#000000">aes</text>
<text text-anchor="middle" x="371.9609" y="-194.4" font-family="Verdana" font-size="14.00" fill="#000000">DecryptNoPadding</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/obfs.DeobfuscateEphemeralKey&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/crypto/aes.AESSymmetricDecrypter).DecryptNoPadding -->
<g id="edge2" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/obfs.DeobfuscateEphemeralKey&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/crypto/aes.AESSymmetricDecrypter).DecryptNoPadding</title>
<g id="a_edge2"><a xlink:title="at obfs.go:51: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/crypto/aes.AESSymmetricDecrypter).DecryptNoPadding]">
<path fill="none" stroke="#8b4513" d="M190.9105,-169.027C224.6204,-176.0972 262.983,-184.1433 295.6918,-191.0035"/>
<polygon fill="#8b4513" stroke="#8b4513" points="295.1443,-194.4648 305.6498,-193.0921 296.5812,-187.6138 295.1443,-194.4648"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/obfs.ObfuscateEphemeralKey -->
<g id="node3" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/obfs.ObfuscateEphemeralKey</title>
<g id="a_node3"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport/obfs.ObfuscateEphemeralKey | defined in obfs.go:9&#10;at obfs.go:11: calling [github.com/samber/oops.Errorf]&#10;at obfs.go:24: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/crypto/aes.AESSymmetricEncrypter).EncryptNoPadding]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M175.166,-95C175.166,-95 34.7542,-95 34.7542,-95 28.7542,-95 22.7542,-89 22.7542,-83 22.7542,-83 22.7542,-71 22.7542,-71 22.7542,-65 28.7542,-59 34.7542,-59 34.7542,-59 175.166,-59 175.166,-59 181.166,-59 187.166,-65 187.166,-71 187.166,-71 187.166,-83 187.166,-83 187.166,-89 181.166,-95 175.166,-95"/>
<text text-anchor="middle" x="104.9601" y="-72.8" font-family="Verdana" font-size="14.00" fill="#000000">ObfuscateEphemeralKey</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/obfs.ObfuscateEphemeralKey&#45;&gt;github.com/samber/oops.Errorf -->
<g id="edge3" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/obfs.ObfuscateEphemeralKey&#45;&gt;github.com/samber/oops.Errorf</title>
<g id="a_edge3"><a xlink:title="at obfs.go:11: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M187.2478,-93.026C235.5675,-102.4366 294.4375,-113.9019 332.531,-121.3208"/>
<polygon fill="#8b4513" stroke="#8b4513" points="332.2136,-124.8247 342.6983,-123.3009 333.5518,-117.9538 332.2136,-124.8247"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/crypto/aes.AESSymmetricEncrypter).EncryptNoPadding -->
<g id="node5" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/crypto/aes.AESSymmetricEncrypter).EncryptNoPadding</title>
<g id="a_node5"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/crypto/aes.AESSymmetricEncrypter).EncryptNoPadding | defined in aes_encrypter.go:36">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M425.7741,-86C425.7741,-86 318.1477,-86 318.1477,-86 312.1477,-86 306.1477,-80 306.1477,-74 306.1477,-74 306.1477,-62 306.1477,-62 306.1477,-56 312.1477,-50 318.1477,-50 318.1477,-50 425.7741,-50 425.7741,-50 431.7741,-50 437.7741,-56 437.7741,-62 437.7741,-62 437.7741,-74 437.7741,-74 437.7741,-80 431.7741,-86 425.7741,-86"/>
<text text-anchor="middle" x="371.9609" y="-72.2" font-family="Verdana" font-size="14.00" fill="#000000">aes</text>
<text text-anchor="middle" x="371.9609" y="-55.4" font-family="Verdana" font-size="14.00" fill="#000000">EncryptNoPadding</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/obfs.ObfuscateEphemeralKey&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/crypto/aes.AESSymmetricEncrypter).EncryptNoPadding -->
<g id="edge4" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/obfs.ObfuscateEphemeralKey&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/crypto/aes.AESSymmetricEncrypter).EncryptNoPadding</title>
<g id="a_edge4"><a xlink:title="at obfs.go:24: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/crypto/aes.AESSymmetricEncrypter).EncryptNoPadding]">
<path fill="none" stroke="#8b4513" d="M187.2478,-74.2263C221.824,-73.0608 261.8023,-71.7132 295.7046,-70.5704"/>
<polygon fill="#8b4513" stroke="#8b4513" points="296.1419,-74.0578 306.0183,-70.2228 295.906,-67.0617 296.1419,-74.0578"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -1,45 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: gocallvis Pages: 1 -->
<svg width="287pt" height="98pt"
viewBox="0.00 0.00 286.75 98.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(0 98)">
<title>gocallvis</title>
<polygon fill="#d3d3d3" stroke="transparent" points="0,0 0,-98 286.7518,-98 286.7518,0 0,0"/>
<g id="clust1" class="cluster">
<title>cluster_focus</title>
<polygon fill="#e6ecfa" stroke="#000000" stroke-width=".5" points="8,-8 8,-90 278.7518,-90 278.7518,-8 8,-8"/>
<text text-anchor="middle" x="143.3759" y="-69.8" font-family="Arial" font-size="18.00" fill="#000000">padding</text>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/padding.QuantAdjustment -->
<g id="node1" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/padding.QuantAdjustment</title>
<g id="a_node1"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport/padding.QuantAdjustment | defined in quant.go:45&#10;at quant.go:52: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/padding.Quant]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M127.3109,-52C127.3109,-52 28.2291,-52 28.2291,-52 22.2291,-52 16.2291,-46 16.2291,-40 16.2291,-40 16.2291,-28 16.2291,-28 16.2291,-22 22.2291,-16 28.2291,-16 28.2291,-16 127.3109,-16 127.3109,-16 133.3109,-16 139.3109,-22 139.3109,-28 139.3109,-28 139.3109,-40 139.3109,-40 139.3109,-46 133.3109,-52 127.3109,-52"/>
<text text-anchor="middle" x="77.77" y="-29.8" font-family="Verdana" font-size="14.00" fill="#000000">QuantAdjustment</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/padding.Quant -->
<g id="node2" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/padding.Quant</title>
<g id="a_node2"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport/padding.Quant | defined in quant.go:27">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M258.8581,-52C258.8581,-52 224.4337,-52 224.4337,-52 218.4337,-52 212.4337,-46 212.4337,-40 212.4337,-40 212.4337,-28 212.4337,-28 212.4337,-22 218.4337,-16 224.4337,-16 224.4337,-16 258.8581,-16 258.8581,-16 264.8581,-16 270.8581,-22 270.8581,-28 270.8581,-28 270.8581,-40 270.8581,-40 270.8581,-46 264.8581,-52 258.8581,-52"/>
<text text-anchor="middle" x="241.6459" y="-29.8" font-family="Verdana" font-size="14.00" fill="#000000">Quant</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport/padding.QuantAdjustment&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/padding.Quant -->
<g id="edge1" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport/padding.QuantAdjustment&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/transport/padding.Quant</title>
<g id="a_edge1"><a xlink:title="at quant.go:52: calling [github.com/go&#45;i2p/go&#45;i2p/lib/transport/padding.Quant]">
<path fill="none" stroke="#000000" d="M139.7245,-34C160.5819,-34 183.2791,-34 201.9491,-34"/>
<polygon fill="#000000" stroke="#000000" points="202.1501,-37.5001 212.15,-34 202.15,-30.5001 202.1501,-37.5001"/>
</a>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -4,73 +4,81 @@
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: gocallvis Pages: 1 -->
<svg width="334pt" height="1052pt"
viewBox="0.00 0.00 334.39 1052.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(0 1052)">
<svg width="770pt" height="911pt"
viewBox="0.00 0.00 770.19 911.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(0 911)">
<title>gocallvis</title>
<polygon fill="#d3d3d3" stroke="transparent" points="0,0 0,-1052 334.3928,-1052 334.3928,0 0,0"/>
<polygon fill="#d3d3d3" stroke="transparent" points="0,0 0,-911 770.1868,-911 770.1868,0 0,0"/>
<g id="clust1" class="cluster">
<title>cluster_focus</title>
<polygon fill="#e6ecfa" stroke="#000000" stroke-width=".5" points="8,-8 8,-1044 326.3928,-1044 326.3928,-8 8,-8"/>
<text text-anchor="middle" x="167.1964" y="-1023.8" font-family="Arial" font-size="18.00" fill="#000000">reseed</text>
<polygon fill="#e6ecfa" stroke="#000000" stroke-width=".5" points="8,-8 8,-903 762.1868,-903 762.1868,-8 8,-8"/>
<text text-anchor="middle" x="385.0934" y="-882.8" font-family="Arial" font-size="18.00" fill="#000000">reseed</text>
</g>
<g id="clust6" class="cluster">
<title>cluster_github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed</title>
<g id="a_clust6"><a xlink:title="type: github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed">
<path fill="#b0c4de" stroke="#000000" stroke-width=".5" d="M28,-481C28,-481 120.2034,-481 120.2034,-481 126.2034,-481 132.2034,-487 132.2034,-493 132.2034,-493 132.2034,-547 132.2034,-547 132.2034,-553 126.2034,-559 120.2034,-559 120.2034,-559 28,-559 28,-559 22,-559 16,-553 16,-547 16,-547 16,-493 16,-493 16,-487 22,-481 28,-481"/>
<text text-anchor="middle" x="74.1017" y="-489.5" font-family="Arial" font-size="15.00" fill="#222222">(Reseed)</text>
<path fill="#b0c4de" stroke="#000000" stroke-width=".5" d="M28,-504C28,-504 562.9974,-504 562.9974,-504 568.9974,-504 574.9974,-510 574.9974,-516 574.9974,-516 574.9974,-814 574.9974,-814 574.9974,-820 568.9974,-826 562.9974,-826 562.9974,-826 28,-826 28,-826 22,-826 16,-820 16,-814 16,-814 16,-516 16,-516 16,-510 22,-504 28,-504"/>
<text text-anchor="middle" x="295.4987" y="-512.5" font-family="Arial" font-size="15.00" fill="#222222">(Reseed)</text>
</a>
</g>
</g>
<g id="clust5" class="cluster">
<title>cluster_github.com/eyedeekay/go&#45;unzip/pkg/unzip.Unzip</title>
<g id="a_clust5"><a xlink:title="type: github.com/eyedeekay/go&#45;unzip/pkg/unzip.Unzip">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M229.5863,-928C229.5863,-928 286.0099,-928 286.0099,-928 292.0099,-928 298.0099,-934 298.0099,-940 298.0099,-940 298.0099,-994 298.0099,-994 298.0099,-1000 292.0099,-1006 286.0099,-1006 286.0099,-1006 229.5863,-1006 229.5863,-1006 223.5863,-1006 217.5863,-1000 217.5863,-994 217.5863,-994 217.5863,-940 217.5863,-940 217.5863,-934 223.5863,-928 229.5863,-928"/>
<text text-anchor="middle" x="257.7981" y="-936.5" font-family="Arial" font-size="15.00" fill="#222222">(Unzip)</text>
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M668.8803,-640C668.8803,-640 725.3039,-640 725.3039,-640 731.3039,-640 737.3039,-646 737.3039,-652 737.3039,-652 737.3039,-706 737.3039,-706 737.3039,-712 731.3039,-718 725.3039,-718 725.3039,-718 668.8803,-718 668.8803,-718 662.8803,-718 656.8803,-712 656.8803,-706 656.8803,-706 656.8803,-652 656.8803,-652 656.8803,-646 662.8803,-640 668.8803,-640"/>
<text text-anchor="middle" x="697.0921" y="-648.5" font-family="Arial" font-size="15.00" fill="#222222">(Unzip)</text>
</a>
</g>
</g>
<g id="clust4" class="cluster">
<title>cluster_*github.com/sirupsen/logrus.Logger</title>
<g id="a_clust4"><a xlink:title="type: *github.com/sirupsen/logrus.Logger">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M230.7406,-781C230.7406,-781 284.8556,-781 284.8556,-781 290.8556,-781 296.8556,-787 296.8556,-793 296.8556,-793 296.8556,-908 296.8556,-908 296.8556,-914 290.8556,-920 284.8556,-920 284.8556,-920 230.7406,-920 230.7406,-920 224.7406,-920 218.7406,-914 218.7406,-908 218.7406,-908 218.7406,-793 218.7406,-793 218.7406,-787 224.7406,-781 230.7406,-781"/>
<text text-anchor="middle" x="257.7981" y="-789.5" font-family="Arial" font-size="15.00" fill="#222222">(*Logger)</text>
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M670.0346,-726C670.0346,-726 724.1496,-726 724.1496,-726 730.1496,-726 736.1496,-732 736.1496,-738 736.1496,-738 736.1496,-853 736.1496,-853 736.1496,-859 730.1496,-865 724.1496,-865 724.1496,-865 670.0346,-865 670.0346,-865 664.0346,-865 658.0346,-859 658.0346,-853 658.0346,-853 658.0346,-738 658.0346,-738 658.0346,-732 664.0346,-726 670.0346,-726"/>
<text text-anchor="middle" x="697.0921" y="-734.5" font-family="Arial" font-size="15.00" fill="#222222">(*Logger)</text>
</a>
</g>
</g>
<g id="clust3" class="cluster">
<title>cluster_*github.com/go&#45;i2p/logger.Logger</title>
<g id="a_clust3"><a xlink:title="type: *github.com/go&#45;i2p/logger.Logger">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M218.6887,-451C218.6887,-451 296.9075,-451 296.9075,-451 302.9075,-451 308.9075,-457 308.9075,-463 308.9075,-463 308.9075,-761 308.9075,-761 308.9075,-767 302.9075,-773 296.9075,-773 296.9075,-773 218.6887,-773 218.6887,-773 212.6887,-773 206.6887,-767 206.6887,-761 206.6887,-761 206.6887,-463 206.6887,-463 206.6887,-457 212.6887,-451 218.6887,-451"/>
<text text-anchor="middle" x="257.7981" y="-459.5" font-family="Arial" font-size="15.00" fill="#222222">(*Logger)</text>
<title>cluster_*github.com/go&#45;i2p/su3.SU3</title>
<g id="a_clust3"><a xlink:title="type: *github.com/go&#45;i2p/su3.SU3">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M461.0801,-357C461.0801,-357 530.7337,-357 530.7337,-357 536.7337,-357 542.7337,-363 542.7337,-369 542.7337,-369 542.7337,-484 542.7337,-484 542.7337,-490 536.7337,-496 530.7337,-496 530.7337,-496 461.0801,-496 461.0801,-496 455.0801,-496 449.0801,-490 449.0801,-484 449.0801,-484 449.0801,-369 449.0801,-369 449.0801,-363 455.0801,-357 461.0801,-357"/>
<text text-anchor="middle" x="495.9069" y="-365.5" font-family="Arial" font-size="15.00" fill="#222222">(*SU3)</text>
</a>
</g>
</g>
<g id="clust2" class="cluster">
<title>cluster_*github.com/go&#45;i2p/go&#45;i2p/lib/su3.SU3</title>
<g id="a_clust2"><a xlink:title="type: *github.com/go&#45;i2p/go&#45;i2p/lib/su3.SU3">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M222.9713,-304C222.9713,-304 292.6249,-304 292.6249,-304 298.6249,-304 304.6249,-310 304.6249,-316 304.6249,-316 304.6249,-431 304.6249,-431 304.6249,-437 298.6249,-443 292.6249,-443 292.6249,-443 222.9713,-443 222.9713,-443 216.9713,-443 210.9713,-437 210.9713,-431 210.9713,-431 210.9713,-316 210.9713,-316 210.9713,-310 216.9713,-304 222.9713,-304"/>
<text text-anchor="middle" x="257.7981" y="-312.5" font-family="Arial" font-size="15.00" fill="#222222">(*SU3)</text>
<title>cluster_*github.com/go&#45;i2p/logger.Logger</title>
<g id="a_clust2"><a xlink:title="type: *github.com/go&#45;i2p/logger.Logger">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M657.9827,-135C657.9827,-135 736.2015,-135 736.2015,-135 742.2015,-135 748.2015,-141 748.2015,-147 748.2015,-147 748.2015,-445 748.2015,-445 748.2015,-451 742.2015,-457 736.2015,-457 736.2015,-457 657.9827,-457 657.9827,-457 651.9827,-457 645.9827,-451 645.9827,-445 645.9827,-445 645.9827,-147 645.9827,-147 645.9827,-141 651.9827,-135 657.9827,-135"/>
<text text-anchor="middle" x="697.0921" y="-143.5" font-family="Arial" font-size="15.00" fill="#222222">(*Logger)</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/su3.Read -->
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.init -->
<g id="node1" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/su3.Read</title>
<g id="a_node1"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/su3.Read | defined in su3.go:208">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M272.7981,-113C272.7981,-113 242.7981,-113 242.7981,-113 236.7981,-113 230.7981,-107 230.7981,-101 230.7981,-101 230.7981,-89 230.7981,-89 230.7981,-83 236.7981,-77 242.7981,-77 242.7981,-77 272.7981,-77 272.7981,-77 278.7981,-77 284.7981,-83 284.7981,-89 284.7981,-89 284.7981,-101 284.7981,-101 284.7981,-107 278.7981,-113 272.7981,-113"/>
<text text-anchor="middle" x="257.7981" y="-99.2" font-family="Verdana" font-size="14.00" fill="#000000">su3</text>
<text text-anchor="middle" x="257.7981" y="-82.4" font-family="Verdana" font-size="14.00" fill="#000000">Read</text>
<title>github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.init</title>
<g id="a_node1"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.init | defined in .:0&#10;at reseed.go:21: calling [github.com/go&#45;i2p/logger.GetGoI2PLogger]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M89.1017,-52C89.1017,-52 59.1017,-52 59.1017,-52 53.1017,-52 47.1017,-46 47.1017,-40 47.1017,-40 47.1017,-28 47.1017,-28 47.1017,-22 53.1017,-16 59.1017,-16 59.1017,-16 89.1017,-16 89.1017,-16 95.1017,-16 101.1017,-22 101.1017,-28 101.1017,-28 101.1017,-40 101.1017,-40 101.1017,-46 95.1017,-52 89.1017,-52"/>
<text text-anchor="middle" x="74.1017" y="-29.8" font-family="Verdana" font-size="14.00" fill="#000000">init</text>
</a>
</g>
</g>
<!-- github.com/samber/oops.Errorf -->
<!-- github.com/go&#45;i2p/logger.GetGoI2PLogger -->
<g id="node2" class="node">
<title>github.com/samber/oops.Errorf</title>
<g id="a_node2"><a xlink:title="github.com/samber/oops.Errorf | defined in oops.go:34">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M274.9934,-174C274.9934,-174 240.6028,-174 240.6028,-174 234.6028,-174 228.6028,-168 228.6028,-162 228.6028,-162 228.6028,-150 228.6028,-150 228.6028,-144 234.6028,-138 240.6028,-138 240.6028,-138 274.9934,-138 274.9934,-138 280.9934,-138 286.9934,-144 286.9934,-150 286.9934,-150 286.9934,-162 286.9934,-162 286.9934,-168 280.9934,-174 274.9934,-174"/>
<text text-anchor="middle" x="257.7981" y="-160.2" font-family="Verdana" font-size="14.00" fill="#000000">oops</text>
<text text-anchor="middle" x="257.7981" y="-143.4" font-family="Verdana" font-size="14.00" fill="#000000">Errorf</text>
<title>github.com/go&#45;i2p/logger.GetGoI2PLogger</title>
<g id="a_node2"><a xlink:title="github.com/go&#45;i2p/logger.GetGoI2PLogger | defined in log.go:120">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M323.1994,-52C323.1994,-52 225.8204,-52 225.8204,-52 219.8204,-52 213.8204,-46 213.8204,-40 213.8204,-40 213.8204,-28 213.8204,-28 213.8204,-22 219.8204,-16 225.8204,-16 225.8204,-16 323.1994,-16 323.1994,-16 329.1994,-16 335.1994,-22 335.1994,-28 335.1994,-28 335.1994,-40 335.1994,-40 335.1994,-46 329.1994,-52 323.1994,-52"/>
<text text-anchor="middle" x="274.5099" y="-38.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="274.5099" y="-21.4" font-family="Verdana" font-size="14.00" fill="#000000">GetGoI2PLogger</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.init&#45;&gt;github.com/go&#45;i2p/logger.GetGoI2PLogger -->
<g id="edge39" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.init&#45;&gt;github.com/go&#45;i2p/logger.GetGoI2PLogger</title>
<g id="a_edge39"><a xlink:title="at reseed.go:21: calling [github.com/go&#45;i2p/logger.GetGoI2PLogger]">
<path fill="none" stroke="#8b4513" d="M101.1296,-34C127.2879,-34 168.0747,-34 203.5183,-34"/>
<polygon fill="#8b4513" stroke="#8b4513" points="203.8391,-37.5001 213.8391,-34 203.8391,-30.5001 203.8391,-37.5001"/>
</a>
</g>
</g>
@@ -78,117 +86,109 @@
<g id="node3" class="node">
<title>github.com/eyedeekay/go&#45;unzip/pkg/unzip.New</title>
<g id="a_node3"><a xlink:title="github.com/eyedeekay/go&#45;unzip/pkg/unzip.New | defined in unzip.go:18">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M273.4034,-235C273.4034,-235 242.1928,-235 242.1928,-235 236.1928,-235 230.1928,-229 230.1928,-223 230.1928,-223 230.1928,-211 230.1928,-211 230.1928,-205 236.1928,-199 242.1928,-199 242.1928,-199 273.4034,-199 273.4034,-199 279.4034,-199 285.4034,-205 285.4034,-211 285.4034,-211 285.4034,-223 285.4034,-223 285.4034,-229 279.4034,-235 273.4034,-235"/>
<text text-anchor="middle" x="257.7981" y="-221.2" font-family="Verdana" font-size="14.00" fill="#000000">unzip</text>
<text text-anchor="middle" x="257.7981" y="-204.4" font-family="Verdana" font-size="14.00" fill="#000000">New</text>
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M712.6974,-632C712.6974,-632 681.4868,-632 681.4868,-632 675.4868,-632 669.4868,-626 669.4868,-620 669.4868,-620 669.4868,-608 669.4868,-608 669.4868,-602 675.4868,-596 681.4868,-596 681.4868,-596 712.6974,-596 712.6974,-596 718.6974,-596 724.6974,-602 724.6974,-608 724.6974,-608 724.6974,-620 724.6974,-620 724.6974,-626 718.6974,-632 712.6974,-632"/>
<text text-anchor="middle" x="697.0921" y="-618.2" font-family="Verdana" font-size="14.00" fill="#000000">unzip</text>
<text text-anchor="middle" x="697.0921" y="-601.4" font-family="Verdana" font-size="14.00" fill="#000000">New</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.ReadRouterInfo -->
<!-- github.com/samber/oops.Errorf -->
<g id="node4" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.ReadRouterInfo</title>
<g id="a_node4"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.ReadRouterInfo | defined in router_info.go:235">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M302.9877,-296C302.9877,-296 212.6085,-296 212.6085,-296 206.6085,-296 200.6085,-290 200.6085,-284 200.6085,-284 200.6085,-272 200.6085,-272 200.6085,-266 206.6085,-260 212.6085,-260 212.6085,-260 302.9877,-260 302.9877,-260 308.9877,-260 314.9877,-266 314.9877,-272 314.9877,-272 314.9877,-284 314.9877,-284 314.9877,-290 308.9877,-296 302.9877,-296"/>
<text text-anchor="middle" x="257.7981" y="-282.2" font-family="Verdana" font-size="14.00" fill="#000000">router_info</text>
<text text-anchor="middle" x="257.7981" y="-265.4" font-family="Verdana" font-size="14.00" fill="#000000">ReadRouterInfo</text>
<title>github.com/samber/oops.Errorf</title>
<g id="a_node4"><a xlink:title="github.com/samber/oops.Errorf | defined in oops.go:34">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M714.2874,-571C714.2874,-571 679.8968,-571 679.8968,-571 673.8968,-571 667.8968,-565 667.8968,-559 667.8968,-559 667.8968,-547 667.8968,-547 667.8968,-541 673.8968,-535 679.8968,-535 679.8968,-535 714.2874,-535 714.2874,-535 720.2874,-535 726.2874,-541 726.2874,-547 726.2874,-547 726.2874,-559 726.2874,-559 726.2874,-565 720.2874,-571 714.2874,-571"/>
<text text-anchor="middle" x="697.0921" y="-557.2" font-family="Verdana" font-size="14.00" fill="#000000">oops</text>
<text text-anchor="middle" x="697.0921" y="-540.4" font-family="Verdana" font-size="14.00" fill="#000000">Errorf</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.init -->
<!-- github.com/go&#45;i2p/common/router_info.ReadRouterInfo -->
<g id="node5" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.init</title>
<g id="a_node5"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.init | defined in .:0&#10;at reseed.go:21: calling [github.com/go&#45;i2p/logger.GetGoI2PLogger]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M89.1017,-52C89.1017,-52 59.1017,-52 59.1017,-52 53.1017,-52 47.1017,-46 47.1017,-40 47.1017,-40 47.1017,-28 47.1017,-28 47.1017,-22 53.1017,-16 59.1017,-16 59.1017,-16 89.1017,-16 89.1017,-16 95.1017,-16 101.1017,-22 101.1017,-28 101.1017,-28 101.1017,-40 101.1017,-40 101.1017,-46 95.1017,-52 89.1017,-52"/>
<text text-anchor="middle" x="74.1017" y="-29.8" font-family="Verdana" font-size="14.00" fill="#000000">init</text>
<title>github.com/go&#45;i2p/common/router_info.ReadRouterInfo</title>
<g id="a_node5"><a xlink:title="github.com/go&#45;i2p/common/router_info.ReadRouterInfo | defined in router_info_struct.go:484">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M742.2817,-510C742.2817,-510 651.9025,-510 651.9025,-510 645.9025,-510 639.9025,-504 639.9025,-498 639.9025,-498 639.9025,-486 639.9025,-486 639.9025,-480 645.9025,-474 651.9025,-474 651.9025,-474 742.2817,-474 742.2817,-474 748.2817,-474 754.2817,-480 754.2817,-486 754.2817,-486 754.2817,-498 754.2817,-498 754.2817,-504 748.2817,-510 742.2817,-510"/>
<text text-anchor="middle" x="697.0921" y="-496.2" font-family="Verdana" font-size="14.00" fill="#000000">router_info</text>
<text text-anchor="middle" x="697.0921" y="-479.4" font-family="Verdana" font-size="14.00" fill="#000000">ReadRouterInfo</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/logger.GetGoI2PLogger -->
<!-- github.com/go&#45;i2p/su3.Read -->
<g id="node6" class="node">
<title>github.com/go&#45;i2p/logger.GetGoI2PLogger</title>
<g id="a_node6"><a xlink:title="github.com/go&#45;i2p/logger.GetGoI2PLogger | defined in log.go:120">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M306.4876,-52C306.4876,-52 209.1086,-52 209.1086,-52 203.1086,-52 197.1086,-46 197.1086,-40 197.1086,-40 197.1086,-28 197.1086,-28 197.1086,-22 203.1086,-16 209.1086,-16 209.1086,-16 306.4876,-16 306.4876,-16 312.4876,-16 318.4876,-22 318.4876,-28 318.4876,-28 318.4876,-40 318.4876,-40 318.4876,-46 312.4876,-52 306.4876,-52"/>
<text text-anchor="middle" x="257.7981" y="-38.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="257.7981" y="-21.4" font-family="Verdana" font-size="14.00" fill="#000000">GetGoI2PLogger</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.init&#45;&gt;github.com/go&#45;i2p/logger.GetGoI2PLogger -->
<g id="edge7" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.init&#45;&gt;github.com/go&#45;i2p/logger.GetGoI2PLogger</title>
<g id="a_edge7"><a xlink:title="at reseed.go:21: calling [github.com/go&#45;i2p/logger.GetGoI2PLogger]">
<path fill="none" stroke="#8b4513" d="M101.2067,-34C123.8024,-34 157.0344,-34 187.0776,-34"/>
<polygon fill="#8b4513" stroke="#8b4513" points="187.124,-37.5001 197.124,-34 187.124,-30.5001 187.124,-37.5001"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/su3.SU3).Content -->
<g id="node7" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/su3.SU3).Content</title>
<g id="a_node7"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/su3.SU3).Content | defined in su3.go:197">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M280.1313,-374C280.1313,-374 235.4649,-374 235.4649,-374 229.4649,-374 223.4649,-368 223.4649,-362 223.4649,-362 223.4649,-350 223.4649,-350 223.4649,-344 229.4649,-338 235.4649,-338 235.4649,-338 280.1313,-338 280.1313,-338 286.1313,-338 292.1313,-344 292.1313,-350 292.1313,-350 292.1313,-362 292.1313,-362 292.1313,-368 286.1313,-374 280.1313,-374"/>
<text text-anchor="middle" x="257.7981" y="-360.2" font-family="Verdana" font-size="14.00" fill="#000000">su3</text>
<text text-anchor="middle" x="257.7981" y="-343.4" font-family="Verdana" font-size="14.00" fill="#000000">Content</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/su3.SU3).Signature -->
<g id="node8" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/su3.SU3).Signature</title>
<g id="a_node8"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/su3.SU3).Signature | defined in su3.go:203">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M284.4525,-435C284.4525,-435 231.1437,-435 231.1437,-435 225.1437,-435 219.1437,-429 219.1437,-423 219.1437,-423 219.1437,-411 219.1437,-411 219.1437,-405 225.1437,-399 231.1437,-399 231.1437,-399 284.4525,-399 284.4525,-399 290.4525,-399 296.4525,-405 296.4525,-411 296.4525,-411 296.4525,-423 296.4525,-423 296.4525,-429 290.4525,-435 284.4525,-435"/>
<text text-anchor="middle" x="257.7981" y="-421.2" font-family="Verdana" font-size="14.00" fill="#000000">su3</text>
<text text-anchor="middle" x="257.7981" y="-404.4" font-family="Verdana" font-size="14.00" fill="#000000">Signature</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/logger.Logger).WithField -->
<g id="node9" class="node">
<title>(*github.com/go&#45;i2p/logger.Logger).WithField</title>
<g id="a_node9"><a xlink:title="(*github.com/go&#45;i2p/logger.Logger).WithField | defined in log.go:54">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M286.0726,-521C286.0726,-521 229.5236,-521 229.5236,-521 223.5236,-521 217.5236,-515 217.5236,-509 217.5236,-509 217.5236,-497 217.5236,-497 217.5236,-491 223.5236,-485 229.5236,-485 229.5236,-485 286.0726,-485 286.0726,-485 292.0726,-485 298.0726,-491 298.0726,-497 298.0726,-497 298.0726,-509 298.0726,-509 298.0726,-515 292.0726,-521 286.0726,-521"/>
<text text-anchor="middle" x="257.7981" y="-507.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="257.7981" y="-490.4" font-family="Verdana" font-size="14.00" fill="#000000">WithField</text>
<title>github.com/go&#45;i2p/su3.Read</title>
<g id="a_node6"><a xlink:title="github.com/go&#45;i2p/su3.Read | defined in su3.go:208">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M510.9069,-160C510.9069,-160 480.9069,-160 480.9069,-160 474.9069,-160 468.9069,-154 468.9069,-148 468.9069,-148 468.9069,-136 468.9069,-136 468.9069,-130 474.9069,-124 480.9069,-124 480.9069,-124 510.9069,-124 510.9069,-124 516.9069,-124 522.9069,-130 522.9069,-136 522.9069,-136 522.9069,-148 522.9069,-148 522.9069,-154 516.9069,-160 510.9069,-160"/>
<text text-anchor="middle" x="495.9069" y="-146.2" font-family="Verdana" font-size="14.00" fill="#000000">su3</text>
<text text-anchor="middle" x="495.9069" y="-129.4" font-family="Verdana" font-size="14.00" fill="#000000">Read</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/logger.Logger).WithError -->
<g id="node10" class="node">
<g id="node7" class="node">
<title>(*github.com/go&#45;i2p/logger.Logger).WithError</title>
<g id="a_node10"><a xlink:title="(*github.com/go&#45;i2p/logger.Logger).WithError | defined in log.go:66">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M286.3296,-582C286.3296,-582 229.2666,-582 229.2666,-582 223.2666,-582 217.2666,-576 217.2666,-570 217.2666,-570 217.2666,-558 217.2666,-558 217.2666,-552 223.2666,-546 229.2666,-546 229.2666,-546 286.3296,-546 286.3296,-546 292.3296,-546 298.3296,-552 298.3296,-558 298.3296,-558 298.3296,-570 298.3296,-570 298.3296,-576 292.3296,-582 286.3296,-582"/>
<text text-anchor="middle" x="257.7981" y="-568.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="257.7981" y="-551.4" font-family="Verdana" font-size="14.00" fill="#000000">WithError</text>
<g id="a_node7"><a xlink:title="(*github.com/go&#45;i2p/logger.Logger).WithError | defined in log.go:66">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M725.6236,-327C725.6236,-327 668.5606,-327 668.5606,-327 662.5606,-327 656.5606,-321 656.5606,-315 656.5606,-315 656.5606,-303 656.5606,-303 656.5606,-297 662.5606,-291 668.5606,-291 668.5606,-291 725.6236,-291 725.6236,-291 731.6236,-291 737.6236,-297 737.6236,-303 737.6236,-303 737.6236,-315 737.6236,-315 737.6236,-321 731.6236,-327 725.6236,-327"/>
<text text-anchor="middle" x="697.0921" y="-313.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="697.0921" y="-296.4" font-family="Verdana" font-size="14.00" fill="#000000">WithError</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/logger.Logger).Error -->
<g id="node11" class="node">
<g id="node8" class="node">
<title>(*github.com/go&#45;i2p/logger.Logger).Error</title>
<g id="a_node11"><a xlink:title="(*github.com/go&#45;i2p/logger.Logger).Error | defined in log.go:42">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M275.5644,-643C275.5644,-643 240.0318,-643 240.0318,-643 234.0318,-643 228.0318,-637 228.0318,-631 228.0318,-631 228.0318,-619 228.0318,-619 228.0318,-613 234.0318,-607 240.0318,-607 240.0318,-607 275.5644,-607 275.5644,-607 281.5644,-607 287.5644,-613 287.5644,-619 287.5644,-619 287.5644,-631 287.5644,-631 287.5644,-637 281.5644,-643 275.5644,-643"/>
<text text-anchor="middle" x="257.7981" y="-629.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="257.7981" y="-612.4" font-family="Verdana" font-size="14.00" fill="#000000">Error</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/logger.Logger).WithFields -->
<g id="node12" class="node">
<title>(*github.com/go&#45;i2p/logger.Logger).WithFields</title>
<g id="a_node12"><a xlink:title="(*github.com/go&#45;i2p/logger.Logger).WithFields | defined in log.go:60">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M289.0172,-704C289.0172,-704 226.579,-704 226.579,-704 220.579,-704 214.579,-698 214.579,-692 214.579,-692 214.579,-680 214.579,-680 214.579,-674 220.579,-668 226.579,-668 226.579,-668 289.0172,-668 289.0172,-668 295.0172,-668 301.0172,-674 301.0172,-680 301.0172,-680 301.0172,-692 301.0172,-692 301.0172,-698 295.0172,-704 289.0172,-704"/>
<text text-anchor="middle" x="257.7981" y="-690.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="257.7981" y="-673.4" font-family="Verdana" font-size="14.00" fill="#000000">WithFields</text>
<g id="a_node8"><a xlink:title="(*github.com/go&#45;i2p/logger.Logger).Error | defined in log.go:42">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M714.8584,-266C714.8584,-266 679.3258,-266 679.3258,-266 673.3258,-266 667.3258,-260 667.3258,-254 667.3258,-254 667.3258,-242 667.3258,-242 667.3258,-236 673.3258,-230 679.3258,-230 679.3258,-230 714.8584,-230 714.8584,-230 720.8584,-230 726.8584,-236 726.8584,-242 726.8584,-242 726.8584,-254 726.8584,-254 726.8584,-260 720.8584,-266 714.8584,-266"/>
<text text-anchor="middle" x="697.0921" y="-252.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="697.0921" y="-235.4" font-family="Verdana" font-size="14.00" fill="#000000">Error</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/logger.Logger).Warn -->
<g id="node13" class="node">
<g id="node9" class="node">
<title>(*github.com/go&#45;i2p/logger.Logger).Warn</title>
<g id="a_node13"><a xlink:title="(*github.com/go&#45;i2p/logger.Logger).Warn | defined in log.go:30">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M275.5644,-765C275.5644,-765 240.0318,-765 240.0318,-765 234.0318,-765 228.0318,-759 228.0318,-753 228.0318,-753 228.0318,-741 228.0318,-741 228.0318,-735 234.0318,-729 240.0318,-729 240.0318,-729 275.5644,-729 275.5644,-729 281.5644,-729 287.5644,-735 287.5644,-741 287.5644,-741 287.5644,-753 287.5644,-753 287.5644,-759 281.5644,-765 275.5644,-765"/>
<text text-anchor="middle" x="257.7981" y="-751.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="257.7981" y="-734.4" font-family="Verdana" font-size="14.00" fill="#000000">Warn</text>
<g id="a_node9"><a xlink:title="(*github.com/go&#45;i2p/logger.Logger).Warn | defined in log.go:30">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M714.8584,-449C714.8584,-449 679.3258,-449 679.3258,-449 673.3258,-449 667.3258,-443 667.3258,-437 667.3258,-437 667.3258,-425 667.3258,-425 667.3258,-419 673.3258,-413 679.3258,-413 679.3258,-413 714.8584,-413 714.8584,-413 720.8584,-413 726.8584,-419 726.8584,-425 726.8584,-425 726.8584,-437 726.8584,-437 726.8584,-443 720.8584,-449 714.8584,-449"/>
<text text-anchor="middle" x="697.0921" y="-435.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="697.0921" y="-418.4" font-family="Verdana" font-size="14.00" fill="#000000">Warn</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/logger.Logger).WithField -->
<g id="node10" class="node">
<title>(*github.com/go&#45;i2p/logger.Logger).WithField</title>
<g id="a_node10"><a xlink:title="(*github.com/go&#45;i2p/logger.Logger).WithField | defined in log.go:54">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M725.3666,-388C725.3666,-388 668.8176,-388 668.8176,-388 662.8176,-388 656.8176,-382 656.8176,-376 656.8176,-376 656.8176,-364 656.8176,-364 656.8176,-358 662.8176,-352 668.8176,-352 668.8176,-352 725.3666,-352 725.3666,-352 731.3666,-352 737.3666,-358 737.3666,-364 737.3666,-364 737.3666,-376 737.3666,-376 737.3666,-382 731.3666,-388 725.3666,-388"/>
<text text-anchor="middle" x="697.0921" y="-374.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="697.0921" y="-357.4" font-family="Verdana" font-size="14.00" fill="#000000">WithField</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/logger.Logger).WithFields -->
<g id="node11" class="node">
<title>(*github.com/go&#45;i2p/logger.Logger).WithFields</title>
<g id="a_node11"><a xlink:title="(*github.com/go&#45;i2p/logger.Logger).WithFields | defined in log.go:60">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M728.3112,-205C728.3112,-205 665.873,-205 665.873,-205 659.873,-205 653.873,-199 653.873,-193 653.873,-193 653.873,-181 653.873,-181 653.873,-175 659.873,-169 665.873,-169 665.873,-169 728.3112,-169 728.3112,-169 734.3112,-169 740.3112,-175 740.3112,-181 740.3112,-181 740.3112,-193 740.3112,-193 740.3112,-199 734.3112,-205 728.3112,-205"/>
<text text-anchor="middle" x="697.0921" y="-191.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="697.0921" y="-174.4" font-family="Verdana" font-size="14.00" fill="#000000">WithFields</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/su3.SU3).Content -->
<g id="node12" class="node">
<title>(*github.com/go&#45;i2p/su3.SU3).Content</title>
<g id="a_node12"><a xlink:title="(*github.com/go&#45;i2p/su3.SU3).Content | defined in su3.go:197">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M518.2401,-427C518.2401,-427 473.5737,-427 473.5737,-427 467.5737,-427 461.5737,-421 461.5737,-415 461.5737,-415 461.5737,-403 461.5737,-403 461.5737,-397 467.5737,-391 473.5737,-391 473.5737,-391 518.2401,-391 518.2401,-391 524.2401,-391 530.2401,-397 530.2401,-403 530.2401,-403 530.2401,-415 530.2401,-415 530.2401,-421 524.2401,-427 518.2401,-427"/>
<text text-anchor="middle" x="495.9069" y="-413.2" font-family="Verdana" font-size="14.00" fill="#000000">su3</text>
<text text-anchor="middle" x="495.9069" y="-396.4" font-family="Verdana" font-size="14.00" fill="#000000">Content</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/su3.SU3).Signature -->
<g id="node13" class="node">
<title>(*github.com/go&#45;i2p/su3.SU3).Signature</title>
<g id="a_node13"><a xlink:title="(*github.com/go&#45;i2p/su3.SU3).Signature | defined in su3.go:203">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M522.5613,-488C522.5613,-488 469.2525,-488 469.2525,-488 463.2525,-488 457.2525,-482 457.2525,-476 457.2525,-476 457.2525,-464 457.2525,-464 457.2525,-458 463.2525,-452 469.2525,-452 469.2525,-452 522.5613,-452 522.5613,-452 528.5613,-452 534.5613,-458 534.5613,-464 534.5613,-464 534.5613,-476 534.5613,-476 534.5613,-482 528.5613,-488 522.5613,-488"/>
<text text-anchor="middle" x="495.9069" y="-474.2" font-family="Verdana" font-size="14.00" fill="#000000">su3</text>
<text text-anchor="middle" x="495.9069" y="-457.4" font-family="Verdana" font-size="14.00" fill="#000000">Signature</text>
</a>
</g>
</g>
@@ -196,9 +196,9 @@
<g id="node14" class="node">
<title>(*github.com/sirupsen/logrus.Logger).Debug</title>
<g id="a_node14"><a xlink:title="(*github.com/sirupsen/logrus.Logger).Debug | defined in logger.go:221">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M276.6201,-851C276.6201,-851 238.9761,-851 238.9761,-851 232.9761,-851 226.9761,-845 226.9761,-839 226.9761,-839 226.9761,-827 226.9761,-827 226.9761,-821 232.9761,-815 238.9761,-815 238.9761,-815 276.6201,-815 276.6201,-815 282.6201,-815 288.6201,-821 288.6201,-827 288.6201,-827 288.6201,-839 288.6201,-839 288.6201,-845 282.6201,-851 276.6201,-851"/>
<text text-anchor="middle" x="257.7981" y="-837.2" font-family="Verdana" font-size="14.00" fill="#000000">logrus</text>
<text text-anchor="middle" x="257.7981" y="-820.4" font-family="Verdana" font-size="14.00" fill="#000000">Debug</text>
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M715.9141,-857C715.9141,-857 678.2701,-857 678.2701,-857 672.2701,-857 666.2701,-851 666.2701,-845 666.2701,-845 666.2701,-833 666.2701,-833 666.2701,-827 672.2701,-821 678.2701,-821 678.2701,-821 715.9141,-821 715.9141,-821 721.9141,-821 727.9141,-827 727.9141,-833 727.9141,-833 727.9141,-845 727.9141,-845 727.9141,-851 721.9141,-857 715.9141,-857"/>
<text text-anchor="middle" x="697.0921" y="-843.2" font-family="Verdana" font-size="14.00" fill="#000000">logrus</text>
<text text-anchor="middle" x="697.0921" y="-826.4" font-family="Verdana" font-size="14.00" fill="#000000">Debug</text>
</a>
</g>
</g>
@@ -206,9 +206,9 @@
<g id="node15" class="node">
<title>(*github.com/sirupsen/logrus.Logger).Println</title>
<g id="a_node15"><a xlink:title="(*github.com/sirupsen/logrus.Logger).Println | defined in logger.go:315">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M276.9132,-912C276.9132,-912 238.683,-912 238.683,-912 232.683,-912 226.683,-906 226.683,-900 226.683,-900 226.683,-888 226.683,-888 226.683,-882 232.683,-876 238.683,-876 238.683,-876 276.9132,-876 276.9132,-876 282.9132,-876 288.9132,-882 288.9132,-888 288.9132,-888 288.9132,-900 288.9132,-900 288.9132,-906 282.9132,-912 276.9132,-912"/>
<text text-anchor="middle" x="257.7981" y="-898.2" font-family="Verdana" font-size="14.00" fill="#000000">logrus</text>
<text text-anchor="middle" x="257.7981" y="-881.4" font-family="Verdana" font-size="14.00" fill="#000000">Println</text>
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M716.2072,-796C716.2072,-796 677.977,-796 677.977,-796 671.977,-796 665.977,-790 665.977,-784 665.977,-784 665.977,-772 665.977,-772 665.977,-766 671.977,-760 677.977,-760 677.977,-760 716.2072,-760 716.2072,-760 722.2072,-760 728.2072,-766 728.2072,-772 728.2072,-772 728.2072,-784 728.2072,-784 728.2072,-790 722.2072,-796 716.2072,-796"/>
<text text-anchor="middle" x="697.0921" y="-782.2" font-family="Verdana" font-size="14.00" fill="#000000">logrus</text>
<text text-anchor="middle" x="697.0921" y="-765.4" font-family="Verdana" font-size="14.00" fill="#000000">Println</text>
</a>
</g>
</g>
@@ -216,144 +216,479 @@
<g id="node16" class="node">
<title>(github.com/eyedeekay/go&#45;unzip/pkg/unzip.Unzip).Extract</title>
<g id="a_node16"><a xlink:title="(github.com/eyedeekay/go&#45;unzip/pkg/unzip.Unzip).Extract | defined in unzip.go:22">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M278.2231,-998C278.2231,-998 237.3731,-998 237.3731,-998 231.3731,-998 225.3731,-992 225.3731,-986 225.3731,-986 225.3731,-974 225.3731,-974 225.3731,-968 231.3731,-962 237.3731,-962 237.3731,-962 278.2231,-962 278.2231,-962 284.2231,-962 290.2231,-968 290.2231,-974 290.2231,-974 290.2231,-986 290.2231,-986 290.2231,-992 284.2231,-998 278.2231,-998"/>
<text text-anchor="middle" x="257.7981" y="-984.2" font-family="Verdana" font-size="14.00" fill="#000000">unzip</text>
<text text-anchor="middle" x="257.7981" y="-967.4" font-family="Verdana" font-size="14.00" fill="#000000">Extract</text>
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M717.5171,-710C717.5171,-710 676.6671,-710 676.6671,-710 670.6671,-710 664.6671,-704 664.6671,-698 664.6671,-698 664.6671,-686 664.6671,-686 664.6671,-680 670.6671,-674 676.6671,-674 676.6671,-674 717.5171,-674 717.5171,-674 723.5171,-674 729.5171,-680 729.5171,-686 729.5171,-686 729.5171,-698 729.5171,-698 729.5171,-704 723.5171,-710 717.5171,-710"/>
<text text-anchor="middle" x="697.0921" y="-696.2" font-family="Verdana" font-size="14.00" fill="#000000">unzip</text>
<text text-anchor="middle" x="697.0921" y="-679.4" font-family="Verdana" font-size="14.00" fill="#000000">Extract</text>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).writeZipFile -->
<g id="node17" class="node">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).writeZipFile</title>
<g id="a_node17"><a xlink:title="(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).writeZipFile | defined in reseed.go:152&#10;at reseed.go:156: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:156: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M530.8915,-574C530.8915,-574 460.9223,-574 460.9223,-574 454.9223,-574 448.9223,-568 448.9223,-562 448.9223,-562 448.9223,-550 448.9223,-550 448.9223,-544 454.9223,-538 460.9223,-538 460.9223,-538 530.8915,-538 530.8915,-538 536.8915,-538 542.8915,-544 542.8915,-550 542.8915,-550 542.8915,-562 542.8915,-562 542.8915,-568 536.8915,-574 530.8915,-574"/>
<text text-anchor="middle" x="495.9069" y="-551.8" font-family="Verdana" font-size="14.00" fill="#000000">writeZipFile</text>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).writeZipFile&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError -->
<g id="edge40" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).writeZipFile&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError</title>
<g id="a_edge40"><a xlink:title="at reseed.go:156: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<path fill="none" stroke="#8b4513" d="M534.9886,-537.9192C549.7855,-529.134 565.3667,-517.1551 574.9974,-502 616.7727,-436.2612 549.2863,-385.4082 602.9974,-329 614.1451,-317.2925 630.3152,-311.5792 646.116,-309.0008"/>
<polygon fill="#8b4513" stroke="#8b4513" points="646.8959,-312.431 656.3895,-307.7277 646.0349,-305.4842 646.8959,-312.431"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).writeZipFile&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Error -->
<g id="edge11" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).writeZipFile&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Error</title>
<g id="a_edge11"><a xlink:title="at reseed.go:156: calling [(*github.com/go&#45;i2p/logger.Logger).Error]">
<path fill="none" stroke="#8b4513" d="M535.0288,-537.9447C549.8319,-529.1634 565.4068,-517.1806 574.9974,-502 618.0052,-433.9245 569.6363,-396.287 602.9974,-323 613.5832,-299.7453 620.2025,-295.1556 639.9974,-279 645.6445,-274.3911 652.0789,-270.1337 658.5433,-266.3439"/>
<polygon fill="#8b4513" stroke="#8b4513" points="660.2633,-269.3923 667.3058,-261.4769 656.8643,-263.2729 660.2633,-269.3923"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).processReseedZip -->
<g id="node18" class="node">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).processReseedZip</title>
<g id="a_node18"><a xlink:title="(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).processReseedZip | defined in reseed.go:136&#10;at reseed.go:143: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile]&#10;at reseed.go:137: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).writeZipFile]&#10;at reseed.go:141: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).cleanupZipFile]&#10;at reseed.go:148: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).parseRouterInfoFiles]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M325.3572,-818C325.3572,-818 223.6626,-818 223.6626,-818 217.6626,-818 211.6626,-812 211.6626,-806 211.6626,-806 211.6626,-794 211.6626,-794 211.6626,-788 217.6626,-782 223.6626,-782 223.6626,-782 325.3572,-782 325.3572,-782 331.3572,-782 337.3572,-788 337.3572,-794 337.3572,-794 337.3572,-806 337.3572,-806 337.3572,-812 331.3572,-818 325.3572,-818"/>
<text text-anchor="middle" x="274.5099" y="-795.8" font-family="Verdana" font-size="14.00" fill="#000000">processReseedZip</text>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).processReseedZip&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).writeZipFile -->
<g id="edge16" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).processReseedZip&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).writeZipFile</title>
<g id="a_edge16"><a xlink:title="at reseed.go:137: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).writeZipFile]">
<path fill="none" stroke="#000000" d="M335.7279,-781.9665C341.6018,-778.6151 347.1118,-774.6607 351.8164,-770 414.0247,-708.373 363.8854,-649.8901 424.8164,-587 429.1818,-582.4943 434.3131,-578.6018 439.7869,-575.2485"/>
<polygon fill="#000000" stroke="#000000" points="441.523,-578.2883 448.6097,-570.4124 438.1583,-572.1499 441.523,-578.2883"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).cleanupZipFile -->
<g id="node19" class="node">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).cleanupZipFile</title>
<g id="a_node19"><a xlink:title="(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).cleanupZipFile | defined in reseed.go:198&#10;at reseed.go:200: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]&#10;at reseed.go:200: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M538.1632,-696C538.1632,-696 453.6506,-696 453.6506,-696 447.6506,-696 441.6506,-690 441.6506,-684 441.6506,-684 441.6506,-672 441.6506,-672 441.6506,-666 447.6506,-660 453.6506,-660 453.6506,-660 538.1632,-660 538.1632,-660 544.1632,-660 550.1632,-666 550.1632,-672 550.1632,-672 550.1632,-684 550.1632,-684 550.1632,-690 544.1632,-696 538.1632,-696"/>
<text text-anchor="middle" x="495.9069" y="-673.8" font-family="Verdana" font-size="14.00" fill="#000000">cleanupZipFile</text>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).processReseedZip&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).cleanupZipFile -->
<g id="edge18" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).processReseedZip&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).cleanupZipFile</title>
<g id="a_edge18"><a xlink:title="at reseed.go:141: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).cleanupZipFile]">
<path fill="none" stroke="#000000" d="M327.9853,-781.8914C336.1787,-778.3702 344.3773,-774.39 351.8164,-770 388.2294,-748.5116 388.8519,-731.2308 424.8164,-709 424.9345,-708.927 425.0528,-708.8541 425.1713,-708.7812"/>
<polygon fill="#000000" stroke="#000000" points="441.8421,-703.9274 449.0471,-696.1596 438.5706,-697.7389 441.8421,-703.9274"/>
<polyline fill="none" stroke="#000000" points="440.2064,-700.8331 435.786,-703.1699 "/>
<polygon fill="none" stroke="#000000" points="425.1772,-708.7782 428.6122,-702.4378 435.786,-703.1699 432.351,-709.5103 425.1772,-708.7782"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile -->
<g id="node20" class="node">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile</title>
<g id="a_node20"><a xlink:title="(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile | defined in reseed.go:163&#10;at reseed.go:166: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:174: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at reseed.go:164: calling [github.com/eyedeekay/go&#45;unzip/pkg/unzip.New]&#10;at reseed.go:171: calling [github.com/samber/oops.Errorf]&#10;at reseed.go:164: calling [(github.com/eyedeekay/go&#45;unzip/pkg/unzip.Unzip).Extract]&#10;at reseed.go:174: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed.go:166: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:170: calling [(*github.com/go&#45;i2p/logger.Logger).Error]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M535.7146,-757C535.7146,-757 456.0992,-757 456.0992,-757 450.0992,-757 444.0992,-751 444.0992,-745 444.0992,-745 444.0992,-733 444.0992,-733 444.0992,-727 450.0992,-721 456.0992,-721 456.0992,-721 535.7146,-721 535.7146,-721 541.7146,-721 547.7146,-727 547.7146,-733 547.7146,-733 547.7146,-745 547.7146,-745 547.7146,-751 541.7146,-757 535.7146,-757"/>
<text text-anchor="middle" x="495.9069" y="-734.8" font-family="Verdana" font-size="14.00" fill="#000000">extractZipFile</text>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).processReseedZip&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile -->
<g id="edge1" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).processReseedZip&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile</title>
<g id="a_edge1"><a xlink:title="at reseed.go:143: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile]">
<path fill="none" stroke="#000000" d="M337.3612,-782.683C367.6835,-774.3285 403.9368,-764.3399 434.1185,-756.0241"/>
<polygon fill="#000000" stroke="#000000" points="435.3929,-759.3035 444.104,-753.2729 433.5335,-752.555 435.3929,-759.3035"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).parseRouterInfoFiles -->
<g id="node21" class="node">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).parseRouterInfoFiles</title>
<g id="a_node21"><a xlink:title="(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).parseRouterInfoFiles | defined in reseed.go:179&#10;at reseed.go:184: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:189: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:184: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed.go:189: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed.go:184: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]&#10;at reseed.go:189: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]&#10;at reseed.go:187: calling [github.com/go&#45;i2p/common/router_info.ReadRouterInfo]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M555.088,-635C555.088,-635 436.7258,-635 436.7258,-635 430.7258,-635 424.7258,-629 424.7258,-623 424.7258,-623 424.7258,-611 424.7258,-611 424.7258,-605 430.7258,-599 436.7258,-599 436.7258,-599 555.088,-599 555.088,-599 561.088,-599 567.088,-605 567.088,-611 567.088,-611 567.088,-623 567.088,-623 567.088,-629 561.088,-635 555.088,-635"/>
<text text-anchor="middle" x="495.9069" y="-612.8" font-family="Verdana" font-size="14.00" fill="#000000">parseRouterInfoFiles</text>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).processReseedZip&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).parseRouterInfoFiles -->
<g id="edge22" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).processReseedZip&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).parseRouterInfoFiles</title>
<g id="a_edge22"><a xlink:title="at reseed.go:148: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).parseRouterInfoFiles]">
<path fill="none" stroke="#000000" d="M333.8289,-781.7997C340.2653,-778.456 346.425,-774.5492 351.8164,-770 400.1092,-729.2508 377.3696,-689.7312 424.8164,-648 428.0011,-645.1989 431.4785,-642.6178 435.1282,-640.2449"/>
<polygon fill="#000000" stroke="#000000" points="437.0585,-643.17 443.9005,-635.0806 433.5073,-637.1377 437.0585,-643.17"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).cleanupZipFile&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError -->
<g id="edge41" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).cleanupZipFile&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError</title>
<g id="a_edge41"><a xlink:title="at reseed.go:200: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<path fill="none" stroke="#8b4513" d="M550.2588,-666.1652C559.6953,-661.8619 568.5364,-655.9958 574.9974,-648 626.987,-583.6607 584.9056,-544.7165 602.9974,-464 615.5761,-407.8802 603.7592,-384.6592 639.9974,-340 642.376,-337.0687 645.1085,-334.3739 648.0618,-331.9041"/>
<polygon fill="#8b4513" stroke="#8b4513" points="650.2932,-334.6084 656.3033,-325.8832 646.1639,-328.9561 650.2932,-334.6084"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).cleanupZipFile&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Warn -->
<g id="edge32" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).cleanupZipFile&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Warn</title>
<g id="a_edge32"><a xlink:title="at reseed.go:200: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]">
<path fill="none" stroke="#8b4513" d="M550.1679,-665.0102C559.3831,-660.8148 568.1658,-655.2838 574.9974,-648 603.9457,-617.1356 589.6802,-597.1655 602.9974,-557 618.4372,-510.4326 605.7602,-488.1387 639.9974,-453 644.9283,-447.9393 651.1513,-444.0232 657.6621,-440.9985"/>
<polygon fill="#8b4513" stroke="#8b4513" points="659.2876,-444.1189 667.29,-437.1754 656.7042,-437.613 659.2876,-444.1189"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile&#45;&gt;github.com/eyedeekay/go&#45;unzip/pkg/unzip.New -->
<g id="edge19" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile&#45;&gt;github.com/eyedeekay/go&#45;unzip/pkg/unzip.New</title>
<g id="a_edge19"><a xlink:title="at reseed.go:164: calling [github.com/eyedeekay/go&#45;unzip/pkg/unzip.New]">
<path fill="none" stroke="#8b4513" d="M547.9128,-723.3874C557.3359,-719.4338 566.772,-714.6627 574.9974,-709 610.7797,-684.366 604.2798,-660.7278 639.9974,-636 646.062,-631.8014 653.0372,-628.2619 659.9828,-625.3329"/>
<polygon fill="#8b4513" stroke="#8b4513" points="661.2823,-628.583 669.3475,-621.7125 658.7582,-622.0539 661.2823,-628.583"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile&#45;&gt;github.com/samber/oops.Errorf -->
<g id="edge26" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile&#45;&gt;github.com/samber/oops.Errorf</title>
<g id="a_edge26"><a xlink:title="at reseed.go:171: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M547.9146,-725.4988C557.6531,-721.3225 567.2062,-715.9293 574.9974,-709 621.7873,-667.3864 596.118,-628.672 639.9974,-584 645.3769,-578.5233 651.9318,-573.7675 658.6568,-569.7363"/>
<polygon fill="#8b4513" stroke="#8b4513" points="660.7612,-572.5735 667.8382,-564.6889 657.3889,-566.4393 660.7612,-572.5735"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError -->
<g id="edge6" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError</title>
<g id="a_edge6"><a xlink:title="at reseed.go:166: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<path fill="none" stroke="#8b4513" d="M547.6707,-728.1153C558.0204,-723.7359 567.8817,-717.5986 574.9974,-709 601.5392,-676.9267 615.6773,-373.7889 639.9974,-340 642.3396,-336.7459 645.1322,-333.7978 648.2049,-331.1334"/>
<polygon fill="#8b4513" stroke="#8b4513" points="650.3969,-333.8649 656.3229,-325.0824 646.2134,-328.2525 650.3969,-333.8649"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Error -->
<g id="edge42" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Error</title>
<g id="a_edge42"><a xlink:title="at reseed.go:166: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:170: calling [(*github.com/go&#45;i2p/logger.Logger).Error]">
<path fill="none" stroke="#8b4513" d="M547.8267,-728.2428C558.1682,-723.8567 567.9869,-717.6846 574.9974,-709 605.3487,-671.4011 612.2488,-318.5587 639.9974,-279 644.6427,-272.3776 651.1663,-267.0327 658.1512,-262.7693"/>
<polygon fill="#8b4513" stroke="#8b4513" points="659.9916,-265.7536 667.1388,-257.9326 656.6743,-259.5895 659.9916,-265.7536"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField -->
<g id="edge34" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField</title>
<g id="a_edge34"><a xlink:title="at reseed.go:174: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="none" stroke="#8b4513" d="M547.8665,-727.7627C558.0791,-723.4053 567.8337,-717.3662 574.9974,-709 597.746,-682.4327 619.0908,-429.0399 639.9974,-401 642.4308,-397.7363 645.3131,-394.7766 648.4691,-392.1002"/>
<polygon fill="#8b4513" stroke="#8b4513" points="650.776,-394.7491 656.7787,-386.0188 646.6419,-389.1003 650.776,-394.7491"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug -->
<g id="edge7" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug</title>
<g id="a_edge7"><a xlink:title="at reseed.go:174: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="none" stroke="#8b4513" d="M532.34,-757.1092C567.4737,-774.5726 620.5286,-800.9438 656.8816,-819.0132"/>
<polygon fill="#8b4513" stroke="#8b4513" points="655.6898,-822.3293 666.2025,-823.6462 658.8056,-816.0609 655.6898,-822.3293"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile&#45;&gt;(github.com/eyedeekay/go&#45;unzip/pkg/unzip.Unzip).Extract -->
<g id="edge33" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractZipFile&#45;&gt;(github.com/eyedeekay/go&#45;unzip/pkg/unzip.Unzip).Extract</title>
<g id="a_edge33"><a xlink:title="at reseed.go:164: calling [(github.com/eyedeekay/go&#45;unzip/pkg/unzip.Unzip).Extract]">
<path fill="none" stroke="#8b4513" d="M547.6038,-731.8673C565.5634,-728.9999 585.7671,-725.3358 603.9974,-721 620.9089,-716.9778 639.2322,-711.5163 655.1135,-706.4174"/>
<polygon fill="#8b4513" stroke="#8b4513" points="656.2306,-709.7346 664.6519,-703.3055 654.0594,-703.0798 656.2306,-709.7346"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).parseRouterInfoFiles&#45;&gt;github.com/go&#45;i2p/common/router_info.ReadRouterInfo -->
<g id="edge21" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).parseRouterInfoFiles&#45;&gt;github.com/go&#45;i2p/common/router_info.ReadRouterInfo</title>
<g id="a_edge21"><a xlink:title="at reseed.go:187: calling [github.com/go&#45;i2p/common/router_info.ReadRouterInfo]">
<path fill="none" stroke="#8b4513" d="M552.2059,-598.9894C560.1206,-595.5111 567.9505,-591.5178 574.9974,-587 609.1277,-565.119 607.4192,-547.1312 639.9974,-523 643.6129,-520.3219 647.4879,-517.7258 651.4539,-515.251"/>
<polygon fill="#8b4513" stroke="#8b4513" points="653.4082,-518.1611 660.2156,-510.0426 649.8312,-512.1439 653.4082,-518.1611"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).parseRouterInfoFiles&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError -->
<g id="edge12" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).parseRouterInfoFiles&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError</title>
<g id="a_edge12"><a xlink:title="at reseed.go:184: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:189: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<path fill="none" stroke="#8b4513" d="M562.0721,-598.8453C566.9541,-595.5364 571.3752,-591.6246 574.9974,-587 638.7667,-505.5826 543.4065,-440.5236 602.9974,-356 613.5522,-341.0291 630.2828,-330.5743 646.7288,-323.395"/>
<polygon fill="#8b4513" stroke="#8b4513" points="648.3562,-326.5131 656.3302,-319.537 645.7463,-320.0178 648.3562,-326.5131"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).parseRouterInfoFiles&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Warn -->
<g id="edge20" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).parseRouterInfoFiles&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Warn</title>
<g id="a_edge20"><a xlink:title="at reseed.go:184: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]&#10;at reseed.go:189: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]">
<path fill="none" stroke="#8b4513" d="M557.7947,-598.9771C564.0154,-595.6176 569.9043,-591.6584 574.9974,-587 623.8403,-542.3256 591.2718,-497.8024 639.9974,-453 645.0936,-448.3142 651.2953,-444.5883 657.7094,-441.6374"/>
<polygon fill="#8b4513" stroke="#8b4513" points="659.1777,-444.8195 667.1547,-437.8468 656.5706,-438.3231 659.1777,-444.8195"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).parseRouterInfoFiles&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField -->
<g id="edge17" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).parseRouterInfoFiles&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField</title>
<g id="a_edge17"><a xlink:title="at reseed.go:184: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed.go:189: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="none" stroke="#8b4513" d="M559.5156,-598.8774C565.1938,-595.5528 570.4889,-591.6289 574.9974,-587 605.5472,-555.6344 611.6307,-434.3529 639.9974,-401 642.555,-397.9928 645.4805,-395.2285 648.6254,-392.6968"/>
<polygon fill="#8b4513" stroke="#8b4513" points="650.6887,-395.5243 656.8105,-386.877 646.6324,-389.8194 650.6887,-395.5243"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).validateSU3FileType -->
<g id="node22" class="node">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).validateSU3FileType</title>
<g id="a_node22"><a xlink:title="(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).validateSU3FileType | defined in reseed.go:108&#10;at reseed.go:110: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:111: calling [github.com/samber/oops.Errorf]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M334.2605,-635C334.2605,-635 214.7593,-635 214.7593,-635 208.7593,-635 202.7593,-629 202.7593,-623 202.7593,-623 202.7593,-611 202.7593,-611 202.7593,-605 208.7593,-599 214.7593,-599 214.7593,-599 334.2605,-599 334.2605,-599 340.2605,-599 346.2605,-605 346.2605,-611 346.2605,-611 346.2605,-623 346.2605,-623 346.2605,-629 340.2605,-635 334.2605,-635"/>
<text text-anchor="middle" x="274.5099" y="-612.8" font-family="Verdana" font-size="14.00" fill="#000000">validateSU3FileType</text>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).validateSU3FileType&#45;&gt;github.com/samber/oops.Errorf -->
<g id="edge35" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).validateSU3FileType&#45;&gt;github.com/samber/oops.Errorf</title>
<g id="a_edge35"><a xlink:title="at reseed.go:111: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M336.8526,-598.8762C342.3698,-595.5519 347.4916,-591.6283 351.8164,-587 426.1966,-507.3996 337.0575,-417.5524 424.8164,-353 478.5843,-313.4502 520.0143,-315.1578 574.9974,-353 579.162,-355.8663 636.6407,-519.2196 639.9974,-523 645.2771,-528.9461 652.0212,-533.9019 659.011,-537.9592"/>
<polygon fill="#8b4513" stroke="#8b4513" points="657.4229,-541.0784 667.9043,-542.6248 660.6749,-534.8797 657.4229,-541.0784"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).validateSU3FileType&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Error -->
<g id="edge23" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).validateSU3FileType&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Error</title>
<g id="a_edge23"><a xlink:title="at reseed.go:110: calling [(*github.com/go&#45;i2p/logger.Logger).Error]">
<path fill="none" stroke="#8b4513" d="M339.3671,-598.8092C344.1003,-595.5079 348.3623,-591.6077 351.8164,-587 407.7385,-512.4007 319.1207,-232.0337 387.8164,-169 400.5543,-157.312 407.7519,-178.2308 424.8164,-181 490.7016,-191.6917 515.9731,-212.1659 574.9974,-181 594.7347,-170.5783 585.1967,-127.9707 603.9974,-140 636.1585,-160.5777 613.702,-190.3174 639.9974,-218 645.1401,-223.414 651.4779,-228.0431 658.0392,-231.9289"/>
<polygon fill="#8b4513" stroke="#8b4513" points="656.5693,-235.1125 667.0336,-236.7708 659.8874,-228.9488 656.5693,-235.1125"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).performReseedRequest -->
<g id="node23" class="node">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).performReseedRequest</title>
<g id="a_node23"><a xlink:title="(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).performReseedRequest | defined in reseed.go:63&#10;at reseed.go:72: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:83: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:72: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:83: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:87: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M339.6234,-757C339.6234,-757 209.3964,-757 209.3964,-757 203.3964,-757 197.3964,-751 197.3964,-745 197.3964,-745 197.3964,-733 197.3964,-733 197.3964,-727 203.3964,-721 209.3964,-721 209.3964,-721 339.6234,-721 339.6234,-721 345.6234,-721 351.6234,-727 351.6234,-733 351.6234,-733 351.6234,-745 351.6234,-745 351.6234,-751 345.6234,-757 339.6234,-757"/>
<text text-anchor="middle" x="274.5099" y="-734.8" font-family="Verdana" font-size="14.00" fill="#000000">performReseedRequest</text>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).performReseedRequest&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError -->
<g id="edge36" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).performReseedRequest&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError</title>
<g id="a_edge36"><a xlink:title="at reseed.go:72: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:83: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<path fill="none" stroke="#8b4513" d="M338.0822,-720.8452C343.2163,-717.5335 347.917,-713.6212 351.8164,-709 456.538,-584.8937 307.4225,-463.1947 424.8164,-351 455.7321,-321.4535 576.3078,-312.6916 646.201,-310.094"/>
<polygon fill="#8b4513" stroke="#8b4513" points="646.6705,-313.5801 656.5451,-309.7407 646.4315,-306.5842 646.6705,-313.5801"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).performReseedRequest&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Error -->
<g id="edge2" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).performReseedRequest&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Error</title>
<g id="a_edge2"><a xlink:title="at reseed.go:72: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:83: calling [(*github.com/go&#45;i2p/logger.Logger).Error]">
<path fill="none" stroke="#8b4513" d="M338.8709,-720.9489C343.7753,-717.6177 348.2097,-713.6724 351.8164,-709 394.7334,-653.4026 369.8872,-462.9079 387.8164,-395 398.5426,-354.3739 392.4848,-334.8365 424.8164,-308 491.7869,-252.4119 599.0031,-245.3114 656.8909,-246.0088"/>
<polygon fill="#8b4513" stroke="#8b4513" points="657.0347,-249.5125 667.1049,-246.2199 657.1794,-242.514 657.0347,-249.5125"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).performReseedRequest&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug -->
<g id="edge37" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).performReseedRequest&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug</title>
<g id="a_edge37"><a xlink:title="at reseed.go:87: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="none" stroke="#8b4513" d="M324.3451,-757.0545C333.6477,-760.9627 343.1599,-765.3362 351.8164,-770 385.7872,-788.3023 388.0511,-805.2826 424.8164,-817 503.8192,-842.1788 601.9143,-843.2265 656.17,-841.3603"/>
<polygon fill="#8b4513" stroke="#8b4513" points="656.5644,-844.8475 666.418,-840.9544 656.2873,-837.853 656.5644,-844.8475"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed -->
<g id="node17" class="node">
<g id="node24" class="node">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed</title>
<g id="a_node17"><a xlink:title="(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed | defined in reseed.go:31&#10;at reseed.go:74: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/su3.SU3).Signature]&#10;at reseed.go:108: calling [github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.ReadRouterInfo]&#10;at reseed.go:32: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at reseed.go:57: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at reseed.go:68: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at reseed.go:99: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at reseed.go:119: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at reseed.go:42: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:53: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:61: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:123: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:76: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:85: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:91: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:95: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:79: calling [(*github.com/sirupsen/logrus.Logger).Println]&#10;at reseed.go:80: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]&#10;at reseed.go:105: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]&#10;at reseed.go:110: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]&#10;at reseed.go:117: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]&#10;at reseed.go:42: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:53: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:61: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:76: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:85: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:91: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:105: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:110: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:117: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:65: calling [(*github.com/go&#45;i2p/logger.Logger).WithFields]&#10;at reseed.go:124: calling [github.com/samber/oops.Errorf]&#10;at reseed.go:96: calling [github.com/samber/oops.Errorf]&#10;at reseed.go:89: calling [(github.com/eyedeekay/go&#45;unzip/pkg/unzip.Unzip).Extract]&#10;at reseed.go:32: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed.go:99: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed.go:105: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed.go:110: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed.go:119: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed.go:59: calling [github.com/go&#45;i2p/go&#45;i2p/lib/su3.Read]&#10;at reseed.go:72: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/su3.SU3).Content]&#10;at reseed.go:89: calling [github.com/eyedeekay/go&#45;unzip/pkg/unzip.New]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M112.3053,-551C112.3053,-551 35.8981,-551 35.8981,-551 29.8981,-551 23.8981,-545 23.8981,-539 23.8981,-539 23.8981,-527 23.8981,-527 23.8981,-521 29.8981,-515 35.8981,-515 35.8981,-515 112.3053,-515 112.3053,-515 118.3053,-515 124.3053,-521 124.3053,-527 124.3053,-527 124.3053,-539 124.3053,-539 124.3053,-545 118.3053,-551 112.3053,-551"/>
<text text-anchor="middle" x="74.1017" y="-528.8" font-family="Verdana" font-size="14.00" fill="#000000">SingleReseed</text>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/su3.Read -->
<g id="edge13" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/su3.Read</title>
<g id="a_edge13"><a xlink:title="at reseed.go:59: calling [github.com/go&#45;i2p/go&#45;i2p/lib/su3.Read]">
<path fill="none" stroke="#8b4513" d="M124.4105,-518.2617C127.3001,-516.1559 129.9431,-513.7496 132.2034,-511 159.7529,-477.4869 171.5539,-160.9886 197.2034,-126 203.2816,-117.7087 212.2268,-111.4726 221.3884,-106.8524"/>
<polygon fill="#8b4513" stroke="#8b4513" points="222.8323,-110.0408 230.5239,-102.7546 219.9673,-103.6539 222.8323,-110.0408"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;github.com/samber/oops.Errorf -->
<g id="edge10" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;github.com/samber/oops.Errorf</title>
<g id="a_edge10"><a xlink:title="at reseed.go:124: calling [github.com/samber/oops.Errorf]&#10;at reseed.go:96: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M124.315,-518.1818C127.2269,-516.0948 129.9011,-513.7145 132.2034,-511 155.953,-482.9979 175.0425,-216.2755 197.2034,-187 202.9124,-179.4582 210.9755,-173.6019 219.3625,-169.1144"/>
<polygon fill="#8b4513" stroke="#8b4513" points="220.9695,-172.2258 228.4942,-164.7673 217.9607,-165.9054 220.9695,-172.2258"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;github.com/eyedeekay/go&#45;unzip/pkg/unzip.New -->
<g id="edge15" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;github.com/eyedeekay/go&#45;unzip/pkg/unzip.New</title>
<g id="a_edge15"><a xlink:title="at reseed.go:89: calling [github.com/eyedeekay/go&#45;unzip/pkg/unzip.New]">
<path fill="none" stroke="#8b4513" d="M124.4464,-517.8762C127.2876,-515.8626 129.9131,-513.5822 132.2034,-511 152.1774,-488.4803 178.5084,-271.5922 197.2034,-248 203.3584,-240.2327 211.9839,-234.2276 220.8007,-229.6636"/>
<polygon fill="#8b4513" stroke="#8b4513" points="222.3624,-232.7975 229.9624,-225.4157 219.4178,-226.4469 222.3624,-232.7975"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.ReadRouterInfo -->
<g id="edge2" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.ReadRouterInfo</title>
<g id="a_edge2"><a xlink:title="at reseed.go:108: calling [github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.ReadRouterInfo]">
<path fill="none" stroke="#8b4513" d="M124.2808,-517.7252C127.1614,-515.7475 129.841,-513.5164 132.2034,-511 163.8166,-477.3253 163.5368,-351.553 195.117,-304.0394"/>
<polygon fill="#8b4513" stroke="#8b4513" points="197.9276,-306.1281 201.3993,-296.1182 192.4431,-301.7783 197.9276,-306.1281"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/su3.SU3).Content -->
<g id="edge14" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/su3.SU3).Content</title>
<g id="a_edge14"><a xlink:title="at reseed.go:72: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/su3.SU3).Content]">
<path fill="none" stroke="#8b4513" d="M124.3338,-516.8524C127.1291,-515.0906 129.7813,-513.1457 132.2034,-511 178.779,-469.7385 152.9865,-430.7798 197.2034,-387 202.2246,-382.0285 208.2061,-377.6881 214.4254,-373.9552"/>
<polygon fill="#8b4513" stroke="#8b4513" points="216.5336,-376.7912 223.6233,-368.9181 213.1713,-370.6516 216.5336,-376.7912"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/su3.SU3).Signature -->
<g id="edge1" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/su3.SU3).Signature</title>
<g id="a_edge1"><a xlink:title="at reseed.go:74: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/su3.SU3).Signature]">
<path fill="none" stroke="#8b4513" d="M124.249,-515.6554C127.0012,-514.2 129.6731,-512.6487 132.2034,-511 166.6974,-488.5238 163.5277,-468.6846 197.2034,-445 201.1431,-442.2291 205.4008,-439.6199 209.7694,-437.193"/>
<polygon fill="#8b4513" stroke="#8b4513" points="211.5749,-440.1988 218.8257,-432.4738 208.3401,-433.9911 211.5749,-440.1988"/>
<g id="a_node24"><a xlink:title="(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed | defined in reseed.go:31&#10;at reseed.go:34: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).performReseedRequest]&#10;at reseed.go:39: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).readSU3File]&#10;at reseed.go:32: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed.go:58: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed.go:44: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).validateSU3FileType]&#10;at reseed.go:32: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at reseed.go:58: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at reseed.go:48: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content]&#10;at reseed.go:53: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).processReseedZip]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M112.3053,-696C112.3053,-696 35.8981,-696 35.8981,-696 29.8981,-696 23.8981,-690 23.8981,-684 23.8981,-684 23.8981,-672 23.8981,-672 23.8981,-666 29.8981,-660 35.8981,-660 35.8981,-660 112.3053,-660 112.3053,-660 118.3053,-660 124.3053,-666 124.3053,-672 124.3053,-672 124.3053,-684 124.3053,-684 124.3053,-690 118.3053,-696 112.3053,-696"/>
<text text-anchor="middle" x="74.1017" y="-673.8" font-family="Verdana" font-size="14.00" fill="#000000">SingleReseed</text>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField -->
<g id="edge12" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField</title>
<g id="a_edge12"><a xlink:title="at reseed.go:32: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed.go:99: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed.go:105: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed.go:110: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed.go:119: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="none" stroke="#8b4513" d="M124.2975,-524.8024C150.0871,-520.5906 181.435,-515.4711 207.2718,-511.2516"/>
<polygon fill="#8b4513" stroke="#8b4513" points="207.9384,-514.6892 217.2435,-509.6231 206.8101,-507.7807 207.9384,-514.6892"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError -->
<g id="edge8" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError</title>
<g id="a_edge8"><a xlink:title="at reseed.go:42: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:53: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:61: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:76: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:85: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:91: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:105: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:110: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:117: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<path fill="none" stroke="#8b4513" d="M124.2975,-541.4709C150.0871,-545.823 181.435,-551.1132 207.2718,-555.4733"/>
<polygon fill="#8b4513" stroke="#8b4513" points="206.8005,-558.9432 217.2435,-557.1561 207.9654,-552.0408 206.8005,-558.9432"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Error -->
<g id="edge4" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Error</title>
<g id="a_edge4"><a xlink:title="at reseed.go:42: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:53: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:61: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:123: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:76: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:85: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:91: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:95: calling [(*github.com/go&#45;i2p/logger.Logger).Error]">
<path fill="none" stroke="#8b4513" d="M109.8907,-551.1062C134.4382,-563.5052 167.7666,-580.3004 197.2034,-595 204.0625,-598.4252 211.3659,-602.0554 218.4403,-605.563"/>
<polygon fill="#8b4513" stroke="#8b4513" points="217.3675,-608.9374 227.8821,-610.2394 220.4744,-602.6646 217.3675,-608.9374"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithFields -->
<g id="edge9" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithFields</title>
<g id="a_edge9"><a xlink:title="at reseed.go:65: calling [(*github.com/go&#45;i2p/logger.Logger).WithFields]">
<path fill="none" stroke="#8b4513" d="M88.8873,-551.133C110.5855,-576.9001 153.2635,-624.4748 197.2034,-656 200.5833,-658.425 204.1887,-660.7535 207.8922,-662.9657"/>
<polygon fill="#8b4513" stroke="#8b4513" points="206.2227,-666.0424 216.6522,-667.9073 209.6621,-659.9455 206.2227,-666.0424"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Warn -->
<g id="edge6" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Warn</title>
<g id="a_edge6"><a xlink:title="at reseed.go:80: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]&#10;at reseed.go:105: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]&#10;at reseed.go:110: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]&#10;at reseed.go:117: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]">
<path fill="none" stroke="#8b4513" d="M82.2749,-551.2166C99.1511,-587.092 141.0238,-667.6832 197.2034,-717 203.4682,-722.4995 210.9203,-727.2565 218.4187,-731.2596"/>
<polygon fill="#8b4513" stroke="#8b4513" points="217.3403,-734.6309 227.8557,-735.9263 220.4433,-728.3562 217.3403,-734.6309"/>
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField</title>
<g id="a_edge8"><a xlink:title="at reseed.go:32: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at reseed.go:58: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="none" stroke="#8b4513" d="M119.8866,-659.7851C121.4047,-658.5954 122.8513,-657.3348 124.2034,-656 224.9539,-556.5345 268.7834,-152.6497 387.8164,-76 457.761,-30.9601 509.5168,-24.686 574.9974,-76 622.5533,-113.2673 602.7532,-292.4259 639.9974,-340 642.451,-343.1341 645.324,-345.9763 648.4527,-348.5471"/>
<polygon fill="#8b4513" stroke="#8b4513" points="646.4863,-351.4435 656.6631,-354.3905 650.5453,-345.7405 646.4863,-351.4435"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug -->
<g id="edge3" class="edge">
<g id="edge27" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug</title>
<g id="a_edge3"><a xlink:title="at reseed.go:32: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at reseed.go:57: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at reseed.go:68: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at reseed.go:99: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at reseed.go:119: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="none" stroke="#8b4513" d="M80.5099,-551.3118C96.0286,-594.0599 138.7033,-702.5924 197.2034,-779 205.3145,-789.594 215.7152,-799.7387 225.6021,-808.317"/>
<polygon fill="#8b4513" stroke="#8b4513" points="223.4591,-811.0879 233.3674,-814.8396 227.9613,-805.7278 223.4591,-811.0879"/>
<g id="a_edge27"><a xlink:title="at reseed.go:32: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at reseed.go:58: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="none" stroke="#8b4513" d="M82.6879,-696.1731C106.2029,-742.9755 176.4863,-864 274.5099,-864 274.5099,-864 274.5099,-864 495.9069,-864 551.7592,-864 615.6722,-854.3941 656.1922,-847.091"/>
<polygon fill="#8b4513" stroke="#8b4513" points="657.0206,-850.4974 666.2213,-845.2441 655.7528,-843.6132 657.0206,-850.4974"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/sirupsen/logrus.Logger).Println -->
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).processReseedZip -->
<g id="edge31" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).processReseedZip</title>
<g id="a_edge31"><a xlink:title="at reseed.go:53: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).processReseedZip]">
<path fill="none" stroke="#000000" d="M94.6839,-696.158C118.2033,-716.2232 158.463,-748.5337 197.2034,-770 202.083,-772.7038 207.2566,-775.2764 212.5234,-777.6957"/>
<polygon fill="#000000" stroke="#000000" points="211.4974,-781.0675 222.061,-781.8798 214.3096,-774.6572 211.4974,-781.0675"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).validateSU3FileType -->
<g id="edge9" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).validateSU3FileType</title>
<g id="a_edge9"><a xlink:title="at reseed.go:44: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).validateSU3FileType]">
<path fill="none" stroke="#000000" d="M124.4145,-662.6859C148.9916,-655.2051 178.9447,-646.088 205.61,-637.9717"/>
<polygon fill="#000000" stroke="#000000" points="206.7218,-641.2919 215.2693,-635.0316 204.6835,-634.5952 206.7218,-641.2919"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).performReseedRequest -->
<g id="edge3" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).performReseedRequest</title>
<g id="a_edge3"><a xlink:title="at reseed.go:34: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).performReseedRequest]">
<path fill="none" stroke="#000000" d="M124.4145,-693.3141C148.9916,-700.7949 178.9447,-709.912 205.61,-718.0283"/>
<polygon fill="#000000" stroke="#000000" points="204.6835,-721.4048 215.2693,-720.9684 206.7218,-714.7081 204.6835,-721.4048"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).readSU3File -->
<g id="node25" class="node">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).readSU3File</title>
<g id="a_node25"><a xlink:title="(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).readSU3File | defined in reseed.go:92&#10;at reseed.go:93: calling [github.com/go&#45;i2p/su3.Read]&#10;at reseed.go:95: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:102: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at reseed.go:95: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:99: calling [(*github.com/go&#45;i2p/logger.Logger).WithFields]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M309.7676,-574C309.7676,-574 239.2522,-574 239.2522,-574 233.2522,-574 227.2522,-568 227.2522,-562 227.2522,-562 227.2522,-550 227.2522,-550 227.2522,-544 233.2522,-538 239.2522,-538 239.2522,-538 309.7676,-538 309.7676,-538 315.7676,-538 321.7676,-544 321.7676,-550 321.7676,-550 321.7676,-562 321.7676,-562 321.7676,-568 315.7676,-574 309.7676,-574"/>
<text text-anchor="middle" x="274.5099" y="-551.8" font-family="Verdana" font-size="14.00" fill="#000000">readSU3File</text>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).readSU3File -->
<g id="edge5" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(*github.com/sirupsen/logrus.Logger).Println</title>
<g id="a_edge5"><a xlink:title="at reseed.go:79: calling [(*github.com/sirupsen/logrus.Logger).Println]">
<path fill="none" stroke="#8b4513" d="M76.1468,-551.1797C83.1258,-605.3574 110.5897,-767.9085 197.2034,-864 202.7295,-870.1308 209.7911,-875.1569 217.1278,-879.2228"/>
<polygon fill="#8b4513" stroke="#8b4513" points="215.9609,-882.5513 226.4734,-883.8701 219.0778,-876.2835 215.9609,-882.5513"/>
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).readSU3File</title>
<g id="a_edge5"><a xlink:title="at reseed.go:39: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).readSU3File]">
<path fill="none" stroke="#000000" d="M117.773,-659.94C119.9876,-658.6795 122.1448,-657.3649 124.2034,-656 161.4114,-631.3291 159.6008,-611.0651 197.2034,-587 203.4834,-582.9809 210.3699,-579.3232 217.3636,-576.0443"/>
<polygon fill="#000000" stroke="#000000" points="219.1956,-579.0608 226.9203,-571.8097 216.3597,-572.661 219.1956,-579.0608"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(github.com/eyedeekay/go&#45;unzip/pkg/unzip.Unzip).Extract -->
<g id="edge11" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(github.com/eyedeekay/go&#45;unzip/pkg/unzip.Unzip).Extract</title>
<g id="a_edge11"><a xlink:title="at reseed.go:89: calling [(github.com/eyedeekay/go&#45;unzip/pkg/unzip.Unzip).Extract]">
<path fill="none" stroke="#8b4513" d="M76.0723,-551.003C83.2139,-609.681 111.9703,-798.9326 197.2034,-926 204.5121,-936.8959 214.52,-947.0093 224.2969,-955.468"/>
<polygon fill="#8b4513" stroke="#8b4513" points="222.0997,-958.1929 232.0322,-961.8803 226.5671,-952.8038 222.0997,-958.1929"/>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content -->
<g id="node26" class="node">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content</title>
<g id="a_node26"><a xlink:title="(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content | defined in reseed.go:117&#10;at reseed.go:130: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]&#10;at reseed.go:120: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:126: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:120: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:126: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:124: calling [(*github.com/go&#45;i2p/su3.SU3).Signature]&#10;at reseed.go:118: calling [(*github.com/go&#45;i2p/su3.SU3).Content]&#10;at reseed.go:129: calling [(*github.com/sirupsen/logrus.Logger).Println]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M328.3175,-696C328.3175,-696 220.7023,-696 220.7023,-696 214.7023,-696 208.7023,-690 208.7023,-684 208.7023,-684 208.7023,-672 208.7023,-672 208.7023,-666 214.7023,-660 220.7023,-660 220.7023,-660 328.3175,-660 328.3175,-660 334.3175,-660 340.3175,-666 340.3175,-672 340.3175,-672 340.3175,-684 340.3175,-684 340.3175,-690 334.3175,-696 328.3175,-696"/>
<text text-anchor="middle" x="274.5099" y="-673.8" font-family="Verdana" font-size="14.00" fill="#000000">extractSU3Content</text>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content -->
<g id="edge30" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).SingleReseed&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content</title>
<g id="a_edge30"><a xlink:title="at reseed.go:48: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content]">
<path fill="none" stroke="#000000" d="M124.4145,-678C146.8339,-678 173.7268,-678 198.5168,-678"/>
<polygon fill="#000000" stroke="#000000" points="198.6264,-681.5001 208.6264,-678 198.6263,-674.5001 198.6264,-681.5001"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).readSU3File&#45;&gt;github.com/go&#45;i2p/su3.Read -->
<g id="edge4" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).readSU3File&#45;&gt;github.com/go&#45;i2p/su3.Read</title>
<g id="a_edge4"><a xlink:title="at reseed.go:93: calling [github.com/go&#45;i2p/su3.Read]">
<path fill="none" stroke="#8b4513" d="M277.0564,-537.6325C287.3293,-466.2943 328.0568,-208.9916 387.8164,-157 406.9046,-140.393 435.4928,-137.0307 458.4748,-137.6137"/>
<polygon fill="#8b4513" stroke="#8b4513" points="458.421,-141.1153 468.5853,-138.1258 458.7752,-134.1243 458.421,-141.1153"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).readSU3File&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError -->
<g id="edge24" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).readSU3File&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError</title>
<g id="a_edge24"><a xlink:title="at reseed.go:95: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<path fill="none" stroke="#8b4513" d="M276.1458,-537.8713C283.544,-460.401 316.6459,-158.5615 387.8164,-103 453.3914,-51.8067 506.7386,-55.444 574.9974,-103 643.416,-150.6673 584.9892,-216.3312 639.9974,-279 642.3588,-281.6903 645.0208,-284.1765 647.8715,-286.4676"/>
<polygon fill="#8b4513" stroke="#8b4513" points="646.1216,-289.5162 656.312,-292.4155 650.1538,-283.7942 646.1216,-289.5162"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).readSU3File&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Error -->
<g id="edge13" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).readSU3File&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Error</title>
<g id="a_edge13"><a xlink:title="at reseed.go:95: calling [(*github.com/go&#45;i2p/logger.Logger).Error]">
<path fill="none" stroke="#8b4513" d="M321.8282,-551.9318C333.2335,-548.6677 344.2859,-543.1638 351.8164,-534 413.6804,-458.7177 347.4508,-185.6859 387.8164,-97 397.5815,-75.5455 403.099,-68.1657 424.8164,-59 486.311,-33.0465 517.7128,-24.7413 574.9974,-59 598.3773,-72.9822 593.0994,-88.0329 603.9974,-113 623.733,-158.2138 607.8908,-180.5441 639.9974,-218 644.9573,-223.7863 651.3157,-228.6164 657.9783,-232.5897"/>
<polygon fill="#8b4513" stroke="#8b4513" points="656.6796,-235.8639 667.1495,-237.4862 659.9764,-229.6889 656.6796,-235.8639"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).readSU3File&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithFields -->
<g id="edge25" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).readSU3File&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithFields</title>
<g id="a_edge25"><a xlink:title="at reseed.go:99: calling [(*github.com/go&#45;i2p/logger.Logger).WithFields]">
<path fill="none" stroke="#8b4513" d="M321.8383,-551.9401C333.2436,-548.676 344.2935,-543.1701 351.8164,-534 423.5941,-446.5065 325.5817,-84.4025 424.8164,-30 483.3452,2.0867 515.0384,-.6726 574.9974,-30 630.0928,-56.9485 667.5124,-122.0856 685.2602,-159.4426"/>
<polygon fill="#8b4513" stroke="#8b4513" points="682.1825,-161.1267 689.5455,-168.7449 688.5403,-158.1978 682.1825,-161.1267"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).readSU3File&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug -->
<g id="edge14" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).readSU3File&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug</title>
<g id="a_edge14"><a xlink:title="at reseed.go:102: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="none" stroke="#8b4513" d="M322.1183,-566.757C333.2443,-571.331 344.0877,-577.8178 351.8164,-587 401.2696,-645.7542 337.7886,-697.7343 387.8164,-756 405.4927,-776.5871 576.0861,-814.047 656.0762,-830.6705"/>
<polygon fill="#8b4513" stroke="#8b4513" points="655.7788,-834.183 666.2804,-832.7802 657.1961,-827.328 655.7788,-834.183"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError -->
<g id="edge15" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError</title>
<g id="a_edge15"><a xlink:title="at reseed.go:120: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at reseed.go:126: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<path fill="none" stroke="#8b4513" d="M338.753,-659.8567C343.6817,-656.5445 348.1539,-652.6289 351.8164,-648 445.8294,-529.18 305.4927,-408.3728 424.8164,-315 489.0767,-264.7152 523.6486,-260.7867 603.9974,-275 618.5899,-277.5813 633.9005,-282.274 647.7944,-287.3653"/>
<polygon fill="#8b4513" stroke="#8b4513" points="646.5697,-290.6441 657.1607,-290.9326 649.0613,-284.1025 646.5697,-290.6441"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Error -->
<g id="edge28" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Error</title>
<g id="a_edge28"><a xlink:title="at reseed.go:120: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at reseed.go:126: calling [(*github.com/go&#45;i2p/logger.Logger).Error]">
<path fill="none" stroke="#8b4513" d="M338.8389,-659.9241C343.7499,-656.598 348.1946,-652.6607 351.8164,-648 392.611,-595.5042 371.0247,-415.3276 387.8164,-351 398.7397,-309.1538 394.5181,-291.8616 424.8164,-261 475.7689,-209.1002 515.2054,-237.4085 574.9974,-196 589.9824,-185.6223 587.8133,-158.6141 603.9974,-167 628.6317,-179.7644 619.138,-199.7062 639.9974,-218 645.4957,-222.822 651.9048,-227.1363 658.402,-230.888"/>
<polygon fill="#8b4513" stroke="#8b4513" points="656.7756,-233.9874 667.2392,-235.6502 660.0964,-227.8252 656.7756,-233.9874"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Warn -->
<g id="edge10" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Warn</title>
<g id="a_edge10"><a xlink:title="at reseed.go:130: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]">
<path fill="none" stroke="#8b4513" d="M337.5206,-659.9136C342.8365,-656.5854 347.7307,-652.6507 351.8164,-648 441.5292,-545.8812 317.8426,-434.8645 424.8164,-351 477.3453,-309.8188 519.9943,-313.1868 574.9974,-351 603.6325,-370.6859 575.1127,-403.2647 602.9974,-424 618.2323,-435.3288 638.9586,-437.8346 657.0814,-437.1843"/>
<polygon fill="#8b4513" stroke="#8b4513" points="657.3678,-440.673 667.1092,-436.5072 656.8961,-433.6889 657.3678,-440.673"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content&#45;&gt;(*github.com/go&#45;i2p/su3.SU3).Content -->
<g id="edge38" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content&#45;&gt;(*github.com/go&#45;i2p/su3.SU3).Content</title>
<g id="a_edge38"><a xlink:title="at reseed.go:118: calling [(*github.com/go&#45;i2p/su3.SU3).Content]">
<path fill="none" stroke="#8b4513" d="M336.3078,-659.9421C342.0006,-656.6006 347.3109,-652.6551 351.8164,-648 419.9535,-577.6015 358.1377,-511.7814 424.8164,-440 432.2469,-432.0009 442.1025,-425.959 452.1014,-421.4369"/>
<polygon fill="#8b4513" stroke="#8b4513" points="453.7114,-424.5607 461.6575,-417.5528 451.0756,-418.0759 453.7114,-424.5607"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content&#45;&gt;(*github.com/go&#45;i2p/su3.SU3).Signature -->
<g id="edge29" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content&#45;&gt;(*github.com/go&#45;i2p/su3.SU3).Signature</title>
<g id="a_edge29"><a xlink:title="at reseed.go:124: calling [(*github.com/go&#45;i2p/su3.SU3).Signature]">
<path fill="none" stroke="#8b4513" d="M335.0022,-659.826C341.0825,-656.4942 346.8384,-652.5829 351.8164,-648 352.0295,-647.8038 424.6038,-498.1967 424.8164,-498 431.3962,-491.9136 439.4552,-487.0894 447.7543,-483.2853"/>
<polygon fill="#8b4513" stroke="#8b4513" points="449.247,-486.4558 457.1601,-479.4107 446.5808,-479.9834 449.247,-486.4558"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content&#45;&gt;(*github.com/sirupsen/logrus.Logger).Println -->
<g id="edge43" class="edge">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/netdb/reseed.Reseed).extractSU3Content&#45;&gt;(*github.com/sirupsen/logrus.Logger).Println</title>
<g id="a_edge43"><a xlink:title="at reseed.go:129: calling [(*github.com/sirupsen/logrus.Logger).Println]">
<path fill="none" stroke="#8b4513" d="M326.3322,-696.1441C335.0692,-699.9406 343.8727,-704.252 351.8164,-709 388.1085,-730.6918 385.2869,-754.9977 424.8164,-770 502.2818,-799.3998 601.2488,-792.3041 656,-784.8971"/>
<polygon fill="#8b4513" stroke="#8b4513" points="656.6107,-788.3456 666.0174,-783.4708 655.6239,-781.4155 656.6107,-788.3456"/>
</a>
</g>
</g>

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 66 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

View File

@@ -14,75 +14,75 @@
<polygon fill="#e6ecfa" stroke="#000000" stroke-width=".5" points="8,-8 8,-212 284.9384,-212 284.9384,-8 8,-8"/>
<text text-anchor="middle" x="146.4692" y="-191.8" font-family="Arial" font-size="18.00" fill="#000000">signals</text>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init -->
<g id="node1" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init</title>
<g id="a_node1"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init | defined in .:0&#10;at .:0: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init#1]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M63.2132,-174C63.2132,-174 33.2132,-174 33.2132,-174 27.2132,-174 21.2132,-168 21.2132,-162 21.2132,-162 21.2132,-150 21.2132,-150 21.2132,-144 27.2132,-138 33.2132,-138 33.2132,-138 63.2132,-138 63.2132,-138 69.2132,-138 75.2132,-144 75.2132,-150 75.2132,-150 75.2132,-162 75.2132,-162 75.2132,-168 69.2132,-174 63.2132,-174"/>
<text text-anchor="middle" x="48.2132" y="-151.8" font-family="Verdana" font-size="14.00" fill="#000000">init</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init#1 -->
<g id="node2" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init#1</title>
<g id="a_node2"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init#1 | defined in unix.go:11">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M231.3551,-174C231.3551,-174 199.0097,-174 199.0097,-174 193.0097,-174 187.0097,-168 187.0097,-162 187.0097,-162 187.0097,-150 187.0097,-150 187.0097,-144 193.0097,-138 199.0097,-138 199.0097,-138 231.3551,-138 231.3551,-138 237.3551,-138 243.3551,-144 243.3551,-150 243.3551,-150 243.3551,-162 243.3551,-162 243.3551,-168 237.3551,-174 231.3551,-174"/>
<text text-anchor="middle" x="215.1824" y="-151.8" font-family="Verdana" font-size="14.00" fill="#000000">init#1</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init#1 -->
<g id="edge1" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init#1</title>
<g id="a_edge1"><a xlink:title="at .:0: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init#1]">
<path fill="none" stroke="#000000" d="M75.4113,-156C102.9748,-156 145.8607,-156 176.8609,-156"/>
<polygon fill="#000000" stroke="#000000" points="176.8791,-159.5001 186.879,-156 176.879,-152.5001 176.8791,-159.5001"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.Handle -->
<g id="node3" class="node">
<g id="node1" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.Handle</title>
<g id="a_node3"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.Handle | defined in unix.go:15&#10;at unix.go:23: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleReload]&#10;at unix.go:25: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleInterrupted]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M68.641,-83C68.641,-83 27.7854,-83 27.7854,-83 21.7854,-83 15.7854,-77 15.7854,-71 15.7854,-71 15.7854,-59 15.7854,-59 15.7854,-53 21.7854,-47 27.7854,-47 27.7854,-47 68.641,-47 68.641,-47 74.641,-47 80.641,-53 80.641,-59 80.641,-59 80.641,-71 80.641,-71 80.641,-77 74.641,-83 68.641,-83"/>
<text text-anchor="middle" x="48.2132" y="-60.8" font-family="Verdana" font-size="14.00" fill="#000000">Handle</text>
<g id="a_node1"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.Handle | defined in unix.go:15&#10;at unix.go:23: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleReload]&#10;at unix.go:25: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleInterrupted]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M68.641,-143C68.641,-143 27.7854,-143 27.7854,-143 21.7854,-143 15.7854,-137 15.7854,-131 15.7854,-131 15.7854,-119 15.7854,-119 15.7854,-113 21.7854,-107 27.7854,-107 27.7854,-107 68.641,-107 68.641,-107 74.641,-107 80.641,-113 80.641,-119 80.641,-119 80.641,-131 80.641,-131 80.641,-137 74.641,-143 68.641,-143"/>
<text text-anchor="middle" x="48.2132" y="-120.8" font-family="Verdana" font-size="14.00" fill="#000000">Handle</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleReload -->
<g id="node4" class="node">
<g id="node2" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleReload</title>
<g id="a_node4"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleReload | defined in signals.go:17">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M253.6586,-52C253.6586,-52 176.7062,-52 176.7062,-52 170.7062,-52 164.7062,-46 164.7062,-40 164.7062,-40 164.7062,-28 164.7062,-28 164.7062,-22 170.7062,-16 176.7062,-16 176.7062,-16 253.6586,-16 253.6586,-16 259.6586,-16 265.6586,-22 265.6586,-28 265.6586,-28 265.6586,-40 265.6586,-40 265.6586,-46 259.6586,-52 253.6586,-52"/>
<text text-anchor="middle" x="215.1824" y="-29.8" font-family="Verdana" font-size="14.00" fill="#000000">handleReload</text>
<g id="a_node2"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleReload | defined in signals.go:17">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M253.6586,-113C253.6586,-113 176.7062,-113 176.7062,-113 170.7062,-113 164.7062,-107 164.7062,-101 164.7062,-101 164.7062,-89 164.7062,-89 164.7062,-83 170.7062,-77 176.7062,-77 176.7062,-77 253.6586,-77 253.6586,-77 259.6586,-77 265.6586,-83 265.6586,-89 265.6586,-89 265.6586,-101 265.6586,-101 265.6586,-107 259.6586,-113 253.6586,-113"/>
<text text-anchor="middle" x="215.1824" y="-90.8" font-family="Verdana" font-size="14.00" fill="#000000">handleReload</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.Handle&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleReload -->
<g id="edge2" class="edge">
<g id="edge1" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.Handle&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleReload</title>
<g id="a_edge2"><a xlink:title="at unix.go:23: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleReload]">
<path fill="none" stroke="#000000" d="M80.8029,-58.9493C101.7394,-55.0622 129.5814,-49.8929 154.4915,-45.2681"/>
<polygon fill="#000000" stroke="#000000" points="155.4019,-48.6589 164.5949,-43.3922 154.124,-41.7765 155.4019,-48.6589"/>
<g id="a_edge1"><a xlink:title="at unix.go:23: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleReload]">
<path fill="none" stroke="#000000" d="M80.8029,-119.1445C101.7394,-115.3827 129.5814,-110.3803 154.4915,-105.9046"/>
<polygon fill="#000000" stroke="#000000" points="155.3715,-109.3026 164.5949,-104.0892 154.1336,-102.4129 155.3715,-109.3026"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleInterrupted -->
<g id="node5" class="node">
<g id="node3" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleInterrupted</title>
<g id="a_node5"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleInterrupted | defined in signals.go:29">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M264.6954,-113C264.6954,-113 165.6694,-113 165.6694,-113 159.6694,-113 153.6694,-107 153.6694,-101 153.6694,-101 153.6694,-89 153.6694,-89 153.6694,-83 159.6694,-77 165.6694,-77 165.6694,-77 264.6954,-77 264.6954,-77 270.6954,-77 276.6954,-83 276.6954,-89 276.6954,-89 276.6954,-101 276.6954,-101 276.6954,-107 270.6954,-113 264.6954,-113"/>
<text text-anchor="middle" x="215.1824" y="-90.8" font-family="Verdana" font-size="14.00" fill="#000000">handleInterrupted</text>
<g id="a_node3"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleInterrupted | defined in signals.go:29">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M264.6954,-174C264.6954,-174 165.6694,-174 165.6694,-174 159.6694,-174 153.6694,-168 153.6694,-162 153.6694,-162 153.6694,-150 153.6694,-150 153.6694,-144 159.6694,-138 165.6694,-138 165.6694,-138 264.6954,-138 264.6954,-138 270.6954,-138 276.6954,-144 276.6954,-150 276.6954,-150 276.6954,-162 276.6954,-162 276.6954,-168 270.6954,-174 264.6954,-174"/>
<text text-anchor="middle" x="215.1824" y="-151.8" font-family="Verdana" font-size="14.00" fill="#000000">handleInterrupted</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.Handle&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleInterrupted -->
<g id="edge3" class="edge">
<g id="edge2" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.Handle&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleInterrupted</title>
<g id="a_edge3"><a xlink:title="at unix.go:25: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleInterrupted]">
<path fill="none" stroke="#000000" d="M80.8029,-70.8555C98.7443,-74.0791 121.7569,-78.2139 143.6498,-82.1475"/>
<polygon fill="#000000" stroke="#000000" points="143.1463,-85.613 153.6077,-83.9366 144.3842,-78.7233 143.1463,-85.613"/>
<g id="a_edge2"><a xlink:title="at unix.go:25: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.handleInterrupted]">
<path fill="none" stroke="#000000" d="M80.8029,-131.0507C98.7443,-134.3818 121.7569,-138.6543 143.6498,-142.719"/>
<polygon fill="#000000" stroke="#000000" points="143.1368,-146.1835 153.6077,-144.5679 144.4146,-139.3011 143.1368,-146.1835"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init -->
<g id="node4" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init</title>
<g id="a_node4"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init | defined in .:0&#10;at .:0: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init#1]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M63.2132,-52C63.2132,-52 33.2132,-52 33.2132,-52 27.2132,-52 21.2132,-46 21.2132,-40 21.2132,-40 21.2132,-28 21.2132,-28 21.2132,-22 27.2132,-16 33.2132,-16 33.2132,-16 63.2132,-16 63.2132,-16 69.2132,-16 75.2132,-22 75.2132,-28 75.2132,-28 75.2132,-40 75.2132,-40 75.2132,-46 69.2132,-52 63.2132,-52"/>
<text text-anchor="middle" x="48.2132" y="-29.8" font-family="Verdana" font-size="14.00" fill="#000000">init</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init#1 -->
<g id="node5" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init#1</title>
<g id="a_node5"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init#1 | defined in unix.go:11">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M231.3551,-52C231.3551,-52 199.0097,-52 199.0097,-52 193.0097,-52 187.0097,-46 187.0097,-40 187.0097,-40 187.0097,-28 187.0097,-28 187.0097,-22 193.0097,-16 199.0097,-16 199.0097,-16 231.3551,-16 231.3551,-16 237.3551,-16 243.3551,-22 243.3551,-28 243.3551,-28 243.3551,-40 243.3551,-40 243.3551,-46 237.3551,-52 231.3551,-52"/>
<text text-anchor="middle" x="215.1824" y="-29.8" font-family="Verdana" font-size="14.00" fill="#000000">init#1</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init#1 -->
<g id="edge3" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init#1</title>
<g id="a_edge3"><a xlink:title="at .:0: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/signals.init#1]">
<path fill="none" stroke="#000000" d="M75.4113,-34C102.9748,-34 145.8607,-34 176.8609,-34"/>
<polygon fill="#000000" stroke="#000000" points="176.8791,-37.5001 186.879,-34 176.879,-30.5001 176.8791,-37.5001"/>
</a>
</g>
</g>

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@@ -38,83 +38,55 @@
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewZones -->
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.getLocalCountryCode -->
<g id="node1" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.getLocalCountryCode</title>
<g id="a_node1"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.getLocalCountryCode | defined in router_timestamper.go:393">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M1186.2513,-460C1186.2513,-460 1061.4169,-460 1061.4169,-460 1055.4169,-460 1049.4169,-454 1049.4169,-448 1049.4169,-448 1049.4169,-436 1049.4169,-436 1049.4169,-430 1055.4169,-424 1061.4169,-424 1061.4169,-424 1186.2513,-424 1186.2513,-424 1192.2513,-424 1198.2513,-430 1198.2513,-436 1198.2513,-436 1198.2513,-448 1198.2513,-448 1198.2513,-454 1192.2513,-460 1186.2513,-460"/>
<text text-anchor="middle" x="1123.8341" y="-437.8" font-family="Verdana" font-size="14.00" fill="#000000">getLocalCountryCode</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewZones -->
<g id="node2" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewZones</title>
<g id="a_node1"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewZones | defined in zones.go:19&#10;at zones.go:24: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).initialize]">
<g id="a_node2"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewZones | defined in zones.go:19&#10;at zones.go:24: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).initialize]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M929.0586,-121C929.0586,-121 868.7778,-121 868.7778,-121 862.7778,-121 856.7778,-115 856.7778,-109 856.7778,-109 856.7778,-97 856.7778,-97 856.7778,-91 862.7778,-85 868.7778,-85 868.7778,-85 929.0586,-85 929.0586,-85 935.0586,-85 941.0586,-91 941.0586,-97 941.0586,-97 941.0586,-109 941.0586,-109 941.0586,-115 935.0586,-121 929.0586,-121"/>
<text text-anchor="middle" x="898.9182" y="-98.8" font-family="Verdana" font-size="14.00" fill="#000000">NewZones</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).initialize -->
<g id="node19" class="node">
<g id="node20" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).initialize</title>
<g id="a_node19"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).initialize | defined in zones.go:36&#10;at zones.go:51: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).readContinentFile]">
<g id="a_node20"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).initialize | defined in zones.go:36&#10;at zones.go:51: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).readContinentFile]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M1148.3215,-86C1148.3215,-86 1099.3467,-86 1099.3467,-86 1093.3467,-86 1087.3467,-80 1087.3467,-74 1087.3467,-74 1087.3467,-62 1087.3467,-62 1087.3467,-56 1093.3467,-50 1099.3467,-50 1099.3467,-50 1148.3215,-50 1148.3215,-50 1154.3215,-50 1160.3215,-56 1160.3215,-62 1160.3215,-62 1160.3215,-74 1160.3215,-74 1160.3215,-80 1154.3215,-86 1148.3215,-86"/>
<text text-anchor="middle" x="1123.8341" y="-63.8" font-family="Verdana" font-size="14.00" fill="#000000">initialize</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewZones&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).initialize -->
<g id="edge17" class="edge">
<g id="edge7" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewZones&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).initialize</title>
<g id="a_edge17"><a xlink:title="at zones.go:24: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).initialize]">
<g id="a_edge7"><a xlink:title="at zones.go:24: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).initialize]">
<path fill="none" stroke="#000000" d="M941.2232,-96.4168C979.9704,-90.3872 1037.2175,-81.4787 1077.2557,-75.2482"/>
<polygon fill="#000000" stroke="#000000" points="1077.9539,-78.6818 1087.2968,-73.6857 1076.8775,-71.765 1077.9539,-78.6818"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.getLocalCountryCode -->
<g id="node2" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.getLocalCountryCode</title>
<g id="a_node2"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.getLocalCountryCode | defined in router_timestamper.go:393">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M1186.2513,-460C1186.2513,-460 1061.4169,-460 1061.4169,-460 1055.4169,-460 1049.4169,-454 1049.4169,-448 1049.4169,-448 1049.4169,-436 1049.4169,-436 1049.4169,-430 1055.4169,-424 1061.4169,-424 1061.4169,-424 1186.2513,-424 1186.2513,-424 1192.2513,-424 1198.2513,-430 1198.2513,-436 1198.2513,-436 1198.2513,-448 1198.2513,-448 1198.2513,-454 1192.2513,-460 1186.2513,-460"/>
<text text-anchor="middle" x="1123.8341" y="-437.8" font-family="Verdana" font-size="14.00" fill="#000000">getLocalCountryCode</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.checkIPv6Connectivity -->
<g id="node3" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.checkIPv6Connectivity</title>
<g id="a_node3"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.checkIPv6Connectivity | defined in router_timestamper.go:371">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M964.834,-469C964.834,-469 833.0024,-469 833.0024,-469 827.0024,-469 821.0024,-463 821.0024,-457 821.0024,-457 821.0024,-445 821.0024,-445 821.0024,-439 827.0024,-433 833.0024,-433 833.0024,-433 964.834,-433 964.834,-433 970.834,-433 976.834,-439 976.834,-445 976.834,-445 976.834,-457 976.834,-457 976.834,-463 970.834,-469 964.834,-469"/>
<text text-anchor="middle" x="898.9182" y="-446.8" font-family="Verdana" font-size="14.00" fill="#000000">checkIPv6Connectivity</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration -->
<g id="node4" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration</title>
<g id="a_node4"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration | defined in router_timestamper.go:386">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M1158.2573,-208C1158.2573,-208 1089.4109,-208 1089.4109,-208 1083.4109,-208 1077.4109,-202 1077.4109,-196 1077.4109,-196 1077.4109,-184 1077.4109,-184 1077.4109,-178 1083.4109,-172 1089.4109,-172 1089.4109,-172 1158.2573,-172 1158.2573,-172 1164.2573,-172 1170.2573,-178 1170.2573,-184 1170.2573,-184 1170.2573,-196 1170.2573,-196 1170.2573,-202 1164.2573,-208 1158.2573,-208"/>
<text text-anchor="middle" x="1123.8341" y="-185.8" font-family="Verdana" font-size="14.00" fill="#000000">absDuration</text>
</a>
</g>
</g>
<!-- github.com/beevik/ntp.QueryWithOptions -->
<g id="node5" class="node">
<title>github.com/beevik/ntp.QueryWithOptions</title>
<g id="a_node5"><a xlink:title="github.com/beevik/ntp.QueryWithOptions | defined in ntp.go:432">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M355.7754,-494C355.7754,-494 248.1546,-494 248.1546,-494 242.1546,-494 236.1546,-488 236.1546,-482 236.1546,-482 236.1546,-470 236.1546,-470 236.1546,-464 242.1546,-458 248.1546,-458 248.1546,-458 355.7754,-458 355.7754,-458 361.7754,-458 367.7754,-464 367.7754,-470 367.7754,-470 367.7754,-482 367.7754,-482 367.7754,-488 361.7754,-494 355.7754,-494"/>
<text text-anchor="middle" x="301.965" y="-480.2" font-family="Verdana" font-size="14.00" fill="#000000">ntp</text>
<text text-anchor="middle" x="301.965" y="-463.4" font-family="Verdana" font-size="14.00" fill="#000000">QueryWithOptions</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewRouterTimestamper -->
<g id="node6" class="node">
<g id="node3" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewRouterTimestamper</title>
<g id="a_node6"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewRouterTimestamper | defined in router_timestamper.go:55&#10;at router_timestamper.go:61: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewZones]&#10;at router_timestamper.go:65: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig]">
<g id="a_node3"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewRouterTimestamper | defined in router_timestamper.go:55&#10;at router_timestamper.go:61: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewZones]&#10;at router_timestamper.go:65: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M736.4082,-138C736.4082,-138 597.6188,-138 597.6188,-138 591.6188,-138 585.6188,-132 585.6188,-126 585.6188,-126 585.6188,-114 585.6188,-114 585.6188,-108 591.6188,-102 597.6188,-102 597.6188,-102 736.4082,-102 736.4082,-102 742.4082,-102 748.4082,-108 748.4082,-114 748.4082,-114 748.4082,-126 748.4082,-126 748.4082,-132 742.4082,-138 736.4082,-138"/>
<text text-anchor="middle" x="667.0135" y="-115.8" font-family="Verdana" font-size="14.00" fill="#000000">NewRouterTimestamper</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewRouterTimestamper&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewZones -->
<g id="edge2" class="edge">
<g id="edge8" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewRouterTimestamper&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewZones</title>
<g id="a_edge2"><a xlink:title="at router_timestamper.go:61: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewZones]">
<g id="a_edge8"><a xlink:title="at router_timestamper.go:61: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewZones]">
<path fill="none" stroke="#000000" d="M748.4483,-114.0303C780.9942,-111.6445 817.5321,-108.9661 846.4526,-106.846"/>
<polygon fill="#000000" stroke="#000000" points="847.024,-110.3136 856.7413,-106.0918 846.5122,-103.3324 847.024,-110.3136"/>
</a>
@@ -123,21 +95,49 @@
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig -->
<g id="node8" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig</title>
<g id="a_node8"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig | defined in router_timestamper.go:331&#10;at router_timestamper.go:357: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).GetZone]&#10;at router_timestamper.go:348: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.getLocalCountryCode]">
<g id="a_node8"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig | defined in router_timestamper.go:331&#10;at router_timestamper.go:348: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.getLocalCountryCode]&#10;at router_timestamper.go:357: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).GetZone]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M937.126,-286C937.126,-286 860.7104,-286 860.7104,-286 854.7104,-286 848.7104,-280 848.7104,-274 848.7104,-274 848.7104,-262 848.7104,-262 848.7104,-256 854.7104,-250 860.7104,-250 860.7104,-250 937.126,-250 937.126,-250 943.126,-250 949.126,-256 949.126,-262 949.126,-262 949.126,-274 949.126,-274 949.126,-280 943.126,-286 937.126,-286"/>
<text text-anchor="middle" x="898.9182" y="-263.8" font-family="Verdana" font-size="14.00" fill="#000000">updateConfig</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewRouterTimestamper&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig -->
<g id="edge16" class="edge">
<g id="edge18" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.NewRouterTimestamper&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig</title>
<g id="a_edge16"><a xlink:title="at router_timestamper.go:65: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig]">
<g id="a_edge18"><a xlink:title="at router_timestamper.go:65: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig]">
<path fill="none" stroke="#000000" d="M684.2314,-138.2078C711.018,-165.5021 765.4158,-216.9173 821.2106,-246 826.759,-248.8921 832.7343,-251.4444 838.8191,-253.6875"/>
<polygon fill="#000000" stroke="#000000" points="837.8309,-257.0483 848.4253,-256.9623 840.0896,-250.4227 837.8309,-257.0483"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.checkIPv6Connectivity -->
<g id="node4" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.checkIPv6Connectivity</title>
<g id="a_node4"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.checkIPv6Connectivity | defined in router_timestamper.go:371">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M964.834,-469C964.834,-469 833.0024,-469 833.0024,-469 827.0024,-469 821.0024,-463 821.0024,-457 821.0024,-457 821.0024,-445 821.0024,-445 821.0024,-439 827.0024,-433 833.0024,-433 833.0024,-433 964.834,-433 964.834,-433 970.834,-433 976.834,-439 976.834,-445 976.834,-445 976.834,-457 976.834,-457 976.834,-463 970.834,-469 964.834,-469"/>
<text text-anchor="middle" x="898.9182" y="-446.8" font-family="Verdana" font-size="14.00" fill="#000000">checkIPv6Connectivity</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration -->
<g id="node5" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration</title>
<g id="a_node5"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration | defined in router_timestamper.go:386">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M1158.2573,-208C1158.2573,-208 1089.4109,-208 1089.4109,-208 1083.4109,-208 1077.4109,-202 1077.4109,-196 1077.4109,-196 1077.4109,-184 1077.4109,-184 1077.4109,-178 1083.4109,-172 1089.4109,-172 1089.4109,-172 1158.2573,-172 1158.2573,-172 1164.2573,-172 1170.2573,-178 1170.2573,-184 1170.2573,-184 1170.2573,-196 1170.2573,-196 1170.2573,-202 1164.2573,-208 1158.2573,-208"/>
<text text-anchor="middle" x="1123.8341" y="-185.8" font-family="Verdana" font-size="14.00" fill="#000000">absDuration</text>
</a>
</g>
</g>
<!-- github.com/beevik/ntp.QueryWithOptions -->
<g id="node6" class="node">
<title>github.com/beevik/ntp.QueryWithOptions</title>
<g id="a_node6"><a xlink:title="github.com/beevik/ntp.QueryWithOptions | defined in ntp.go:432">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M355.7754,-494C355.7754,-494 248.1546,-494 248.1546,-494 242.1546,-494 236.1546,-488 236.1546,-482 236.1546,-482 236.1546,-470 236.1546,-470 236.1546,-464 242.1546,-458 248.1546,-458 248.1546,-458 355.7754,-458 355.7754,-458 361.7754,-458 367.7754,-464 367.7754,-470 367.7754,-470 367.7754,-482 367.7754,-482 367.7754,-488 361.7754,-494 355.7754,-494"/>
<text text-anchor="middle" x="301.965" y="-480.2" font-family="Verdana" font-size="14.00" fill="#000000">ntp</text>
<text text-anchor="middle" x="301.965" y="-463.4" font-family="Verdana" font-size="14.00" fill="#000000">QueryWithOptions</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.DefaultNTPClient).QueryWithOptions -->
<g id="node7" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.DefaultNTPClient).QueryWithOptions</title>
@@ -148,36 +148,36 @@
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.DefaultNTPClient).QueryWithOptions&#45;&gt;github.com/beevik/ntp.QueryWithOptions -->
<g id="edge14" class="edge">
<g id="edge13" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.DefaultNTPClient).QueryWithOptions&#45;&gt;github.com/beevik/ntp.QueryWithOptions</title>
<g id="a_edge14"><a xlink:title="at router_timestamper.go:21: calling [github.com/beevik/ntp.QueryWithOptions]">
<g id="a_edge13"><a xlink:title="at router_timestamper.go:21: calling [github.com/beevik/ntp.QueryWithOptions]">
<path fill="none" stroke="#8b4513" d="M155.3772,-476C177.7612,-476 202.965,-476 226.0794,-476"/>
<polygon fill="#8b4513" stroke="#8b4513" points="226.1878,-479.5001 236.1878,-476 226.1878,-472.5001 226.1878,-479.5001"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.getLocalCountryCode -->
<g id="edge10" class="edge">
<g id="edge5" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.getLocalCountryCode</title>
<g id="a_edge10"><a xlink:title="at router_timestamper.go:348: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.getLocalCountryCode]">
<g id="a_edge5"><a xlink:title="at router_timestamper.go:348: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.getLocalCountryCode]">
<path fill="none" stroke="#000000" d="M949.2861,-282.535C959.0176,-286.82 968.6526,-292.2328 976.6258,-299 1022.0787,-337.5781 1002.2441,-377.3308 1047.4553,-417.4837"/>
<polygon fill="#000000" stroke="#000000" points="1045.3444,-420.2793 1055.2899,-423.9314 1049.7925,-414.8743 1045.3444,-420.2793"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).GetZone -->
<g id="node21" class="node">
<g id="node19" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).GetZone</title>
<g id="a_node21"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).GetZone | defined in zones.go:28">
<g id="a_node19"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).GetZone | defined in zones.go:28">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M1148.3131,-147C1148.3131,-147 1099.3551,-147 1099.3551,-147 1093.3551,-147 1087.3551,-141 1087.3551,-135 1087.3551,-135 1087.3551,-123 1087.3551,-123 1087.3551,-117 1093.3551,-111 1099.3551,-111 1099.3551,-111 1148.3131,-111 1148.3131,-111 1154.3131,-111 1160.3131,-117 1160.3131,-123 1160.3131,-123 1160.3131,-135 1160.3131,-135 1160.3131,-141 1154.3131,-147 1148.3131,-147"/>
<text text-anchor="middle" x="1123.8341" y="-124.8" font-family="Verdana" font-size="14.00" fill="#000000">GetZone</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).GetZone -->
<g id="edge7" class="edge">
<g id="edge17" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).GetZone</title>
<g id="a_edge7"><a xlink:title="at router_timestamper.go:357: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).GetZone]">
<g id="a_edge17"><a xlink:title="at router_timestamper.go:357: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).GetZone]">
<path fill="none" stroke="#000000" d="M949.0305,-264.8332C971.0415,-261.1253 995.8619,-253.4902 1013.6258,-238 1045.1651,-210.4976 1018.5362,-179.0098 1049.6258,-151 1057.338,-144.0518 1067.153,-139.2936 1077.0995,-136.0365"/>
<polygon fill="#000000" stroke="#000000" points="1078.334,-139.3254 1087.0168,-133.2543 1076.4431,-132.5856 1078.334,-139.3254"/>
</a>
@@ -186,25 +186,25 @@
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery -->
<g id="node9" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery</title>
<g id="a_node9"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery | defined in router_timestamper.go:129&#10;at router_timestamper.go:130: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig]&#10;at router_timestamper.go:141: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).queryTime]&#10;at router_timestamper.go:150: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).queryTime]&#10;at router_timestamper.go:149: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).secureRandBool]&#10;at router_timestamper.go:131: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.checkIPv6Connectivity]">
<g id="a_node9"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery | defined in router_timestamper.go:129&#10;at router_timestamper.go:131: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.checkIPv6Connectivity]&#10;at router_timestamper.go:149: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).secureRandBool]&#10;at router_timestamper.go:141: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).queryTime]&#10;at router_timestamper.go:150: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).queryTime]&#10;at router_timestamper.go:130: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M721.6312,-362C721.6312,-362 612.3958,-362 612.3958,-362 606.3958,-362 600.3958,-356 600.3958,-350 600.3958,-350 600.3958,-338 600.3958,-338 600.3958,-332 606.3958,-326 612.3958,-326 612.3958,-326 721.6312,-326 721.6312,-326 727.6312,-326 733.6312,-332 733.6312,-338 733.6312,-338 733.6312,-350 733.6312,-350 733.6312,-356 727.6312,-362 721.6312,-362"/>
<text text-anchor="middle" x="667.0135" y="-339.8" font-family="Verdana" font-size="14.00" fill="#000000">performTimeQuery</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.checkIPv6Connectivity -->
<g id="edge18" class="edge">
<g id="edge9" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.checkIPv6Connectivity</title>
<g id="a_edge18"><a xlink:title="at router_timestamper.go:131: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.checkIPv6Connectivity]">
<g id="a_edge9"><a xlink:title="at router_timestamper.go:131: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.checkIPv6Connectivity]">
<path fill="none" stroke="#000000" d="M700.1887,-362.133C731.0725,-378.6876 778.615,-403.3472 821.2106,-422 826.8372,-424.4639 832.7462,-426.9119 838.6872,-429.2808"/>
<polygon fill="#000000" stroke="#000000" points="837.4258,-432.5455 848.0137,-432.9293 839.976,-426.0266 837.4258,-432.5455"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig -->
<g id="edge4" class="edge">
<g id="edge19" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig</title>
<g id="a_edge4"><a xlink:title="at router_timestamper.go:130: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig]">
<g id="a_edge19"><a xlink:title="at router_timestamper.go:130: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).updateConfig]">
<path fill="none" stroke="#000000" d="M734.0434,-326.2901C738.8505,-324.8816 743.6124,-323.4442 748.2106,-322 779.4019,-312.2034 813.7485,-300.0084 841.7651,-289.6876"/>
<polygon fill="#000000" stroke="#000000" points="843.2327,-292.8765 851.3954,-286.1221 840.8022,-286.3119 843.2327,-292.8765"/>
</a>
@@ -213,7 +213,7 @@
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).queryTime -->
<g id="node10" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).queryTime</title>
<g id="a_node10"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).queryTime | defined in router_timestamper.go:276&#10;at router_timestamper.go:303: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration]&#10;at router_timestamper.go:312: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration]&#10;at router_timestamper.go:304: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration]&#10;at router_timestamper.go:319: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).stampTime]">
<g id="a_node10"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).queryTime | defined in router_timestamper.go:276&#10;at router_timestamper.go:319: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).stampTime]&#10;at router_timestamper.go:303: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration]&#10;at router_timestamper.go:312: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration]&#10;at router_timestamper.go:304: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M929.8429,-347C929.8429,-347 867.9935,-347 867.9935,-347 861.9935,-347 855.9935,-341 855.9935,-335 855.9935,-335 855.9935,-323 855.9935,-323 855.9935,-317 861.9935,-311 867.9935,-311 867.9935,-311 929.8429,-311 929.8429,-311 935.8429,-311 941.8429,-317 941.8429,-323 941.8429,-323 941.8429,-335 941.8429,-335 941.8429,-341 935.8429,-347 929.8429,-347"/>
<text text-anchor="middle" x="898.9182" y="-324.8" font-family="Verdana" font-size="14.00" fill="#000000">queryTime</text>
</a>
@@ -238,18 +238,18 @@
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).secureRandBool -->
<g id="edge13" class="edge">
<g id="edge11" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).secureRandBool</title>
<g id="a_edge13"><a xlink:title="at router_timestamper.go:149: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).secureRandBool]">
<g id="a_edge11"><a xlink:title="at router_timestamper.go:149: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).secureRandBool]">
<path fill="none" stroke="#000000" d="M733.7788,-357.2434C764.1938,-363.2764 800.1513,-370.4089 830.7354,-376.4754"/>
<polygon fill="#000000" stroke="#000000" points="830.3957,-379.9762 840.8856,-378.4888 831.7577,-373.11 830.3957,-379.9762"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).queryTime&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration -->
<g id="edge5" class="edge">
<g id="edge15" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).queryTime&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration</title>
<g id="a_edge5"><a xlink:title="at router_timestamper.go:303: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration]&#10;at router_timestamper.go:312: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration]&#10;at router_timestamper.go:304: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration]">
<g id="a_edge15"><a xlink:title="at router_timestamper.go:303: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration]&#10;at router_timestamper.go:312: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration]&#10;at router_timestamper.go:304: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration]">
<path fill="none" stroke="#000000" d="M942.0155,-316.7584C953.8548,-312.2574 966.2725,-306.4 976.6258,-299 1017.6903,-269.6493 1007.4174,-239.6803 1049.6258,-212 1055.2126,-208.3362 1061.4284,-205.2657 1067.8181,-202.6962"/>
<polygon fill="#000000" stroke="#000000" points="1069.0411,-205.9758 1077.2513,-199.2794 1066.6571,-199.3943 1069.0411,-205.9758"/>
</a>
@@ -265,9 +265,9 @@
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).queryTime&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).stampTime -->
<g id="edge11" class="edge">
<g id="edge10" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).queryTime&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).stampTime</title>
<g id="a_edge11"><a xlink:title="at router_timestamper.go:319: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).stampTime]">
<g id="a_edge10"><a xlink:title="at router_timestamper.go:319: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).stampTime]">
<path fill="none" stroke="#000000" d="M941.7526,-329C978.1397,-329 1030.5595,-329 1069.8194,-329"/>
<polygon fill="#000000" stroke="#000000" points="1070.0083,-332.5001 1080.0083,-329 1070.0083,-325.5001 1070.0083,-332.5001"/>
</a>
@@ -283,27 +283,45 @@
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).runOnce&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery -->
<g id="edge8" class="edge">
<g id="edge3" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).runOnce&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery</title>
<g id="a_edge8"><a xlink:title="at router_timestamper.go:273: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery]">
<g id="a_edge3"><a xlink:title="at router_timestamper.go:273: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery]">
<path fill="none" stroke="#000000" d="M512.9592,-363.4293C534.7608,-360.6797 563.365,-357.0721 590.0004,-353.7129"/>
<polygon fill="#000000" stroke="#000000" points="590.6105,-357.1637 600.0939,-352.4399 589.7346,-350.2188 590.6105,-357.1637"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).TimestampNow -->
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).run -->
<g id="node14" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).run</title>
<g id="a_node14"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).run | defined in router_timestamper.go:215&#10;at router_timestamper.go:218: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M491.7182,-325C491.7182,-325 461.7182,-325 461.7182,-325 455.7182,-325 449.7182,-319 449.7182,-313 449.7182,-313 449.7182,-301 449.7182,-301 449.7182,-295 455.7182,-289 461.7182,-289 461.7182,-289 491.7182,-289 491.7182,-289 497.7182,-289 503.7182,-295 503.7182,-301 503.7182,-301 503.7182,-313 503.7182,-313 503.7182,-319 497.7182,-325 491.7182,-325"/>
<text text-anchor="middle" x="476.7182" y="-302.8" font-family="Verdana" font-size="14.00" fill="#000000">run</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).run&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery -->
<g id="edge4" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).run&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery</title>
<g id="a_edge4"><a xlink:title="at router_timestamper.go:218: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery]">
<path fill="none" stroke="#000000" d="M503.9829,-312.3012C526.61,-316.7007 559.9243,-323.1782 590.5502,-329.1329"/>
<polygon fill="#000000" stroke="#000000" points="589.8981,-332.5716 600.3823,-331.0446 591.2341,-325.7002 589.8981,-332.5716"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).TimestampNow -->
<g id="node15" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).TimestampNow</title>
<g id="a_node14"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).TimestampNow | defined in router_timestamper.go:119&#10;at router_timestamper.go:121: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).runOnce]">
<g id="a_node15"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).TimestampNow | defined in router_timestamper.go:119&#10;at router_timestamper.go:121: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).runOnce]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M347.1672,-386C347.1672,-386 256.7628,-386 256.7628,-386 250.7628,-386 244.7628,-380 244.7628,-374 244.7628,-374 244.7628,-362 244.7628,-362 244.7628,-356 250.7628,-350 256.7628,-350 256.7628,-350 347.1672,-350 347.1672,-350 353.1672,-350 359.1672,-356 359.1672,-362 359.1672,-362 359.1672,-374 359.1672,-374 359.1672,-380 353.1672,-386 347.1672,-386"/>
<text text-anchor="middle" x="301.965" y="-363.8" font-family="Verdana" font-size="14.00" fill="#000000">TimestampNow</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).TimestampNow&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).runOnce -->
<g id="edge19" class="edge">
<g id="edge14" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).TimestampNow&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).runOnce</title>
<g id="a_edge19"><a xlink:title="at router_timestamper.go:121: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).runOnce]">
<g id="a_edge14"><a xlink:title="at router_timestamper.go:121: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).runOnce]">
<path fill="none" stroke="#000000" d="M359.1857,-368C377.8039,-368 398.5042,-368 417.2807,-368"/>
<polygon fill="#000000" stroke="#000000" points="430.5192,-371.5 440.5192,-368 430.5192,-364.5 430.5192,-371.5"/>
<polyline fill="none" stroke="#000000" points="430.5192,-368 425.5192,-368.0001 "/>
@@ -312,72 +330,36 @@
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).GetCurrentTime -->
<g id="node15" class="node">
<g id="node16" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).GetCurrentTime</title>
<g id="a_node15"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).GetCurrentTime | defined in router_timestamper.go:397&#10;at router_timestamper.go:400: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).TimestampNow]">
<g id="a_node16"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).GetCurrentTime | defined in router_timestamper.go:397&#10;at router_timestamper.go:400: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).TimestampNow]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M135.6792,-386C135.6792,-386 43.6308,-386 43.6308,-386 37.6308,-386 31.6308,-380 31.6308,-374 31.6308,-374 31.6308,-362 31.6308,-362 31.6308,-356 37.6308,-350 43.6308,-350 43.6308,-350 135.6792,-350 135.6792,-350 141.6792,-350 147.6792,-356 147.6792,-362 147.6792,-362 147.6792,-374 147.6792,-374 147.6792,-380 141.6792,-386 135.6792,-386"/>
<text text-anchor="middle" x="89.655" y="-363.8" font-family="Verdana" font-size="14.00" fill="#000000">GetCurrentTime</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).GetCurrentTime&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).TimestampNow -->
<g id="edge1" class="edge">
<g id="edge16" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).GetCurrentTime&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).TimestampNow</title>
<g id="a_edge1"><a xlink:title="at router_timestamper.go:400: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).TimestampNow]">
<g id="a_edge16"><a xlink:title="at router_timestamper.go:400: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).TimestampNow]">
<path fill="none" stroke="#000000" d="M147.9505,-368C174.7367,-368 206.6648,-368 234.487,-368"/>
<polygon fill="#000000" stroke="#000000" points="234.5344,-371.5001 244.5344,-368 234.5343,-364.5001 234.5344,-371.5001"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).validateResponse -->
<g id="node16" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).validateResponse</title>
<g id="a_node16"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).validateResponse | defined in verification.go:10&#10;at verification.go:28: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M138.6256,-286C138.6256,-286 40.6844,-286 40.6844,-286 34.6844,-286 28.6844,-280 28.6844,-274 28.6844,-274 28.6844,-262 28.6844,-262 28.6844,-256 34.6844,-250 40.6844,-250 40.6844,-250 138.6256,-250 138.6256,-250 144.6256,-250 150.6256,-256 150.6256,-262 150.6256,-262 150.6256,-274 150.6256,-274 150.6256,-280 144.6256,-286 138.6256,-286"/>
<text text-anchor="middle" x="89.655" y="-263.8" font-family="Verdana" font-size="14.00" fill="#000000">validateResponse</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).validateResponse&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration -->
<g id="edge9" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).validateResponse&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration</title>
<g id="a_edge9"><a xlink:title="at verification.go:28: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration]">
<path fill="none" stroke="#000000" d="M125.453,-249.8939C166.855,-230.6609 237.5896,-203 301.965,-203 301.965,-203 301.965,-203 898.9182,-203 956.2509,-203 1021.6676,-198.7379 1067.1138,-195.0945"/>
<polygon fill="#000000" stroke="#000000" points="1067.6758,-198.5603 1077.3571,-194.2567 1067.1051,-191.5836 1067.6758,-198.5603"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).run -->
<g id="node17" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).run</title>
<g id="a_node17"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).run | defined in router_timestamper.go:215&#10;at router_timestamper.go:218: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M491.7182,-325C491.7182,-325 461.7182,-325 461.7182,-325 455.7182,-325 449.7182,-319 449.7182,-313 449.7182,-313 449.7182,-301 449.7182,-301 449.7182,-295 455.7182,-289 461.7182,-289 461.7182,-289 491.7182,-289 491.7182,-289 497.7182,-289 503.7182,-295 503.7182,-301 503.7182,-301 503.7182,-313 503.7182,-313 503.7182,-319 497.7182,-325 491.7182,-325"/>
<text text-anchor="middle" x="476.7182" y="-302.8" font-family="Verdana" font-size="14.00" fill="#000000">run</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).run&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery -->
<g id="edge6" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).run&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery</title>
<g id="a_edge6"><a xlink:title="at router_timestamper.go:218: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).performTimeQuery]">
<path fill="none" stroke="#000000" d="M503.9829,-312.3012C526.61,-316.7007 559.9243,-323.1782 590.5502,-329.1329"/>
<polygon fill="#000000" stroke="#000000" points="589.8981,-332.5716 600.3823,-331.0446 591.2341,-325.7002 589.8981,-332.5716"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).Start -->
<g id="node18" class="node">
<g id="node17" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).Start</title>
<g id="a_node18"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).Start | defined in router_timestamper.go:69&#10;at router_timestamper.go:75: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).run]">
<g id="a_node17"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).Start | defined in router_timestamper.go:69&#10;at router_timestamper.go:75: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).run]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M316.965,-325C316.965,-325 286.965,-325 286.965,-325 280.965,-325 274.965,-319 274.965,-313 274.965,-313 274.965,-301 274.965,-301 274.965,-295 280.965,-289 286.965,-289 286.965,-289 316.965,-289 316.965,-289 322.965,-289 328.965,-295 328.965,-301 328.965,-301 328.965,-313 328.965,-313 328.965,-319 322.965,-325 316.965,-325"/>
<text text-anchor="middle" x="301.965" y="-302.8" font-family="Verdana" font-size="14.00" fill="#000000">Start</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).Start&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).run -->
<g id="edge15" class="edge">
<g id="edge1" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).Start&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).run</title>
<g id="a_edge15"><a xlink:title="at router_timestamper.go:75: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).run]">
<g id="a_edge1"><a xlink:title="at router_timestamper.go:75: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).run]">
<path fill="none" stroke="#000000" d="M329.2702,-307C355.1753,-307 394.7342,-307 426.3574,-307"/>
<polygon fill="#000000" stroke="#000000" points="439.6048,-310.5 449.6048,-307 439.6047,-303.5 439.6048,-310.5"/>
<polyline fill="none" stroke="#000000" points="439.6048,-307 434.6048,-307.0001 "/>
@@ -385,19 +367,37 @@
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).validateResponse -->
<g id="node18" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).validateResponse</title>
<g id="a_node18"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).validateResponse | defined in verification.go:10&#10;at verification.go:28: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M138.6256,-286C138.6256,-286 40.6844,-286 40.6844,-286 34.6844,-286 28.6844,-280 28.6844,-274 28.6844,-274 28.6844,-262 28.6844,-262 28.6844,-256 34.6844,-250 40.6844,-250 40.6844,-250 138.6256,-250 138.6256,-250 144.6256,-250 150.6256,-256 150.6256,-262 150.6256,-262 150.6256,-274 150.6256,-274 150.6256,-280 144.6256,-286 138.6256,-286"/>
<text text-anchor="middle" x="89.655" y="-263.8" font-family="Verdana" font-size="14.00" fill="#000000">validateResponse</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).validateResponse&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration -->
<g id="edge2" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.RouterTimestamper).validateResponse&#45;&gt;github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration</title>
<g id="a_edge2"><a xlink:title="at verification.go:28: calling [github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.absDuration]">
<path fill="none" stroke="#000000" d="M125.453,-249.8939C166.855,-230.6609 237.5896,-203 301.965,-203 301.965,-203 301.965,-203 898.9182,-203 956.2509,-203 1021.6676,-198.7379 1067.1138,-195.0945"/>
<polygon fill="#000000" stroke="#000000" points="1067.6758,-198.5603 1077.3571,-194.2567 1067.1051,-191.5836 1067.6758,-198.5603"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).readContinentFile -->
<g id="node20" class="node">
<g id="node21" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).readContinentFile</title>
<g id="a_node20"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).readContinentFile | defined in zones.go:54">
<g id="a_node21"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).readContinentFile | defined in zones.go:54">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M1384.1792,-86C1384.1792,-86 1282.9968,-86 1282.9968,-86 1276.9968,-86 1270.9968,-80 1270.9968,-74 1270.9968,-74 1270.9968,-62 1270.9968,-62 1270.9968,-56 1276.9968,-50 1282.9968,-50 1282.9968,-50 1384.1792,-50 1384.1792,-50 1390.1792,-50 1396.1792,-56 1396.1792,-62 1396.1792,-62 1396.1792,-74 1396.1792,-74 1396.1792,-80 1390.1792,-86 1384.1792,-86"/>
<text text-anchor="middle" x="1333.588" y="-63.8" font-family="Verdana" font-size="14.00" fill="#000000">readContinentFile</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).initialize&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).readContinentFile -->
<g id="edge3" class="edge">
<g id="edge6" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).initialize&#45;&gt;(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).readContinentFile</title>
<g id="a_edge3"><a xlink:title="at zones.go:51: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).readContinentFile]">
<g id="a_edge6"><a xlink:title="at zones.go:51: calling [(*github.com/go&#45;i2p/go&#45;i2p/lib/util/time/sntp.Zones).readContinentFile]">
<path fill="none" stroke="#000000" d="M1160.3704,-68C1187.9205,-68 1226.6146,-68 1260.4451,-68"/>
<polygon fill="#000000" stroke="#000000" points="1260.7704,-71.5001 1270.7704,-68 1260.7703,-64.5001 1260.7704,-71.5001"/>
</a>

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: gocallvis Pages: 1 -->
<svg width="0pt" height="0pt"
viewBox="0.00 0.00 0.00 0.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(0 0)">
<title>gocallvis</title>
<polygon fill="#d3d3d3" stroke="transparent" points="0,0 0,0 0,0 0,0 0,0"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 584 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 64 KiB

View File

@@ -15,97 +15,50 @@
<text text-anchor="middle" x="173.2588" y="-629.8" font-family="Arial" font-size="18.00" fill="#000000">transport</text>
</g>
<g id="clust5" class="cluster">
<title>cluster_github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.RouterInfo</title>
<g id="a_clust5"><a xlink:title="type: github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.RouterInfo">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M238.4341,-519C238.4341,-519 317.4117,-519 317.4117,-519 323.4117,-519 329.4117,-525 329.4117,-531 329.4117,-531 329.4117,-585 329.4117,-585 329.4117,-591 323.4117,-597 317.4117,-597 317.4117,-597 238.4341,-597 238.4341,-597 232.4341,-597 226.4341,-591 226.4341,-585 226.4341,-585 226.4341,-531 226.4341,-531 226.4341,-525 232.4341,-519 238.4341,-519"/>
<text text-anchor="middle" x="277.9229" y="-527.5" font-family="Arial" font-size="15.00" fill="#222222">(RouterInfo)</text>
<title>cluster_github.com/go&#45;i2p/common/router_info.RouterInfo</title>
<g id="a_clust5"><a xlink:title="type: github.com/go&#45;i2p/common/router_info.RouterInfo">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M238.4341,-533C238.4341,-533 317.4117,-533 317.4117,-533 323.4117,-533 329.4117,-539 329.4117,-545 329.4117,-545 329.4117,-599 329.4117,-599 329.4117,-605 323.4117,-611 317.4117,-611 317.4117,-611 238.4341,-611 238.4341,-611 232.4341,-611 226.4341,-605 226.4341,-599 226.4341,-599 226.4341,-545 226.4341,-545 226.4341,-539 232.4341,-533 238.4341,-533"/>
<text text-anchor="middle" x="277.9229" y="-541.5" font-family="Arial" font-size="15.00" fill="#222222">(RouterInfo)</text>
</a>
</g>
</g>
<g id="clust4" class="cluster">
<title>cluster_*github.com/sirupsen/logrus.Logger</title>
<g id="a_clust4"><a xlink:title="type: *github.com/sirupsen/logrus.Logger">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M251.2623,-138C251.2623,-138 305.5835,-138 305.5835,-138 311.5835,-138 317.5835,-144 317.5835,-150 317.5835,-150 317.5835,-204 317.5835,-204 317.5835,-210 311.5835,-216 305.5835,-216 305.5835,-216 251.2623,-216 251.2623,-216 245.2623,-216 239.2623,-210 239.2623,-204 239.2623,-204 239.2623,-150 239.2623,-150 239.2623,-144 245.2623,-138 251.2623,-138"/>
<text text-anchor="middle" x="278.4229" y="-146.5" font-family="Arial" font-size="15.00" fill="#222222">(*Logger)</text>
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M251.2623,-435C251.2623,-435 305.5835,-435 305.5835,-435 311.5835,-435 317.5835,-441 317.5835,-447 317.5835,-447 317.5835,-501 317.5835,-501 317.5835,-507 311.5835,-513 305.5835,-513 305.5835,-513 251.2623,-513 251.2623,-513 245.2623,-513 239.2623,-507 239.2623,-501 239.2623,-501 239.2623,-447 239.2623,-447 239.2623,-441 245.2623,-435 251.2623,-435"/>
<text text-anchor="middle" x="278.4229" y="-443.5" font-family="Arial" font-size="15.00" fill="#222222">(*Logger)</text>
</a>
</g>
</g>
<g id="clust3" class="cluster">
<title>cluster_*github.com/go&#45;i2p/logger.Logger</title>
<g id="a_clust3"><a xlink:title="type: *github.com/go&#45;i2p/logger.Logger">
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M241.1578,-235C241.1578,-235 314.688,-235 314.688,-235 320.688,-235 326.688,-241 326.688,-247 326.688,-247 326.688,-484 326.688,-484 326.688,-490 320.688,-496 314.688,-496 314.688,-496 241.1578,-496 241.1578,-496 235.1578,-496 229.1578,-490 229.1578,-484 229.1578,-484 229.1578,-247 229.1578,-247 229.1578,-241 235.1578,-235 241.1578,-235"/>
<text text-anchor="middle" x="277.9229" y="-243.5" font-family="Arial" font-size="15.00" fill="#222222">(*Logger)</text>
<path fill="#eed8ae" stroke="#000000" stroke-width=".5" d="M241.1578,-121C241.1578,-121 314.688,-121 314.688,-121 320.688,-121 326.688,-127 326.688,-133 326.688,-133 326.688,-370 326.688,-370 326.688,-376 320.688,-382 314.688,-382 314.688,-382 241.1578,-382 241.1578,-382 235.1578,-382 229.1578,-376 229.1578,-370 229.1578,-370 229.1578,-133 229.1578,-133 229.1578,-127 235.1578,-121 241.1578,-121"/>
<text text-anchor="middle" x="277.9229" y="-129.5" font-family="Arial" font-size="15.00" fill="#222222">(*Logger)</text>
</a>
</g>
</g>
<g id="clust2" class="cluster">
<title>cluster_*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer</title>
<g id="a_clust2"><a xlink:title="type: *github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer">
<path fill="#b0c4de" stroke="#000000" stroke-width=".5" d="M20,-160C20,-160 133.3282,-160 133.3282,-160 139.3282,-160 145.3282,-166 145.3282,-172 145.3282,-172 145.3282,-470 145.3282,-470 145.3282,-476 139.3282,-482 133.3282,-482 133.3282,-482 20,-482 20,-482 14,-482 8,-476 8,-470 8,-470 8,-172 8,-172 8,-166 14,-160 20,-160"/>
<text text-anchor="middle" x="76.6641" y="-168.5" font-family="Arial" font-size="15.00" fill="#222222">(*TransportMuxer)</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport.Mux -->
<g id="node1" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport.Mux</title>
<g id="a_node1"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport.Mux | defined in multi.go:18&#10;at multi.go:19: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:19: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:22: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M91.6641,-115C91.6641,-115 61.6641,-115 61.6641,-115 55.6641,-115 49.6641,-109 49.6641,-103 49.6641,-103 49.6641,-91 49.6641,-91 49.6641,-85 55.6641,-79 61.6641,-79 61.6641,-79 91.6641,-79 91.6641,-79 97.6641,-79 103.6641,-85 103.6641,-91 103.6641,-91 103.6641,-103 103.6641,-103 103.6641,-109 97.6641,-115 91.6641,-115"/>
<text text-anchor="middle" x="76.6641" y="-92.8" font-family="Verdana" font-size="14.00" fill="#000000">Mux</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/logger.Logger).WithField -->
<g id="node10" class="node">
<title>(*github.com/go&#45;i2p/logger.Logger).WithField</title>
<g id="a_node10"><a xlink:title="(*github.com/go&#45;i2p/logger.Logger).WithField | defined in log.go:54">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M306.1974,-305C306.1974,-305 249.6484,-305 249.6484,-305 243.6484,-305 237.6484,-299 237.6484,-293 237.6484,-293 237.6484,-281 237.6484,-281 237.6484,-275 243.6484,-269 249.6484,-269 249.6484,-269 306.1974,-269 306.1974,-269 312.1974,-269 318.1974,-275 318.1974,-281 318.1974,-281 318.1974,-293 318.1974,-293 318.1974,-299 312.1974,-305 306.1974,-305"/>
<text text-anchor="middle" x="277.9229" y="-291.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="277.9229" y="-274.4" font-family="Verdana" font-size="14.00" fill="#000000">WithField</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport.Mux&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField -->
<g id="edge7" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport.Mux&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField</title>
<g id="a_edge7"><a xlink:title="at multi.go:19: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="none" stroke="#8b4513" d="M99.6957,-115.2173C113.2476,-126.1571 130.5676,-140.5254 145.3282,-154 184.5592,-189.8131 227.5583,-233.9088 253.6409,-261.2406"/>
<polygon fill="#8b4513" stroke="#8b4513" points="251.4225,-263.9868 260.8505,-268.8204 256.4946,-259.1624 251.4225,-263.9868"/>
</a>
</g>
</g>
<!-- (*github.com/sirupsen/logrus.Logger).Debug -->
<g id="node14" class="node">
<title>(*github.com/sirupsen/logrus.Logger).Debug</title>
<g id="a_node14"><a xlink:title="(*github.com/sirupsen/logrus.Logger).Debug | defined in logger.go:221">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M296.7449,-208C296.7449,-208 259.1009,-208 259.1009,-208 253.1009,-208 247.1009,-202 247.1009,-196 247.1009,-196 247.1009,-184 247.1009,-184 247.1009,-178 253.1009,-172 259.1009,-172 259.1009,-172 296.7449,-172 296.7449,-172 302.7449,-172 308.7449,-178 308.7449,-184 308.7449,-184 308.7449,-196 308.7449,-196 308.7449,-202 302.7449,-208 296.7449,-208"/>
<text text-anchor="middle" x="277.9229" y="-194.2" font-family="Verdana" font-size="14.00" fill="#000000">logrus</text>
<text text-anchor="middle" x="277.9229" y="-177.4" font-family="Verdana" font-size="14.00" fill="#000000">Debug</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport.Mux&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug -->
<g id="edge14" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport.Mux&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug</title>
<g id="a_edge14"><a xlink:title="at multi.go:19: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:22: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="none" stroke="#8b4513" d="M103.7904,-87.227C126.3206,-80.9219 158.2954,-76.3427 181.3282,-91 213.1999,-111.282 189.4525,-142.5028 217.3282,-168 223.0058,-173.1931 230.0041,-177.1837 237.2042,-180.243"/>
<polygon fill="#8b4513" stroke="#8b4513" points="236.4491,-183.6945 247.0426,-183.8631 238.8664,-177.1251 236.4491,-183.6945"/>
<path fill="#b0c4de" stroke="#000000" stroke-width=".5" d="M20,-221C20,-221 133.3282,-221 133.3282,-221 139.3282,-221 145.3282,-227 145.3282,-233 145.3282,-233 145.3282,-531 145.3282,-531 145.3282,-537 139.3282,-543 133.3282,-543 133.3282,-543 20,-543 20,-543 14,-543 8,-537 8,-531 8,-531 8,-233 8,-233 8,-227 14,-221 20,-221"/>
<text text-anchor="middle" x="76.6641" y="-229.5" font-family="Arial" font-size="15.00" fill="#222222">(*TransportMuxer)</text>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport.init -->
<g id="node2" class="node">
<g id="node1" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport.init</title>
<g id="a_node2"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport.init | defined in .:0&#10;at multi.go:8: calling [github.com/go&#45;i2p/logger.GetGoI2PLogger]&#10;at errors.go:6: calling [github.com/samber/oops.Errorf]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M91.6641,-53C91.6641,-53 61.6641,-53 61.6641,-53 55.6641,-53 49.6641,-47 49.6641,-41 49.6641,-41 49.6641,-29 49.6641,-29 49.6641,-23 55.6641,-17 61.6641,-17 61.6641,-17 91.6641,-17 91.6641,-17 97.6641,-17 103.6641,-23 103.6641,-29 103.6641,-29 103.6641,-41 103.6641,-41 103.6641,-47 97.6641,-53 91.6641,-53"/>
<text text-anchor="middle" x="76.6641" y="-30.8" font-family="Verdana" font-size="14.00" fill="#000000">init</text>
<g id="a_node1"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport.init | defined in .:0&#10;at multi.go:8: calling [github.com/go&#45;i2p/logger.GetGoI2PLogger]&#10;at errors.go:6: calling [github.com/samber/oops.Errorf]">
<path fill="#add8e6" stroke="#000000" stroke-width=".5" d="M91.6641,-57C91.6641,-57 61.6641,-57 61.6641,-57 55.6641,-57 49.6641,-51 49.6641,-45 49.6641,-45 49.6641,-33 49.6641,-33 49.6641,-27 55.6641,-21 61.6641,-21 61.6641,-21 91.6641,-21 91.6641,-21 97.6641,-21 103.6641,-27 103.6641,-33 103.6641,-33 103.6641,-45 103.6641,-45 103.6641,-51 97.6641,-57 91.6641,-57"/>
<text text-anchor="middle" x="76.6641" y="-34.8" font-family="Verdana" font-size="14.00" fill="#000000">init</text>
</a>
</g>
</g>
<!-- github.com/samber/oops.Errorf -->
<g id="node3" class="node">
<g id="node2" class="node">
<title>github.com/samber/oops.Errorf</title>
<g id="a_node3"><a xlink:title="github.com/samber/oops.Errorf | defined in oops.go:34">
<g id="a_node2"><a xlink:title="github.com/samber/oops.Errorf | defined in oops.go:34">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M295.1182,-52C295.1182,-52 260.7276,-52 260.7276,-52 254.7276,-52 248.7276,-46 248.7276,-40 248.7276,-40 248.7276,-28 248.7276,-28 248.7276,-22 254.7276,-16 260.7276,-16 260.7276,-16 295.1182,-16 295.1182,-16 301.1182,-16 307.1182,-22 307.1182,-28 307.1182,-28 307.1182,-40 307.1182,-40 307.1182,-46 301.1182,-52 295.1182,-52"/>
<text text-anchor="middle" x="277.9229" y="-38.2" font-family="Verdana" font-size="14.00" fill="#000000">oops</text>
<text text-anchor="middle" x="277.9229" y="-21.4" font-family="Verdana" font-size="14.00" fill="#000000">Errorf</text>
@@ -113,18 +66,18 @@
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport.init&#45;&gt;github.com/samber/oops.Errorf -->
<g id="edge21" class="edge">
<g id="edge18" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport.init&#45;&gt;github.com/samber/oops.Errorf</title>
<g id="a_edge21"><a xlink:title="at errors.go:6: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M103.8068,-34.8651C138.4765,-34.6929 198.7348,-34.3935 238.475,-34.196"/>
<polygon fill="#8b4513" stroke="#8b4513" points="238.6219,-37.6954 248.6043,-34.1457 238.587,-30.6955 238.6219,-37.6954"/>
<g id="a_edge18"><a xlink:title="at errors.go:6: calling [github.com/samber/oops.Errorf]">
<path fill="none" stroke="#8b4513" d="M103.8068,-38.3257C138.4765,-37.4644 198.7348,-35.9673 238.475,-34.98"/>
<polygon fill="#8b4513" stroke="#8b4513" points="238.6944,-38.4758 248.6043,-34.7284 238.5204,-31.4779 238.6944,-38.4758"/>
</a>
</g>
</g>
<!-- github.com/go&#45;i2p/logger.GetGoI2PLogger -->
<g id="node4" class="node">
<g id="node3" class="node">
<title>github.com/go&#45;i2p/logger.GetGoI2PLogger</title>
<g id="a_node4"><a xlink:title="github.com/go&#45;i2p/logger.GetGoI2PLogger | defined in log.go:120">
<g id="a_node3"><a xlink:title="github.com/go&#45;i2p/logger.GetGoI2PLogger | defined in log.go:120">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M326.6124,-113C326.6124,-113 229.2334,-113 229.2334,-113 223.2334,-113 217.2334,-107 217.2334,-101 217.2334,-101 217.2334,-89 217.2334,-89 217.2334,-83 223.2334,-77 229.2334,-77 229.2334,-77 326.6124,-77 326.6124,-77 332.6124,-77 338.6124,-83 338.6124,-89 338.6124,-89 338.6124,-101 338.6124,-101 338.6124,-107 332.6124,-113 326.6124,-113"/>
<text text-anchor="middle" x="277.9229" y="-99.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="277.9229" y="-82.4" font-family="Verdana" font-size="14.00" fill="#000000">GetGoI2PLogger</text>
@@ -132,102 +85,76 @@
</g>
</g>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport.init&#45;&gt;github.com/go&#45;i2p/logger.GetGoI2PLogger -->
<g id="edge2" class="edge">
<g id="edge7" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport.init&#45;&gt;github.com/go&#45;i2p/logger.GetGoI2PLogger</title>
<g id="a_edge2"><a xlink:title="at multi.go:8: calling [github.com/go&#45;i2p/logger.GetGoI2PLogger]">
<path fill="none" stroke="#8b4513" d="M103.8574,-42.2126C125.0339,-47.9071 155.1327,-56.1709 181.3282,-64 191.7286,-67.1084 202.72,-70.5169 213.415,-73.9008"/>
<polygon fill="#8b4513" stroke="#8b4513" points="212.5376,-77.2945 223.1281,-76.9923 214.6606,-70.6242 212.5376,-77.2945"/>
<g id="a_edge7"><a xlink:title="at multi.go:8: calling [github.com/go&#45;i2p/logger.GetGoI2PLogger]">
<path fill="none" stroke="#8b4513" d="M103.9173,-44.9123C125.1259,-49.6571 155.2389,-56.7091 181.3282,-64 192.1517,-67.0247 203.5808,-70.4675 214.6411,-73.9321"/>
<polygon fill="#8b4513" stroke="#8b4513" points="213.6512,-77.2899 224.2413,-76.9723 215.7646,-70.6165 213.6512,-77.2899"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Compatible -->
<g id="node5" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Compatible</title>
<g id="a_node5"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Compatible | defined in multi.go:100&#10;at multi.go:101: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:104: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:101: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.RouterInfo).String]&#10;at multi.go:101: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:109: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:104: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M109.4929,-291C109.4929,-291 43.8353,-291 43.8353,-291 37.8353,-291 31.8353,-285 31.8353,-279 31.8353,-279 31.8353,-267 31.8353,-267 31.8353,-261 37.8353,-255 43.8353,-255 43.8353,-255 109.4929,-255 109.4929,-255 115.4929,-255 121.4929,-261 121.4929,-267 121.4929,-267 121.4929,-279 121.4929,-279 121.4929,-285 115.4929,-291 109.4929,-291"/>
<text text-anchor="middle" x="76.6641" y="-268.8" font-family="Verdana" font-size="14.00" fill="#000000">Compatible</text>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport.Mux -->
<g id="node4" class="node">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport.Mux</title>
<g id="a_node4"><a xlink:title="github.com/go&#45;i2p/go&#45;i2p/lib/transport.Mux | defined in multi.go:18&#10;at multi.go:19: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:19: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:22: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M91.6641,-213C91.6641,-213 61.6641,-213 61.6641,-213 55.6641,-213 49.6641,-207 49.6641,-201 49.6641,-201 49.6641,-189 49.6641,-189 49.6641,-183 55.6641,-177 61.6641,-177 61.6641,-177 91.6641,-177 91.6641,-177 97.6641,-177 103.6641,-183 103.6641,-189 103.6641,-189 103.6641,-201 103.6641,-201 103.6641,-207 97.6641,-213 91.6641,-213"/>
<text text-anchor="middle" x="76.6641" y="-190.8" font-family="Verdana" font-size="14.00" fill="#000000">Mux</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Compatible&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField -->
<g id="edge1" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Compatible&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField</title>
<g id="a_edge1"><a xlink:title="at multi.go:101: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:104: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="none" stroke="#8b4513" d="M118.9067,-254.8625C127.6696,-251.0108 136.8224,-246.9219 145.3282,-243 161.3966,-235.5911 164.331,-221.0824 181.3282,-226 206.0518,-233.1531 230.5303,-248.728 248.6595,-262.3489"/>
<polygon fill="#8b4513" stroke="#8b4513" points="246.975,-265.4716 257.0225,-268.833 251.2642,-259.9396 246.975,-265.4716"/>
<!-- (*github.com/go&#45;i2p/logger.Logger).WithField -->
<g id="node10" class="node">
<title>(*github.com/go&#45;i2p/logger.Logger).WithField</title>
<g id="a_node10"><a xlink:title="(*github.com/go&#45;i2p/logger.Logger).WithField | defined in log.go:54">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M306.1974,-313C306.1974,-313 249.6484,-313 249.6484,-313 243.6484,-313 237.6484,-307 237.6484,-301 237.6484,-301 237.6484,-289 237.6484,-289 237.6484,-283 243.6484,-277 249.6484,-277 249.6484,-277 306.1974,-277 306.1974,-277 312.1974,-277 318.1974,-283 318.1974,-289 318.1974,-289 318.1974,-301 318.1974,-301 318.1974,-307 312.1974,-313 306.1974,-313"/>
<text text-anchor="middle" x="277.9229" y="-299.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="277.9229" y="-282.4" font-family="Verdana" font-size="14.00" fill="#000000">WithField</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Compatible&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug -->
<g id="edge19" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Compatible&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug</title>
<g id="a_edge19"><a xlink:title="at multi.go:101: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:109: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:104: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="none" stroke="#8b4513" d="M121.1499,-254.88C129.3101,-251.1871 137.6652,-247.153 145.3282,-243 161.6931,-234.1309 163.4859,-227.925 180.3282,-220 198.3784,-211.5066 219.4192,-204.6831 237.3329,-199.7027"/>
<polygon fill="#8b4513" stroke="#8b4513" points="238.4464,-203.0278 247.1976,-197.0557 236.6322,-196.267 238.4464,-203.0278"/>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport.Mux&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField -->
<g id="edge15" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport.Mux&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField</title>
<g id="a_edge15"><a xlink:title="at multi.go:19: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="none" stroke="#8b4513" d="M103.7416,-201.7915C116.658,-205.5006 132.1343,-210.6423 145.3282,-217 179.9748,-233.695 184.0265,-245.7617 217.3282,-265 221.4924,-267.4057 225.8757,-269.8097 230.3013,-272.151"/>
<polygon fill="#8b4513" stroke="#8b4513" points="228.8977,-275.3654 239.3881,-276.8491 232.1126,-269.1473 228.8977,-275.3654"/>
</a>
</g>
</g>
<!-- (github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.RouterInfo).String -->
<g id="node15" class="node">
<title>(github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.RouterInfo).String</title>
<g id="a_node15"><a xlink:title="(github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.RouterInfo).String | defined in router_info.go:157">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M309.4005,-589C309.4005,-589 246.4453,-589 246.4453,-589 240.4453,-589 234.4453,-583 234.4453,-577 234.4453,-577 234.4453,-565 234.4453,-565 234.4453,-559 240.4453,-553 246.4453,-553 246.4453,-553 309.4005,-553 309.4005,-553 315.4005,-553 321.4005,-559 321.4005,-565 321.4005,-565 321.4005,-577 321.4005,-577 321.4005,-583 315.4005,-589 309.4005,-589"/>
<text text-anchor="middle" x="277.9229" y="-575.2" font-family="Verdana" font-size="14.00" fill="#000000">router_info</text>
<text text-anchor="middle" x="277.9229" y="-558.4" font-family="Verdana" font-size="14.00" fill="#000000">String</text>
<!-- (*github.com/sirupsen/logrus.Logger).Debug -->
<g id="node14" class="node">
<title>(*github.com/sirupsen/logrus.Logger).Debug</title>
<g id="a_node14"><a xlink:title="(*github.com/sirupsen/logrus.Logger).Debug | defined in logger.go:221">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M296.7449,-505C296.7449,-505 259.1009,-505 259.1009,-505 253.1009,-505 247.1009,-499 247.1009,-493 247.1009,-493 247.1009,-481 247.1009,-481 247.1009,-475 253.1009,-469 259.1009,-469 259.1009,-469 296.7449,-469 296.7449,-469 302.7449,-469 308.7449,-475 308.7449,-481 308.7449,-481 308.7449,-493 308.7449,-493 308.7449,-499 302.7449,-505 296.7449,-505"/>
<text text-anchor="middle" x="277.9229" y="-491.2" font-family="Verdana" font-size="14.00" fill="#000000">logrus</text>
<text text-anchor="middle" x="277.9229" y="-474.4" font-family="Verdana" font-size="14.00" fill="#000000">Debug</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Compatible&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.RouterInfo).String -->
<g id="edge6" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Compatible&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.RouterInfo).String</title>
<g id="a_edge6"><a xlink:title="at multi.go:101: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.RouterInfo).String]">
<path fill="none" stroke="#8b4513" d="M121.4536,-286.9659C130.2328,-291.3191 138.7467,-296.9033 145.3282,-304 209.0005,-372.6574 169.612,-421.4322 217.3282,-502 226.6798,-517.79 239.8727,-533.3307 251.5618,-545.6539"/>
<polygon fill="#8b4513" stroke="#8b4513" points="249.1153,-548.1585 258.5977,-552.8845 254.1322,-543.2767 249.1153,-548.1585"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Name -->
<g id="node6" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Name</title>
<g id="a_node6"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Name | defined in multi.go:59&#10;at multi.go:67: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:60: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:67: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M93.5921,-230C93.5921,-230 59.7361,-230 59.7361,-230 53.7361,-230 47.7361,-224 47.7361,-218 47.7361,-218 47.7361,-206 47.7361,-206 47.7361,-200 53.7361,-194 59.7361,-194 59.7361,-194 93.5921,-194 93.5921,-194 99.5921,-194 105.5921,-200 105.5921,-206 105.5921,-206 105.5921,-218 105.5921,-218 105.5921,-224 99.5921,-230 93.5921,-230"/>
<text text-anchor="middle" x="76.6641" y="-207.8" font-family="Verdana" font-size="14.00" fill="#000000">Name</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Name&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField -->
<g id="edge8" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Name&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField</title>
<g id="a_edge8"><a xlink:title="at multi.go:67: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="none" stroke="#8b4513" d="M105.4856,-210.2007C126.9914,-209.8021 156.7717,-211.2759 181.3282,-220 207.1781,-229.1836 232.5122,-247.1941 250.7459,-262.2306"/>
<polygon fill="#8b4513" stroke="#8b4513" points="248.7086,-265.0919 258.6002,-268.8876 253.2346,-259.7519 248.7086,-265.0919"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Name&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug -->
<g id="edge20" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Name&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug</title>
<g id="a_edge20"><a xlink:title="at multi.go:60: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:67: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="none" stroke="#8b4513" d="M105.4695,-206.8342C118.4736,-203.5226 133.5283,-198.2456 145.3282,-190 166.0971,-175.487 157.5674,-156.1319 180.3282,-145 197.722,-136.493 199.9645,-159.4318 217.3282,-168 223.6668,-171.1278 230.5659,-174.0513 237.3631,-176.681"/>
<polygon fill="#8b4513" stroke="#8b4513" points="236.5786,-180.1227 247.1717,-180.313 239.0094,-173.5583 236.5786,-180.1227"/>
<!-- github.com/go&#45;i2p/go&#45;i2p/lib/transport.Mux&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug -->
<g id="edge16" class="edge">
<title>github.com/go&#45;i2p/go&#45;i2p/lib/transport.Mux&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug</title>
<g id="a_edge16"><a xlink:title="at multi.go:19: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:22: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="none" stroke="#8b4513" d="M103.8098,-198.2268C117.6755,-201.12 133.9702,-206.6048 145.3282,-217 206.1588,-272.6744 179.697,-314.625 217.3282,-388 230.3269,-413.3454 247.4448,-440.8842 260.1701,-460.4671"/>
<polygon fill="#8b4513" stroke="#8b4513" points="257.2677,-462.4238 265.6771,-468.8683 263.122,-458.5862 257.2677,-462.4238"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).SetIdentity -->
<g id="node7" class="node">
<g id="node5" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).SetIdentity</title>
<g id="a_node7"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).SetIdentity | defined in multi.go:27&#10;at multi.go:28: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:32: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:36: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:32: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at multi.go:28: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:38: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:36: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:32: calling [(*github.com/go&#45;i2p/logger.Logger).Error]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M107.6,-352C107.6,-352 45.7282,-352 45.7282,-352 39.7282,-352 33.7282,-346 33.7282,-340 33.7282,-340 33.7282,-328 33.7282,-328 33.7282,-322 39.7282,-316 45.7282,-316 45.7282,-316 107.6,-316 107.6,-316 113.6,-316 119.6,-322 119.6,-328 119.6,-328 119.6,-340 119.6,-340 119.6,-346 113.6,-352 107.6,-352"/>
<text text-anchor="middle" x="76.6641" y="-329.8" font-family="Verdana" font-size="14.00" fill="#000000">SetIdentity</text>
<g id="a_node5"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).SetIdentity | defined in multi.go:27&#10;at multi.go:28: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:38: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:36: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:32: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at multi.go:28: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:32: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:36: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:32: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M107.6,-291C107.6,-291 45.7282,-291 45.7282,-291 39.7282,-291 33.7282,-285 33.7282,-279 33.7282,-279 33.7282,-267 33.7282,-267 33.7282,-261 39.7282,-255 45.7282,-255 45.7282,-255 107.6,-255 107.6,-255 113.6,-255 119.6,-261 119.6,-267 119.6,-267 119.6,-279 119.6,-279 119.6,-285 113.6,-291 107.6,-291"/>
<text text-anchor="middle" x="76.6641" y="-268.8" font-family="Verdana" font-size="14.00" fill="#000000">SetIdentity</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).SetIdentity&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField -->
<g id="edge9" class="edge">
<g id="edge17" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).SetIdentity&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField</title>
<g id="a_edge9"><a xlink:title="at multi.go:28: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:32: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:36: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="none" stroke="#8b4513" d="M119.8392,-323.9173C151.4503,-316.5352 194.437,-306.4965 227.6051,-298.7507"/>
<polygon fill="#8b4513" stroke="#8b4513" points="228.618,-302.1084 237.56,-296.4259 227.0261,-295.2918 228.618,-302.1084"/>
<g id="a_edge17"><a xlink:title="at multi.go:28: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:32: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:36: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="none" stroke="#8b4513" d="M119.502,-257.1297C138.4737,-252.0814 161.0428,-248.7807 181.3282,-253 191.6062,-255.1378 212.0952,-263.8064 231.5684,-272.7177"/>
<polygon fill="#8b4513" stroke="#8b4513" points="230.1542,-275.9198 240.6994,-276.9449 233.095,-269.5675 230.1542,-275.9198"/>
</a>
</g>
</g>
@@ -235,18 +162,18 @@
<g id="node11" class="node">
<title>(*github.com/go&#45;i2p/logger.Logger).WithError</title>
<g id="a_node11"><a xlink:title="(*github.com/go&#45;i2p/logger.Logger).WithError | defined in log.go:66">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M306.4544,-366C306.4544,-366 249.3914,-366 249.3914,-366 243.3914,-366 237.3914,-360 237.3914,-354 237.3914,-354 237.3914,-342 237.3914,-342 237.3914,-336 243.3914,-330 249.3914,-330 249.3914,-330 306.4544,-330 306.4544,-330 312.4544,-330 318.4544,-336 318.4544,-342 318.4544,-342 318.4544,-354 318.4544,-354 318.4544,-360 312.4544,-366 306.4544,-366"/>
<text text-anchor="middle" x="277.9229" y="-352.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="277.9229" y="-335.4" font-family="Verdana" font-size="14.00" fill="#000000">WithError</text>
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M306.4544,-252C306.4544,-252 249.3914,-252 249.3914,-252 243.3914,-252 237.3914,-246 237.3914,-240 237.3914,-240 237.3914,-228 237.3914,-228 237.3914,-222 243.3914,-216 249.3914,-216 249.3914,-216 306.4544,-216 306.4544,-216 312.4544,-216 318.4544,-222 318.4544,-228 318.4544,-228 318.4544,-240 318.4544,-240 318.4544,-246 312.4544,-252 306.4544,-252"/>
<text text-anchor="middle" x="277.9229" y="-238.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="277.9229" y="-221.4" font-family="Verdana" font-size="14.00" fill="#000000">WithError</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).SetIdentity&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError -->
<g id="edge15" class="edge">
<g id="edge21" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).SetIdentity&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError</title>
<g id="a_edge15"><a xlink:title="at multi.go:32: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<path fill="none" stroke="#8b4513" d="M119.4894,-332.611C138.4588,-332.3537 161.0295,-332.5366 181.3282,-334 196.2964,-335.0791 212.4686,-337.0871 227.2203,-339.2521"/>
<polygon fill="#8b4513" stroke="#8b4513" points="226.7612,-342.7224 237.1739,-340.7666 227.8142,-335.8021 226.7612,-342.7224"/>
<g id="a_edge21"><a xlink:title="at multi.go:32: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<path fill="none" stroke="#8b4513" d="M119.6747,-265.976C129.0771,-262.7216 138.3047,-257.9616 145.3282,-251 180.5647,-216.074 140.1213,-174.0661 180.3282,-145 205.4121,-126.8665 194.4988,-183.0992 217.3282,-204 220.6819,-207.0703 224.4079,-209.8984 228.3168,-212.4871"/>
<polygon fill="#8b4513" stroke="#8b4513" points="226.7209,-215.6117 237.0928,-217.7733 230.3327,-209.6154 226.7209,-215.6117"/>
</a>
</g>
</g>
@@ -254,54 +181,54 @@
<g id="node12" class="node">
<title>(*github.com/go&#45;i2p/logger.Logger).Error</title>
<g id="a_node12"><a xlink:title="(*github.com/go&#45;i2p/logger.Logger).Error | defined in log.go:42">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M295.6892,-427C295.6892,-427 260.1566,-427 260.1566,-427 254.1566,-427 248.1566,-421 248.1566,-415 248.1566,-415 248.1566,-403 248.1566,-403 248.1566,-397 254.1566,-391 260.1566,-391 260.1566,-391 295.6892,-391 295.6892,-391 301.6892,-391 307.6892,-397 307.6892,-403 307.6892,-403 307.6892,-415 307.6892,-415 307.6892,-421 301.6892,-427 295.6892,-427"/>
<text text-anchor="middle" x="277.9229" y="-413.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="277.9229" y="-396.4" font-family="Verdana" font-size="14.00" fill="#000000">Error</text>
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M295.6892,-191C295.6892,-191 260.1566,-191 260.1566,-191 254.1566,-191 248.1566,-185 248.1566,-179 248.1566,-179 248.1566,-167 248.1566,-167 248.1566,-161 254.1566,-155 260.1566,-155 260.1566,-155 295.6892,-155 295.6892,-155 301.6892,-155 307.6892,-161 307.6892,-167 307.6892,-167 307.6892,-179 307.6892,-179 307.6892,-185 301.6892,-191 295.6892,-191"/>
<text text-anchor="middle" x="277.9229" y="-177.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="277.9229" y="-160.4" font-family="Verdana" font-size="14.00" fill="#000000">Error</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).SetIdentity&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Error -->
<g id="edge23" class="edge">
<g id="edge10" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).SetIdentity&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Error</title>
<g id="a_edge23"><a xlink:title="at multi.go:32: calling [(*github.com/go&#45;i2p/logger.Logger).Error]">
<path fill="none" stroke="#8b4513" d="M119.8392,-350.0894C154.9505,-363.1738 204.0961,-381.4881 238.2331,-394.2094"/>
<polygon fill="#8b4513" stroke="#8b4513" points="237.283,-397.5904 247.8757,-397.8028 239.7274,-391.0311 237.283,-397.5904"/>
<g id="a_edge10"><a xlink:title="at multi.go:32: calling [(*github.com/go&#45;i2p/logger.Logger).Error]">
<path fill="none" stroke="#8b4513" d="M119.4917,-266.7293C129.1268,-263.4577 138.506,-258.501 145.3282,-251 194.3061,-197.149 123.6224,-136.6423 180.3282,-91 204.7339,-71.3559 193.152,-131.074 217.3282,-151 223.5222,-156.1051 231.0014,-160.0764 238.5596,-163.1486"/>
<polygon fill="#8b4513" stroke="#8b4513" points="237.4904,-166.4835 248.0848,-166.5768 239.861,-159.8971 237.4904,-166.4835"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).SetIdentity&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug -->
<g id="edge22" class="edge">
<g id="edge9" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).SetIdentity&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug</title>
<g id="a_edge22"><a xlink:title="at multi.go:28: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:38: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:36: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="none" stroke="#8b4513" d="M119.4592,-318.4193C128.3626,-314.3353 137.4315,-309.5058 145.3282,-304 183.2321,-277.5726 181.657,-258.3713 217.3282,-229 223.9227,-223.5701 231.3102,-218.2623 238.5985,-213.3977"/>
<polygon fill="#8b4513" stroke="#8b4513" points="240.572,-216.2894 247.0554,-207.9099 236.7615,-210.4174 240.572,-216.2894"/>
<g id="a_edge9"><a xlink:title="at multi.go:28: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:38: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:36: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="none" stroke="#8b4513" d="M119.5349,-285.2542C129.169,-289.7795 138.5368,-295.8687 145.3282,-304 186.4425,-353.226 138.9911,-394.961 180.3282,-444 194.8243,-461.197 217.5382,-471.7556 237.4069,-478.1037"/>
<polygon fill="#8b4513" stroke="#8b4513" points="236.5994,-481.5143 247.1803,-480.9724 238.5709,-474.7976 236.5994,-481.5143"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Close -->
<g id="node8" class="node">
<g id="node6" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Close</title>
<g id="a_node8"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Close | defined in multi.go:43&#10;at multi.go:44: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:54: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:51: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:49: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at multi.go:49: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:51: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:49: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]">
<g id="a_node6"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Close | defined in multi.go:43&#10;at multi.go:49: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at multi.go:49: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]&#10;at multi.go:44: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:54: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:51: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:49: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:51: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M92.5506,-413C92.5506,-413 60.7776,-413 60.7776,-413 54.7776,-413 48.7776,-407 48.7776,-401 48.7776,-401 48.7776,-389 48.7776,-389 48.7776,-383 54.7776,-377 60.7776,-377 60.7776,-377 92.5506,-377 92.5506,-377 98.5506,-377 104.5506,-383 104.5506,-389 104.5506,-389 104.5506,-401 104.5506,-401 104.5506,-407 98.5506,-413 92.5506,-413"/>
<text text-anchor="middle" x="76.6641" y="-390.8" font-family="Verdana" font-size="14.00" fill="#000000">Close</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Close&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField -->
<g id="edge16" class="edge">
<g id="edge12" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Close&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField</title>
<g id="a_edge16"><a xlink:title="at multi.go:49: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:51: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="none" stroke="#8b4513" d="M104.7499,-395.5567C127.2559,-394.6932 158.7023,-390.4177 181.3282,-375 206.089,-358.1275 195.2052,-338.2076 217.3282,-318 220.8508,-314.7823 224.7696,-311.8085 228.8718,-309.0817"/>
<polygon fill="#8b4513" stroke="#8b4513" points="230.7656,-312.0264 237.4819,-303.8324 227.1216,-306.0496 230.7656,-312.0264"/>
<g id="a_edge12"><a xlink:title="at multi.go:49: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:51: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="none" stroke="#8b4513" d="M104.6106,-387.1896C118.0332,-382.4063 133.6885,-375.2063 145.3282,-365 167.9657,-345.1502 155.0637,-323.376 180.3282,-307 193.9594,-298.1645 210.9411,-294.2395 226.8992,-292.7951"/>
<polygon fill="#8b4513" stroke="#8b4513" points="227.4203,-296.2702 237.1927,-292.1775 227.001,-289.2828 227.4203,-296.2702"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Close&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError -->
<g id="edge4" class="edge">
<g id="edge5" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Close&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError</title>
<g id="a_edge4"><a xlink:title="at multi.go:49: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<path fill="none" stroke="#8b4513" d="M104.7807,-402.0703C126.1863,-406.2205 156.1561,-409.3546 181.3282,-402 199.5529,-396.6752 200.8578,-388.4457 217.3282,-379 222.0691,-376.2811 227.0748,-373.5328 232.0948,-370.8545"/>
<polygon fill="#8b4513" stroke="#8b4513" points="233.8654,-373.878 241.0922,-366.1305 230.6114,-367.6803 233.8654,-373.878"/>
<g id="a_edge5"><a xlink:title="at multi.go:49: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<path fill="none" stroke="#8b4513" d="M104.7992,-387.4002C118.2682,-382.6687 133.9081,-375.4514 145.3282,-365 169.2446,-343.1124 160.714,-326.8136 180.3282,-301 194.2093,-282.7316 198.6853,-278.3739 217.3282,-265 221.2048,-262.219 225.3659,-259.5441 229.6252,-257.0111"/>
<polygon fill="#8b4513" stroke="#8b4513" points="231.4651,-259.9916 238.4465,-252.0222 228.0191,-253.8985 231.4651,-259.9916"/>
</a>
</g>
</g>
@@ -309,90 +236,163 @@
<g id="node13" class="node">
<title>(*github.com/go&#45;i2p/logger.Logger).Warn</title>
<g id="a_node13"><a xlink:title="(*github.com/go&#45;i2p/logger.Logger).Warn | defined in log.go:30">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M295.6892,-488C295.6892,-488 260.1566,-488 260.1566,-488 254.1566,-488 248.1566,-482 248.1566,-476 248.1566,-476 248.1566,-464 248.1566,-464 248.1566,-458 254.1566,-452 260.1566,-452 260.1566,-452 295.6892,-452 295.6892,-452 301.6892,-452 307.6892,-458 307.6892,-464 307.6892,-464 307.6892,-476 307.6892,-476 307.6892,-482 301.6892,-488 295.6892,-488"/>
<text text-anchor="middle" x="277.9229" y="-474.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="277.9229" y="-457.4" font-family="Verdana" font-size="14.00" fill="#000000">Warn</text>
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M295.6892,-374C295.6892,-374 260.1566,-374 260.1566,-374 254.1566,-374 248.1566,-368 248.1566,-362 248.1566,-362 248.1566,-350 248.1566,-350 248.1566,-344 254.1566,-338 260.1566,-338 260.1566,-338 295.6892,-338 295.6892,-338 301.6892,-338 307.6892,-344 307.6892,-350 307.6892,-350 307.6892,-362 307.6892,-362 307.6892,-368 301.6892,-374 295.6892,-374"/>
<text text-anchor="middle" x="277.9229" y="-360.2" font-family="Verdana" font-size="14.00" fill="#000000">logger</text>
<text text-anchor="middle" x="277.9229" y="-343.4" font-family="Verdana" font-size="14.00" fill="#000000">Warn</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Close&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Warn -->
<g id="edge17" class="edge">
<g id="edge6" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Close&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Warn</title>
<g id="a_edge17"><a xlink:title="at multi.go:49: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]">
<path fill="none" stroke="#8b4513" d="M104.6483,-405.4284C139.3984,-418.3782 198.8965,-440.5505 238.3182,-455.2411"/>
<polygon fill="#8b4513" stroke="#8b4513" points="237.2881,-458.5923 247.8808,-458.8047 239.7325,-452.033 237.2881,-458.5923"/>
<g id="a_edge6"><a xlink:title="at multi.go:49: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]">
<path fill="none" stroke="#8b4513" d="M104.6483,-389.5772C139.2511,-382.8719 198.3927,-371.4114 237.816,-363.7719"/>
<polygon fill="#8b4513" stroke="#8b4513" points="238.7293,-367.1601 247.8808,-361.8216 237.3975,-360.288 238.7293,-367.1601"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Close&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug -->
<g id="edge3" class="edge">
<g id="edge11" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Close&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug</title>
<g id="a_edge3"><a xlink:title="at multi.go:44: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:54: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:51: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="none" stroke="#8b4513" d="M104.8602,-387.4664C118.3442,-382.7512 133.9791,-375.5285 145.3282,-365 195.4677,-318.4859 171.0653,-279.3713 217.3282,-229 223.3498,-222.4436 230.7054,-216.5189 238.1882,-211.3813"/>
<polygon fill="#8b4513" stroke="#8b4513" points="240.4544,-214.0844 246.9585,-205.7209 236.6585,-208.2029 240.4544,-214.0844"/>
<g id="a_edge11"><a xlink:title="at multi.go:44: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:54: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:51: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="none" stroke="#8b4513" d="M104.576,-403.2932C117.9901,-408.2906 133.6483,-415.7124 145.3282,-426 167.6367,-445.6491 154.6868,-467.9576 180.3282,-483 197.1574,-492.8728 218.5733,-494.679 237.0535,-493.6753"/>
<polygon fill="#8b4513" stroke="#8b4513" points="237.5762,-497.144 247.2534,-492.8309 236.9987,-490.1679 237.5762,-497.144"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).GetSession -->
<g id="node9" class="node">
<g id="node7" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).GetSession</title>
<g id="a_node9"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).GetSession | defined in multi.go:74&#10;at multi.go:83: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]&#10;at multi.go:75: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.RouterInfo).String]&#10;at multi.go:75: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:79: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:89: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:93: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at multi.go:83: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at multi.go:75: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:79: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:83: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:89: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M108.1529,-474C108.1529,-474 45.1753,-474 45.1753,-474 39.1753,-474 33.1753,-468 33.1753,-462 33.1753,-462 33.1753,-450 33.1753,-450 33.1753,-444 39.1753,-438 45.1753,-438 45.1753,-438 108.1529,-438 108.1529,-438 114.1529,-438 120.1529,-444 120.1529,-450 120.1529,-450 120.1529,-462 120.1529,-462 120.1529,-468 114.1529,-474 108.1529,-474"/>
<text text-anchor="middle" x="76.6641" y="-451.8" font-family="Verdana" font-size="14.00" fill="#000000">GetSession</text>
<g id="a_node7"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).GetSession | defined in multi.go:74&#10;at multi.go:83: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]&#10;at multi.go:75: calling [(github.com/go&#45;i2p/common/router_info.RouterInfo).String]&#10;at multi.go:83: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]&#10;at multi.go:93: calling [(*github.com/go&#45;i2p/logger.Logger).Error]&#10;at multi.go:75: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:79: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:83: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:89: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:75: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:79: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:89: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M108.1529,-352C108.1529,-352 45.1753,-352 45.1753,-352 39.1753,-352 33.1753,-346 33.1753,-340 33.1753,-340 33.1753,-328 33.1753,-328 33.1753,-322 39.1753,-316 45.1753,-316 45.1753,-316 108.1529,-316 108.1529,-316 114.1529,-316 120.1529,-322 120.1529,-328 120.1529,-328 120.1529,-340 120.1529,-340 120.1529,-346 114.1529,-352 108.1529,-352"/>
<text text-anchor="middle" x="76.6641" y="-329.8" font-family="Verdana" font-size="14.00" fill="#000000">GetSession</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).GetSession&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField -->
<g id="edge18" class="edge">
<g id="edge22" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).GetSession&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField</title>
<g id="a_edge18"><a xlink:title="at multi.go:75: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:79: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:83: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:89: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="none" stroke="#8b4513" d="M102.5511,-474.0761C125.5168,-487.6738 158.8205,-501.1264 181.3282,-483 239.7864,-435.9211 171.5244,-377.4625 217.3282,-318 220.536,-313.8357 224.4586,-310.1825 228.7508,-306.9887"/>
<polygon fill="#8b4513" stroke="#8b4513" points="230.8839,-309.7769 237.3696,-301.3992 227.075,-303.9039 230.8839,-309.7769"/>
<g id="a_edge22"><a xlink:title="at multi.go:75: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:79: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:83: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:89: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="none" stroke="#8b4513" d="M120.4877,-316.3339C128.8727,-312.541 137.479,-308.3545 145.3282,-304 161.8216,-294.8501 162.3122,-285.5836 180.3282,-280 195.3719,-275.3376 212.1878,-275.9537 227.5663,-278.6601"/>
<polygon fill="#8b4513" stroke="#8b4513" points="226.929,-282.1024 237.4314,-280.706 228.3505,-275.2482 226.929,-282.1024"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).GetSession&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError -->
<g id="edge13" class="edge">
<g id="edge14" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).GetSession&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithError</title>
<g id="a_edge13"><a xlink:title="at multi.go:83: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<path fill="none" stroke="#8b4513" d="M91.8312,-474.1292C113.089,-497.3382 152.3833,-532.0637 181.3282,-510 229.3486,-473.3958 179.2181,-425.8343 217.3282,-379 220.6005,-374.9786 224.531,-371.425 228.798,-368.2971"/>
<polygon fill="#8b4513" stroke="#8b4513" points="230.8247,-371.1549 237.3338,-362.7954 227.0323,-365.2712 230.8247,-371.1549"/>
<g id="a_edge14"><a xlink:title="at multi.go:83: calling [(*github.com/go&#45;i2p/logger.Logger).WithError]">
<path fill="none" stroke="#8b4513" d="M120.5072,-321.828C129.7663,-317.4949 138.7215,-311.7015 145.3282,-304 184.8461,-257.9339 132.2248,-209.011 180.3282,-172 197.5596,-158.7421 199.3009,-191.8465 217.3282,-204 220.9858,-206.4658 224.8752,-208.8542 228.8496,-211.1346"/>
<polygon fill="#8b4513" stroke="#8b4513" points="227.177,-214.2091 237.6291,-215.9428 230.5395,-208.0695 227.177,-214.2091"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).GetSession&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Error -->
<g id="edge12" class="edge">
<g id="edge20" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).GetSession&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Error</title>
<g id="a_edge12"><a xlink:title="at multi.go:93: calling [(*github.com/go&#45;i2p/logger.Logger).Error]">
<path fill="none" stroke="#8b4513" d="M86.8007,-474.346C105.1949,-505.2348 145.4885,-561.927 181.3282,-537 219.0795,-510.7434 186.7777,-474.3691 217.3282,-440 223.3174,-433.2623 231.1181,-427.7873 239.1189,-423.4208"/>
<polygon fill="#8b4513" stroke="#8b4513" points="240.7391,-426.5242 248.1511,-418.9536 237.6358,-420.2496 240.7391,-426.5242"/>
<g id="a_edge20"><a xlink:title="at multi.go:93: calling [(*github.com/go&#45;i2p/logger.Logger).Error]">
<path fill="none" stroke="#8b4513" d="M120.2114,-322.0456C129.5947,-317.693 138.679,-311.8362 145.3282,-304 186.2668,-255.7529 130.3881,-204.8553 180.3282,-166 196.4261,-153.4752 218.8927,-154.2392 238.2125,-158.5817"/>
<polygon fill="#8b4513" stroke="#8b4513" points="237.4188,-161.9916 247.9783,-161.1273 239.1845,-155.218 237.4188,-161.9916"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).GetSession&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Warn -->
<g id="edge5" class="edge">
<g id="edge1" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).GetSession&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).Warn</title>
<g id="a_edge5"><a xlink:title="at multi.go:83: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]">
<path fill="none" stroke="#8b4513" d="M87.27,-474.0538C103.5263,-499.7146 137.2934,-545.6559 180.3282,-564 206.089,-574.9809 197.5515,-532.8262 217.3282,-513 224.1571,-506.154 232.1823,-499.6304 240.1176,-493.8273"/>
<polygon fill="#8b4513" stroke="#8b4513" points="242.1448,-496.6805 248.3006,-488.0574 238.111,-490.9596 242.1448,-496.6805"/>
<g id="a_edge1"><a xlink:title="at multi.go:83: calling [(*github.com/go&#45;i2p/logger.Logger).Warn]">
<path fill="none" stroke="#8b4513" d="M120.3343,-338.7737C155.3277,-342.5989 204.0233,-347.9219 237.9897,-351.6348"/>
<polygon fill="#8b4513" stroke="#8b4513" points="237.7056,-355.1245 248.0267,-352.732 238.4663,-348.166 237.7056,-355.1245"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).GetSession&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug -->
<g id="edge11" class="edge">
<g id="edge23" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).GetSession&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug</title>
<g id="a_edge11"><a xlink:title="at multi.go:75: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:79: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:89: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="none" stroke="#8b4513" d="M120.3647,-443.2129C129.5203,-438.9192 138.4663,-433.2975 145.3282,-426 209.1865,-358.0876 159.1,-301.7974 217.3282,-229 223.1817,-221.6819 230.7976,-215.3073 238.6434,-209.9507"/>
<polygon fill="#8b4513" stroke="#8b4513" points="240.6035,-212.8522 247.1746,-204.5413 236.855,-206.9404 240.6035,-212.8522"/>
<g id="a_edge23"><a xlink:title="at multi.go:75: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:79: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:89: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="none" stroke="#8b4513" d="M120.2854,-347.5354C129.4447,-351.9573 138.4123,-357.6789 145.3282,-365 175.085,-396.5002 148.7878,-426.2859 180.3282,-456 195.6841,-470.4668 217.7753,-478.1826 237.0575,-482.2977"/>
<polygon fill="#8b4513" stroke="#8b4513" points="236.6525,-485.7827 247.1263,-484.1859 237.9427,-478.9026 236.6525,-485.7827"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).GetSession&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.RouterInfo).String -->
<g id="edge10" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).GetSession&#45;&gt;(github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.RouterInfo).String</title>
<g id="a_edge10"><a xlink:title="at multi.go:75: calling [(github.com/go&#45;i2p/go&#45;i2p/lib/common/router_info.RouterInfo).String]">
<path fill="none" stroke="#8b4513" d="M86.4378,-474.2873C102.0925,-501.3791 135.6311,-551.1147 180.3282,-571 193.7867,-576.9875 209.3595,-578.9084 224.0586,-578.834"/>
<polygon fill="#8b4513" stroke="#8b4513" points="224.1851,-582.3318 234.0585,-578.4893 223.9438,-575.336 224.1851,-582.3318"/>
<!-- (github.com/go&#45;i2p/common/router_info.RouterInfo).String -->
<g id="node15" class="node">
<title>(github.com/go&#45;i2p/common/router_info.RouterInfo).String</title>
<g id="a_node15"><a xlink:title="(github.com/go&#45;i2p/common/router_info.RouterInfo).String | defined in router_info_struct.go:293">
<path fill="#ffe4b5" stroke="#000000" stroke-width="1.5" d="M309.4005,-603C309.4005,-603 246.4453,-603 246.4453,-603 240.4453,-603 234.4453,-597 234.4453,-591 234.4453,-591 234.4453,-579 234.4453,-579 234.4453,-573 240.4453,-567 246.4453,-567 246.4453,-567 309.4005,-567 309.4005,-567 315.4005,-567 321.4005,-573 321.4005,-579 321.4005,-579 321.4005,-591 321.4005,-591 321.4005,-597 315.4005,-603 309.4005,-603"/>
<text text-anchor="middle" x="277.9229" y="-589.2" font-family="Verdana" font-size="14.00" fill="#000000">router_info</text>
<text text-anchor="middle" x="277.9229" y="-572.4" font-family="Verdana" font-size="14.00" fill="#000000">String</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).GetSession&#45;&gt;(github.com/go&#45;i2p/common/router_info.RouterInfo).String -->
<g id="edge13" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).GetSession&#45;&gt;(github.com/go&#45;i2p/common/router_info.RouterInfo).String</title>
<g id="a_edge13"><a xlink:title="at multi.go:75: calling [(github.com/go&#45;i2p/common/router_info.RouterInfo).String]">
<path fill="none" stroke="#8b4513" d="M120.4158,-347.4137C129.569,-351.8413 138.5012,-357.5959 145.3282,-365 176.68,-399.0019 159.6529,-421.6286 180.3282,-463 193.6636,-489.6842 198.9608,-495.4944 217.3282,-519 228.2489,-532.9757 241.4624,-547.5952 252.7598,-559.5123"/>
<polygon fill="#8b4513" stroke="#8b4513" points="250.4158,-562.1248 259.8637,-566.9194 255.4679,-557.2795 250.4158,-562.1248"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Compatible -->
<g id="node8" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Compatible</title>
<g id="a_node8"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Compatible | defined in multi.go:100&#10;at multi.go:101: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:104: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:101: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:109: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:104: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:101: calling [(github.com/go&#45;i2p/common/router_info.RouterInfo).String]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M109.4929,-535C109.4929,-535 43.8353,-535 43.8353,-535 37.8353,-535 31.8353,-529 31.8353,-523 31.8353,-523 31.8353,-511 31.8353,-511 31.8353,-505 37.8353,-499 43.8353,-499 43.8353,-499 109.4929,-499 109.4929,-499 115.4929,-499 121.4929,-505 121.4929,-511 121.4929,-511 121.4929,-523 121.4929,-523 121.4929,-529 115.4929,-535 109.4929,-535"/>
<text text-anchor="middle" x="76.6641" y="-512.8" font-family="Verdana" font-size="14.00" fill="#000000">Compatible</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Compatible&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField -->
<g id="edge2" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Compatible&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField</title>
<g id="a_edge2"><a xlink:title="at multi.go:101: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]&#10;at multi.go:104: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="none" stroke="#8b4513" d="M121.4239,-503.1769C130.1031,-498.9985 138.5843,-493.6861 145.3282,-487 200.9929,-431.8127 163.3714,-382.8583 217.3282,-326 220.7089,-322.4375 224.5891,-319.2146 228.7175,-316.315"/>
<polygon fill="#8b4513" stroke="#8b4513" points="230.8612,-319.1013 237.4595,-310.812 227.132,-313.1773 230.8612,-319.1013"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Compatible&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug -->
<g id="edge3" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Compatible&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug</title>
<g id="a_edge3"><a xlink:title="at multi.go:101: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:109: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:104: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="none" stroke="#8b4513" d="M121.4395,-533.9964C140.0539,-538.879 161.8258,-541.7483 181.3282,-537 202.8893,-531.7505 225.01,-520.7844 242.6332,-510.4562"/>
<polygon fill="#8b4513" stroke="#8b4513" points="244.6665,-513.3169 251.4122,-505.147 241.0441,-507.327 244.6665,-513.3169"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Compatible&#45;&gt;(github.com/go&#45;i2p/common/router_info.RouterInfo).String -->
<g id="edge19" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Compatible&#45;&gt;(github.com/go&#45;i2p/common/router_info.RouterInfo).String</title>
<g id="a_edge19"><a xlink:title="at multi.go:101: calling [(github.com/go&#45;i2p/common/router_info.RouterInfo).String]">
<path fill="none" stroke="#8b4513" d="M94.5314,-535.1848C113.7628,-553.342 146.2136,-580.073 180.3282,-591 194.1177,-595.4168 209.5527,-596.2243 224.0058,-595.3372"/>
<polygon fill="#8b4513" stroke="#8b4513" points="224.6686,-598.7921 234.3189,-594.4192 224.0479,-591.8197 224.6686,-598.7921"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Name -->
<g id="node9" class="node">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Name</title>
<g id="a_node9"><a xlink:title="(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Name | defined in multi.go:59&#10;at multi.go:60: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:67: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:67: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="#add8e6" stroke="#000000" stroke-width="1.5" d="M93.5921,-474C93.5921,-474 59.7361,-474 59.7361,-474 53.7361,-474 47.7361,-468 47.7361,-462 47.7361,-462 47.7361,-450 47.7361,-450 47.7361,-444 53.7361,-438 59.7361,-438 59.7361,-438 93.5921,-438 93.5921,-438 99.5921,-438 105.5921,-444 105.5921,-450 105.5921,-450 105.5921,-462 105.5921,-462 105.5921,-468 99.5921,-474 93.5921,-474"/>
<text text-anchor="middle" x="76.6641" y="-451.8" font-family="Verdana" font-size="14.00" fill="#000000">Name</text>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Name&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField -->
<g id="edge8" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Name&#45;&gt;(*github.com/go&#45;i2p/logger.Logger).WithField</title>
<g id="a_edge8"><a xlink:title="at multi.go:67: calling [(*github.com/go&#45;i2p/logger.Logger).WithField]">
<path fill="none" stroke="#8b4513" d="M105.4364,-449.0503C119.062,-444.4786 134.6497,-437.2081 145.3282,-426 175.5052,-394.3263 149.6523,-365.1908 180.3282,-334 193.1624,-320.9503 210.9236,-312.1394 227.7798,-306.249"/>
<polygon fill="#8b4513" stroke="#8b4513" points="229.1057,-309.4993 237.5559,-303.1084 226.9646,-302.8348 229.1057,-309.4993"/>
</a>
</g>
</g>
<!-- (*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Name&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug -->
<g id="edge4" class="edge">
<title>(*github.com/go&#45;i2p/go&#45;i2p/lib/transport.TransportMuxer).Name&#45;&gt;(*github.com/sirupsen/logrus.Logger).Debug</title>
<g id="a_edge4"><a xlink:title="at multi.go:60: calling [(*github.com/sirupsen/logrus.Logger).Debug]&#10;at multi.go:67: calling [(*github.com/sirupsen/logrus.Logger).Debug]">
<path fill="none" stroke="#8b4513" d="M105.5514,-467.8373C118.0076,-473.2477 132.6063,-480.0049 145.3282,-487 161.6388,-495.9684 162.4954,-504.6651 180.3282,-510 198.9026,-515.5568 219.7874,-511.9252 237.4567,-506.0484"/>
<polygon fill="#8b4513" stroke="#8b4513" points="238.7148,-509.3151 246.907,-502.5966 236.3131,-502.74 238.7148,-509.3151"/>
</a>
</g>
</g>

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 219 KiB

After

Width:  |  Height:  |  Size: 217 KiB

View File

@@ -13,7 +13,7 @@
<a href="index.html">go-i2p/go-i2p</a>
</h2>
<div class="repo-meta">
📝 623 commits
📝 649 commits
• 📜 MIT License
</div>
</div>
@@ -46,12 +46,12 @@
<div class="repo-stats">
<div class="repo-stat">
<span>📝</span> <span>623 commits</span>
<span>📝</span> <span>649 commits</span>
</div>
<div class="repo-stat">
<span>📅</span> <span>Last updated: July 15, 2025</span>
<span>📅</span> <span>Last updated: August 13, 2025</span>
</div>
@@ -89,27 +89,27 @@ please keep up with these changes, as they will not be backward compatible and r
<li>[ ] Message routing</li>
<li>[ ] Streaming</li>
</ul></li>
<li>Cryptographic primitives
<li><a href="https://github.com/go-i2p/crypto" target="_blank">Cryptographic primitives(see also: https://github.com/go-i2p/crypto)</a>
<ul>
<li>Signing
<ul>
<li>[ ] ECDSA_SHA256_P256</li>
<li>[ ] ECDSA_SHA384_P384</li>
<li>[ ] ECDSA_SHA512_P521</li>
<li>[X] ECDSA_SHA256_P256</li>
<li>[X] ECDSA_SHA384_P384</li>
<li>[X] ECDSA_SHA512_P521</li>
<li>[X] Ed25519</li>
</ul></li>
<li>Verifying
<ul>
<li>[X] DSA</li>
<li>[ ] ECDSA_SHA256_P256</li>
<li>[ ] ECDSA_SHA384_P384</li>
<li>[ ] ECDSA_SHA512_P521</li>
<li>[ ] RSA_SHA256_2048</li>
<li>[ ] RSA_SHA384_3072</li>
<li>[ ] RSA_SHA512_4096</li>
<li>[X] ECDSA_SHA256_P256</li>
<li>[X] ECDSA_SHA384_P384</li>
<li>[X] ECDSA_SHA512_P521</li>
<li>[X] RSA_SHA256_2048</li>
<li>[X] RSA_SHA384_3072</li>
<li>[X] RSA_SHA512_4096</li>
<li>[X] Ed25519</li>
<li>[ ] Red25519</li>
</ul></li>
@@ -118,7 +118,7 @@ please keep up with these changes, as they will not be backward compatible and r
<li>[X] X25519</li>
<li>[X] ChaCha20/Poly1305</li>
<li>[ ] Elligator2</li>
<li>[ ] HKDF</li>
<li>[X] HKDF</li>
<li>[X] HMAC</li>
<li>[X] Noise subsystem</li>
</ul></li>
@@ -132,15 +132,22 @@ please keep up with these changes, as they will not be backward compatible and r
<li>I2NP
<ul>
<li>[ ] Message parsing</li>
<li>[ ] Message handling</li>
<li>[X] Message parsing and serialization</li>
<li>[X] Message interfaces and factory patterns</li>
<li>[X] Database Store/Lookup message structures</li>
<li>[X] Tunnel Build message structures</li>
<li>[X] Data, DeliveryStatus, TunnelData messages</li>
<li>[X] Build Request/Response Record parsing</li>
<li>[ ] Message routing and handling</li>
</ul></li>
<li>NetDB
<ul>
<li>[~] Local storage</li>
<li>[X] Local storage interface</li>
<li>[X] Reseed functionality (basic implementation)</li>
<li>[~] Persistence to disk</li>
<li>[X] Reseeding</li>
<li>[ ] RouterInfo management</li>
<li>[ ] LeaseSet management</li>
<li>[ ] Lookups</li>
<li>[ ] Expiry</li>
<li>[ ] Exploration</li>
@@ -148,23 +155,24 @@ please keep up with these changes, as they will not be backward compatible and r
<li>[ ] Floodfill</li>
<li>[ ] LS2 and Encrypted Leasesets</li>
</ul></li>
<li>Transports
<li>Transport Layer
<ul>
<li>[X] Transport manager</li>
<li>[X] Transport manager and interfaces</li>
<li>NTCP2
<ul>
<li>[X] Handshake</li>
<li>[ ] Session tracking</li>
<li>[ ] Automatic session creation</li>
<li>[X] Session handshake using noise protocol</li>
<li>[X] Connection management</li>
<li>[X] I2NP message framing and unframing</li>
<li>[X] Session lifecycle management</li>
<li>[X] Message queuing and worker threads</li>
</ul></li>
<li>SSU2
<ul>
<li>[ ] Handshake</li>
<li>[ ] Session tracking</li>
<li>[ ] Automatic session creation</li>
<li>[ ] Session handshake</li>
<li>[ ] Connection management</li>
<li>[ ] Peer Tests</li>
<li>[ ] Introducers</li>
</ul></li>
@@ -172,14 +180,15 @@ please keep up with these changes, as they will not be backward compatible and r
<li>Tunnels
<ul>
<li>[ ] Building</li>
<li>[ ] Build Message Crypto (ElGamal)</li>
<li>[ ] Build Message Crypto (ECIES)</li>
<li>[ ] Participating</li>
<li>[ ] Tunnel Message Crypto</li>
<li>[ ] Tunnel Message Fragmentation/Reassembly</li>
<li>[X] Message structure parsing (delivery instructions)</li>
<li>[X] Fragment handling and reassembly</li>
<li>[X] Build Request/Response record interfaces</li>
<li>[ ] Tunnel building and management</li>
<li>[ ] Tunnel cryptography (layered encryption)</li>
<li>[ ] Gateway and endpoint implementation</li>
<li>[ ] Participant functionality</li>
</ul></li>
<li>Common Data Structures
<li><a href="https://github.com/go-i2p/common" target="_blank">Common Data Structures(see also: https://github.com/go-i2p/common</a>
<ul>
<li>[X] Keys and Cert</li>
@@ -264,7 +273,7 @@ It is unsafe for production use, and intended only for debugging and testing pur
eyedeekay
</div>
<div class="contributor-commits">
269 commits
295 commits
</div>
</div>
</div>
@@ -336,7 +345,7 @@ It is unsafe for production use, and intended only for debugging and testing pur
</main>
<footer class="page-footer">
<p>Generated on 2025-08-12 23:20:43<a href="https://github.com/go-i2p/go-i2p" target="_blank">View on GitHub</a></p>
<p>Generated on 2025-08-13 11:19:17<a href="https://github.com/go-i2p/go-i2p" target="_blank">View on GitHub</a></p>
</footer>
</div>
</body>