This commit is contained in:
number571 2026-01-20 05:18:36 +07:00
parent 2b80d76bc3
commit 28b362fb84
13 changed files with 165 additions and 189 deletions

View File

@ -48,7 +48,7 @@ test-run:
d=$$(date +%s); \
for i in {1..$(N)}; do \
echo $$i; \
go test -cover -count=1 -shuffle=on `$(_GO_TEST_LIST)`; \
go test -race -cover -count=1 -shuffle=on `$(_GO_TEST_LIST)`; \
$(_CHECK_ERROR); \
done; \
echo "Build took $$(($$(date +%s)-d)) seconds";

View File

@ -225,15 +225,6 @@ func (p *sNode) recvResponse(pCtx context.Context, pActionKey string) ([]byte, e
}
}
func (p *sNode) tryDecryptMessage(pEncMsg []byte) (asymmetric.IPubKey, []byte, error) {
client := p.fQBProcessor.GetClient()
pubKey, decMsg, err := client.DecryptMessage(p.fMapPubKeys, pEncMsg)
if err != nil {
return nil, nil, ErrDecryptMessage
}
return pubKey, decMsg, nil
}
func (p *sNode) consumeMessage(pCtx context.Context, pNetMsg layer1.IMessage) error {
logBuilder := anon_logger.NewLogBuilder(p.fSettings.GetServiceName())
@ -261,7 +252,7 @@ func (p *sNode) consumeMessage(pCtx context.Context, pNetMsg layer1.IMessage) er
}
// try decrypt consumed message
pubKey, decMsg, err := p.tryDecryptMessage(encMsg)
pubKey, decMsg, err := client.DecryptMessage(p.fMapPubKeys, encMsg)
if err != nil {
p.fLogger.PushInfo(logBuilder.WithType(anon_logger.CLogInfoUndecryptable))
return nil

View File

@ -194,7 +194,7 @@ func TestFetchPayload(t *testing.T) {
},
)
largeBodySize := nodes[0].GetQBProcessor().GetClient().GetPayloadSize() - encoding.CSizeUint64 + 1
largeBodySize := nodes[0].GetQBProcessor().GetClient().GetPayloadLimit() - encoding.CSizeUint64 + 1
_, err := nodes[0].FetchPayload(
ctx,
nodes[1].GetQBProcessor().GetClient().GetPrivKey().GetPubKey(),
@ -245,7 +245,7 @@ func TestBroadcastPayload(t *testing.T) {
},
)
largeBodySize := nodes[0].GetQBProcessor().GetClient().GetPayloadSize() - encoding.CSizeUint64 + 1
largeBodySize := nodes[0].GetQBProcessor().GetClient().GetPayloadLimit() - encoding.CSizeUint64 + 1
err := nodes[0].SendPayload(
context.Background(),
nodes[1].GetQBProcessor().GetClient().GetPrivKey().GetPubKey(),

View File

@ -30,5 +30,4 @@ var (
ErrRunning = &SAnonymityError{"node running"}
ErrProcessRun = &SAnonymityError{"process run"}
ErrHashAlreadyExist = &SAnonymityError{"hash already exist"}
ErrDecryptMessage = &SAnonymityError{"decrypt message"}
)

View File

@ -21,9 +21,9 @@ var (
// Basic structure describing the user.
type sClient struct {
fPrivKey asymmetric.IPrivKey
fMessageSize uint64
fPayloadSize uint64
fPrivKey asymmetric.IPrivKey
fMessageSize uint64
fPayloadLimit uint64
}
// Create client by private key as identification.
@ -45,7 +45,7 @@ func NewClient(pPrivKey asymmetric.IPrivKey, pMessageSize uint64) IClient {
panic("the payload size is lower than struct size")
}
client.fPayloadSize = pMessageSize - structSize
client.fPayloadLimit = pMessageSize - structSize
return client
}
@ -60,23 +60,23 @@ func (p *sClient) GetMessageSize() uint64 {
}
// Payload is raw bytes of message without structure.
func (p *sClient) GetPayloadSize() uint64 {
return p.fPayloadSize
func (p *sClient) GetPayloadLimit() uint64 {
return p.fPayloadLimit
}
// Encrypt message with public key of receiver.
// The message can be decrypted only if private key is known.
func (p *sClient) EncryptMessage(pRecv asymmetric.IPubKey, pMsg []byte) ([]byte, error) {
var (
payloadSize = p.fPayloadSize
resultSize = uint64(len(pMsg))
payloadLimit = p.fPayloadLimit
resultSize = uint64(len(pMsg))
)
if resultSize > payloadSize {
if resultSize > payloadLimit {
return nil, ErrLimitMessageSize
}
return p.encryptWithPadding(pRecv, pMsg, payloadSize-resultSize)
return p.encryptWithPadding(pRecv, pMsg, payloadLimit-resultSize)
}
// Decrypt message with private key of receiver.

View File

@ -90,7 +90,7 @@ func TestInvalidClient(t *testing.T) {
_client := client.(*sClient)
msg1 := []byte("hello")
pad1 := client.GetPayloadSize() - uint64(len(msg1)) + 2*encoding.CSizeUint32
pad1 := client.GetPayloadLimit() - uint64(len(msg1)) + 2*encoding.CSizeUint32
enc1, err := _client.encryptWithPadding(pubKey, msg1, pad1)
if err != nil {
@ -104,7 +104,7 @@ func TestInvalidClient(t *testing.T) {
return
}
pad2 := client.GetPayloadSize() - uint64(len(msg1)) + asymmetric.CDSAPubKeySize - 3
pad2 := client.GetPayloadLimit() - uint64(len(msg1)) + asymmetric.CDSAPubKeySize - 3
enc2, err := tcEncryptWithParamsInvalidPKID(_client, pubKey, msg1, pad2)
if err != nil {
t.Error(err)

View File

@ -9,7 +9,7 @@ import (
)
func encrypt(client client.IClient, outFilename, inFilename string) error {
pldLimit := client.GetPayloadSize()
pldLimit := client.GetPayloadLimit()
infile, err := os.Open(inFilename) //nolint:gosec
if err != nil {

View File

@ -11,7 +11,7 @@ type IClient interface {
GetPrivKey() asymmetric.IPrivKey
GetMessageSize() uint64
GetPayloadSize() uint64
GetPayloadLimit() uint64
}
type IDecryptor interface {

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="96" height="20" role="img" aria-label="code lines: 11479"><title>code lines: 11479</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="96" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="57" height="20" fill="#555"/><rect x="57" width="40" height="20" fill="#4682b4"/><rect width="96" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="295" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">code lines</text><text x="295" y="140" transform="scale(.1)" fill="#fff" textLength="510">code lines</text><text aria-hidden="true" x="770" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="320">11479</text><text x="770" y="140" transform="scale(.1)" fill="#fff" textLength="320">11479</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="96" height="20" role="img" aria-label="code lines: 12304"><title>code lines: 12304</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="96" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="57" height="20" fill="#555"/><rect x="57" width="40" height="20" fill="#4682b4"/><rect width="96" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="295" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">code lines</text><text x="295" y="140" transform="scale(.1)" fill="#fff" textLength="510">code lines</text><text aria-hidden="true" x="770" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="320">12304</text><text x="770" y="140" transform="scale(.1)" fill="#fff" textLength="320">12304</text></g></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="96" height="20" role="img" aria-label="coverage: 95%"><title>coverage: 95%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="96" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="35" height="20" fill="#97ca00"/><rect width="96" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="315" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">coverage</text><text x="315" y="140" transform="scale(.1)" fill="#fff" textLength="510">coverage</text><text aria-hidden="true" x="775" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="250">95%</text><text x="775" y="140" transform="scale(.1)" fill="#fff" textLength="250">95%</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="96" height="20" role="img" aria-label="coverage: 97%"><title>coverage: 97%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="96" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="61" height="20" fill="#555"/><rect x="61" width="35" height="20" fill="#97ca00"/><rect width="96" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="315" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="510">coverage</text><text x="315" y="140" transform="scale(.1)" fill="#fff" textLength="510">coverage</text><text aria-hidden="true" x="775" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="250">97%</text><text x="775" y="140" transform="scale(.1)" fill="#fff" textLength="250">97%</text></g></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -7,7 +7,7 @@
>
<g>
<rect x="20.000000" y="20.000000" width="988.000000" height="600.000000" style="fill: rgb(10, 126, 66);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="20.000000" y="20.000000" width="988.000000" height="600.000000" style="fill: rgb(4, 115, 61);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
@ -20,7 +20,7 @@
<g>
<rect x="28.000000" y="41.600000" width="961.175871" height="570.400000" style="fill: rgb(10, 126, 67);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="28.000000" y="41.600000" width="960.863636" height="570.400000" style="fill: rgb(4, 115, 61);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
@ -33,31 +33,31 @@
<g>
<rect x="997.175871" y="41.600000" width="2.824129" height="570.400000" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="996.863636" y="41.600000" width="3.136364" height="570.400000" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
</g>
<g>
<rect x="36.000000" y="63.200000" width="283.521143" height="540.800000" style="fill: rgb(25, 151, 79);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="36.000000" y="63.200000" width="502.552930" height="284.512211" style="fill: rgb(4, 114, 60);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(44.000000,78.800000) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(0, 0, 0); fill-opacity: 1.00; white-space: pre;"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">anonymity/qb</text>
</g>
<g>
<rect x="327.521143" y="343.038559" width="446.478186" height="260.961441" style="fill: rgb(3, 113, 59);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="546.552930" y="63.200000" width="434.310707" height="276.330667" style="fill: rgb(3, 113, 59);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(335.521143,358.638559) scale(1.000000)"
transform="translate(554.552930,78.800000) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">crypto</text>
@ -65,12 +65,12 @@
<g>
<rect x="781.999328" y="507.879842" width="112.852983" height="96.120158" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="777.323733" y="507.086545" width="115.398277" height="96.913455" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(789.999328,523.479842) scale(1.000000)"
transform="translate(785.323733,522.686545) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">encoding</text>
@ -78,12 +78,12 @@
<g>
<rect x="892.682687" y="349.530435" width="88.493184" height="150.349407" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="890.338202" y="347.530667" width="90.525434" height="151.555879" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(900.682687,365.130435) scale(1.000000)"
transform="translate(898.338202,363.130667) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">logger</text>
@ -91,12 +91,12 @@
<g>
<rect x="781.999328" y="63.200000" width="199.176542" height="139.503557" style="fill: rgb(2, 111, 58);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="546.552930" y="347.530667" width="222.770803" height="128.241778" style="fill: rgb(2, 111, 58);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(789.999328,78.800000) scale(1.000000)"
transform="translate(554.552930,363.130667) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">message</text>
@ -104,12 +104,12 @@
<g>
<rect x="327.521143" y="63.200000" width="446.478186" height="271.838559" style="fill: rgb(9, 124, 65);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="36.000000" y="355.712211" width="502.552930" height="248.287789" style="fill: rgb(9, 124, 65);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(335.521143,78.800000) scale(1.000000)"
transform="translate(44.000000,371.312211) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">network</text>
@ -117,12 +117,12 @@
<g>
<rect x="781.999328" y="349.530435" width="102.683358" height="150.349407" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="777.323733" y="347.530667" width="105.014469" height="151.555879" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(789.999328,365.130435) scale(1.000000)"
transform="translate(785.323733,363.130667) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">payload</text>
@ -130,12 +130,12 @@
<g>
<rect x="902.852312" y="507.879842" width="78.323559" height="96.120158" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="900.722010" y="507.086545" width="80.141626" height="96.913455" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(910.852312,523.479842) scale(1.000000)"
transform="translate(908.722010,522.686545) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">state</text>
@ -143,12 +143,12 @@
<g>
<rect x="781.999328" y="210.703557" width="199.176542" height="130.826877" style="fill: rgb(6, 119, 63);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="546.552930" y="483.772444" width="222.770803" height="120.227556" style="fill: rgb(6, 119, 63);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(789.999328,226.303557) scale(1.000000)"
transform="translate(554.552930,499.372444) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">storage</text>
@ -156,26 +156,26 @@
<g>
<rect x="250.238048" y="482.204390" width="61.283094" height="26.798746" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
</g>
<g>
<rect x="288.728656" y="551.801881" width="22.792486" height="31.148589" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="431.623529" y="268.654693" width="53.102515" height="31.528759" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(296.728656,567.401881) scale(0.037240)"
transform="translate(439.623529,284.254693) scale(0.429427)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">adapters/adapter.go</text>
data-math="N">action.go</text>
</g>
<g>
<rect x="44.000000" y="84.800000" width="267.521143" height="261.808989" style="fill: rgb(2, 112, 59);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="492.726044" y="312.575537" width="26.370165" height="27.136675" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
</g>
<g>
<rect x="44.000000" y="84.800000" width="267.602252" height="254.912211" style="fill: rgb(2, 112, 59);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
@ -188,18 +188,18 @@
<g>
<rect x="288.728656" y="590.950470" width="22.792486" height="5.049530" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="527.096208" y="312.575537" width="3.456722" height="27.136675" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
</g>
<g>
<rect x="250.238048" y="551.801881" width="30.490608" height="44.198119" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="492.726044" y="268.654693" width="37.826886" height="35.920843" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(258.238048,567.401881) scale(0.215634)"
transform="translate(500.726044,284.254693) scale(0.324805)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">head.go</text>
@ -207,12 +207,12 @@
<g>
<rect x="250.238048" y="354.608989" width="61.283094" height="119.595401" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="319.602252" y="268.654693" width="104.021277" height="71.057518" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(258.238048,370.208989) scale(0.224619)"
transform="translate(327.602252,284.254693) scale(0.436613)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">logger/log_builder.go</text>
@ -220,31 +220,38 @@
<g>
<rect x="44.000000" y="354.608989" width="198.238048" height="241.391011" style="fill: rgb(134, 203, 102);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="319.602252" y="84.800000" width="210.950678" height="175.854693" style="fill: rgb(8, 123, 65);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(52.000000,370.208989) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(0, 0, 0); fill-opacity: 1.00; white-space: pre;"
transform="translate(327.602252,100.400000) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">queue</text>
</g>
<g>
<rect x="250.238048" y="517.003136" width="61.283094" height="26.798746" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
</g>
<g>
<rect x="335.521143" y="364.638559" width="204.790884" height="231.361441" style="fill: rgb(2, 111, 59);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="431.623529" y="308.183452" width="53.102515" height="31.528759" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(343.521143,380.238559) scale(1.000000)"
transform="translate(439.623529,323.783452) scale(0.351350)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">settings.go</text>
</g>
<g>
<rect x="554.552930" y="84.800000" width="198.886078" height="246.730667" style="fill: rgb(2, 111, 59);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(562.552930,100.400000) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">asymmetric</text>
@ -252,12 +259,12 @@
<g>
<rect x="548.312027" y="511.674873" width="71.408495" height="84.325127" style="fill: rgb(12, 129, 68);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="761.439008" y="241.277410" width="69.204962" height="90.253257" style="fill: rgb(12, 129, 68);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(556.312027,527.274873) scale(0.824531)"
transform="translate(769.439008,256.877410) scale(0.791741)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">hashing</text>
@ -265,12 +272,12 @@
<g>
<rect x="548.312027" y="364.638559" width="120.589276" height="139.036314" style="fill: rgb(3, 113, 60);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="761.439008" y="84.800000" width="117.021009" height="148.477410" style="fill: rgb(3, 113, 60);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(556.312027,380.238559) scale(0.838055)"
transform="translate(769.439008,100.400000) scale(0.809463)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">hybrid/client</text>
@ -278,18 +285,18 @@
<g>
<rect x="702.949622" y="593.138220" width="63.049706" height="2.861780" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="911.785513" y="327.971460" width="61.078124" height="3.559207" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
</g>
<g>
<rect x="676.901303" y="364.638559" width="89.098025" height="139.036314" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="886.460017" y="84.800000" width="86.403619" height="148.477410" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(684.901303,380.238559) scale(0.475899)"
transform="translate(894.460017,100.400000) scale(0.458357)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">puzzle/puzzle.go</text>
@ -297,12 +304,12 @@
<g>
<rect x="702.949622" y="511.674873" width="63.049706" height="73.463348" style="fill: rgb(16, 136, 71);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="911.785513" y="241.277410" width="61.078124" height="78.694050" style="fill: rgb(16, 136, 71);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(710.949622,527.274873) scale(0.306313)"
transform="translate(919.785513,256.877410) scale(0.293477)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">random/random.go</text>
@ -310,12 +317,12 @@
<g>
<rect x="627.720522" y="511.674873" width="67.229101" height="84.325127" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="838.643970" y="241.277410" width="65.141543" height="90.253257" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(635.720522,527.274873) scale(0.242562)"
transform="translate(846.643970,256.877410) scale(0.232678)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">symmetric/symmetric.go</text>
@ -323,12 +330,12 @@
<g>
<rect x="789.999328" y="529.479842" width="36.936993" height="66.520158" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="785.323733" y="528.686545" width="38.027833" height="67.313455" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(797.999328,545.079842) scale(0.272617)"
transform="translate(793.323733,544.286545) scale(0.286821)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">bytes.go</text>
@ -336,18 +343,18 @@
<g>
<rect x="884.866313" y="576.054941" width="1.985998" height="19.945059" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="882.493603" y="575.757455" width="2.228407" height="20.242545" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
</g>
<g>
<rect x="834.936321" y="529.479842" width="21.957995" height="38.575099" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="831.351566" y="528.686545" width="22.685222" height="39.070909" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(842.936321,545.079842) scale(0.103437)"
transform="translate(839.351566,544.286545) scale(0.116063)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">hex.go</text>
@ -355,12 +362,12 @@
<g>
<rect x="864.894316" y="529.479842" width="21.957995" height="38.575099" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="862.036788" y="528.686545" width="22.685222" height="39.070909" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(872.894316,545.079842) scale(0.036507)"
transform="translate(870.036788,544.286545) scale(0.040963)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">serialize_json.go</text>
@ -368,18 +375,18 @@
<g>
<rect x="834.936321" y="576.054941" width="41.929992" height="19.945059" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="831.351566" y="575.757455" width="43.142037" height="20.242545" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
</g>
<g>
<rect x="900.682687" y="371.130435" width="72.493184" height="101.815671" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="898.338202" y="369.130667" width="74.525434" height="102.844720" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(908.682687,386.730435) scale(0.653856)"
transform="translate(906.338202,384.730667) scale(0.677378)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">logger.go</text>
@ -387,18 +394,18 @@
<g>
<rect x="900.682687" y="480.946106" width="72.493184" height="10.933736" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="898.338202" y="479.975387" width="74.525434" height="11.111159" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
</g>
<g>
<rect x="789.999328" y="84.800000" width="129.759567" height="109.903557" style="fill: rgb(3, 113, 60);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="554.552930" y="369.130667" width="146.761314" height="98.641778" style="fill: rgb(3, 113, 60);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(797.999328,100.400000) scale(1.000000)"
transform="translate(562.552930,384.730667) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">layer1</text>
@ -406,12 +413,12 @@
<g>
<rect x="927.758896" y="84.800000" width="45.416975" height="109.903557" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="709.314244" y="369.130667" width="52.009489" height="98.641778" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(935.758896,100.400000) scale(0.510711)"
transform="translate(717.314244,384.730667) scale(0.625165)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">layer2</text>
@ -419,12 +426,12 @@
<g>
<rect x="546.238575" y="84.800000" width="219.760754" height="155.421099" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="281.665012" y="377.312211" width="159.763538" height="218.687789" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(554.238575,100.400000) scale(1.000000)"
transform="translate(289.665012,392.912211) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">conn</text>
@ -432,12 +439,12 @@
<g>
<rect x="546.238575" y="248.221099" width="148.306400" height="78.817459" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="449.428550" y="377.312211" width="81.124380" height="147.570051" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(554.238575,263.821099) scale(1.000000)"
transform="translate(457.428550,392.912211) scale(0.678379)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">connkeeper</text>
@ -445,12 +452,12 @@
<g>
<rect x="335.521143" y="84.800000" width="202.717432" height="242.238559" style="fill: rgb(22, 146, 77);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="44.000000" y="377.312211" width="229.665012" height="218.687789" style="fill: rgb(22, 146, 77);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(343.521143,100.400000) scale(1.000000)"
transform="translate(52.000000,392.912211) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(0, 0, 0); fill-opacity: 1.00; white-space: pre;"
data-math="N">network.go</text>
@ -458,12 +465,12 @@
<g>
<rect x="702.544974" y="248.221099" width="63.454354" height="73.391368" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="449.428550" y="532.882262" width="75.554106" height="63.117738" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(710.544974,263.821099) scale(0.449378)"
transform="translate(457.428550,548.482262) scale(0.563959)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">settings.go</text>
@ -471,12 +478,12 @@
<g>
<rect x="789.999328" y="371.130435" width="86.683358" height="54.724070" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="785.323733" y="369.130667" width="89.014469" height="55.311838" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(797.999328,386.730435) scale(1.000000)"
transform="translate(793.323733,384.730667) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">joiner</text>
@ -484,12 +491,12 @@
<g>
<rect x="789.999328" y="433.854505" width="39.341679" height="58.025337" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="785.323733" y="432.442505" width="40.507234" height="58.644040" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(797.999328,449.454505) scale(0.202619)"
transform="translate(793.323733,448.042505) scale(0.212736)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">payload32.go</text>
@ -497,12 +504,12 @@
<g>
<rect x="837.341008" y="433.854505" width="39.341679" height="58.025337" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="833.830968" y="432.442505" width="40.507234" height="58.644040" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(845.341008,449.454505) scale(0.202619)"
transform="translate(841.830968,448.042505) scale(0.212736)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">payload64.go</text>
@ -510,12 +517,12 @@
<g>
<rect x="910.852312" y="529.479842" width="62.323559" height="62.794150" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="908.722010" y="528.686545" width="64.141626" height="63.547782" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(918.852312,545.079842) scale(0.603171)"
transform="translate(916.722010,544.286545) scale(0.626844)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">state.go</text>
@ -523,12 +530,12 @@
<g>
<rect x="909.484667" y="232.303557" width="63.691203" height="101.226877" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="688.784682" y="505.372444" width="72.539051" height="90.627556" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(917.484667,247.903557) scale(0.413986)"
transform="translate(696.784682,520.972444) scale(0.490790)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">cache/lru.go</text>
@ -536,12 +543,12 @@
<g>
<rect x="789.999328" y="232.303557" width="111.485339" height="101.226877" style="fill: rgb(11, 128, 67);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="554.552930" y="505.372444" width="126.231752" height="90.627556" style="fill: rgb(11, 128, 67);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(797.999328,247.903557) scale(1.000000)"
transform="translate(562.552930,520.972444) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">database</text>
@ -549,25 +556,18 @@
<g>
<rect x="52.000000" y="520.446840" width="113.060576" height="67.553160" style="fill: rgb(165, 0, 38);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="498.080821" y="251.013775" width="24.472108" height="1.640918" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(60.000000,536.046840) scale(0.631905)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">examples/main.go</text>
</g>
<g>
<rect x="52.000000" y="376.208989" width="182.238048" height="136.237851" style="fill: rgb(10, 126, 67);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="327.602252" y="106.400000" width="162.478569" height="146.254693" style="fill: rgb(10, 126, 67);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(60.000000,391.808989) scale(1.000000)"
transform="translate(335.602252,122.000000) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">queue.go</text>
@ -575,12 +575,12 @@
<g>
<rect x="173.060576" y="520.446840" width="61.177472" height="62.831088" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="498.080821" y="106.400000" width="24.472108" height="136.613775" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(181.060576,536.046840) scale(0.427817)"
transform="translate(506.080821,122.000000) scale(0.080228)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">settings.go</text>
@ -588,12 +588,12 @@
<g>
<rect x="466.226047" y="386.238559" width="66.085980" height="127.073655" style="fill: rgb(6, 119, 63);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="681.576014" y="106.400000" width="63.862994" height="136.970505" style="fill: rgb(6, 119, 63);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(474.226047,401.838559) scale(0.869548)"
transform="translate(689.576014,122.000000) scale(0.830955)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">dsa.go</text>
@ -601,12 +601,12 @@
<g>
<rect x="343.521143" y="521.312214" width="121.798243" height="66.687786" style="fill: rgb(6, 119, 63);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="562.552930" y="251.370505" width="117.903583" height="72.160162" style="fill: rgb(6, 119, 63);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(351.521143,536.912214) scale(1.000000)"
transform="translate(570.552930,266.970505) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">kem.go</text>
@ -614,12 +614,12 @@
<g>
<rect x="343.521143" y="386.238559" width="114.704904" height="127.073655" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="562.552930" y="106.400000" width="111.023084" height="136.970505" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(351.521143,401.838559) scale(1.000000)"
transform="translate(570.552930,122.000000) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">key.go</text>
@ -627,12 +627,12 @@
<g>
<rect x="473.319385" y="521.312214" width="58.992641" height="66.687786" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="688.456513" y="251.370505" width="56.982495" height="72.160162" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(481.319385,536.912214) scale(0.319886)"
transform="translate(696.456513,266.970505) scale(0.304929)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">map_pubkeys.go</text>
@ -640,12 +640,12 @@
<g>
<rect x="556.312027" y="533.274873" width="28.710181" height="54.725127" style="fill: rgb(23, 148, 78);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="769.439008" y="262.877410" width="53.204962" height="31.746623" style="fill: rgb(23, 148, 78);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(564.312027,548.874873) scale(0.132398)"
transform="translate(777.439008,278.477410) scale(0.387552)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(0, 0, 0); fill-opacity: 1.00; white-space: pre;"
data-math="N">hashing.go</text>
@ -653,25 +653,18 @@
<g>
<rect x="593.022208" y="533.274873" width="18.698314" height="54.725127" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="769.439008" y="302.624032" width="53.204962" height="20.906635" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(601.022208,548.874873) scale(0.040153)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">hmac.go</text>
</g>
<g>
<rect x="556.312027" y="386.238559" width="104.589276" height="107.039655" style="fill: rgb(3, 114, 60);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="769.439008" y="106.400000" width="101.021009" height="116.288075" style="fill: rgb(3, 114, 60);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(564.312027,401.838559) scale(1.000000)"
transform="translate(777.439008,122.000000) scale(0.984039)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">client.go</text>
@ -679,18 +672,12 @@
<g>
<rect x="892.425115" y="186.675961" width="19.333780" height="0.027596" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
</g>
<g>
<rect x="797.999328" y="106.400000" width="86.425787" height="80.303557" style="fill: rgb(5, 116, 61);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="562.552930" y="390.730667" width="99.610815" height="69.041778" style="fill: rgb(5, 116, 61);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(805.999328,122.000000) scale(0.733602)"
transform="translate(570.552930,406.330667) scale(0.870946)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">message.go</text>
@ -698,12 +685,12 @@
<g>
<rect x="892.425115" y="106.400000" width="19.333780" height="72.275961" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="670.163745" y="390.730667" width="23.150499" height="62.037980" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(900.425115,122.000000) scale(0.031570)"
transform="translate(678.163745,406.330667) scale(0.067713)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">settings.go</text>
@ -711,12 +698,12 @@
<g>
<rect x="935.758896" y="106.400000" width="29.416975" height="75.656002" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="717.314244" y="390.730667" width="36.009489" height="64.986947" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(943.758896,122.000000) scale(0.139760)"
transform="translate(725.314244,406.330667) scale(0.208432)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">message.go</text>
@ -724,12 +711,12 @@
<g>
<rect x="554.238575" y="106.400000" width="157.438089" height="125.821099" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="289.665012" y="398.912211" width="143.763538" height="145.974835" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(562.238575,122.000000) scale(1.000000)"
transform="translate(297.665012,414.512211) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">conn.go</text>
@ -737,12 +724,12 @@
<g>
<rect x="719.676664" y="106.400000" width="38.322665" height="119.448666" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="289.665012" y="552.887046" width="136.536703" height="35.112954" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(727.676664,122.000000) scale(0.211389)"
transform="translate(297.665012,568.487046) scale(1.000000)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">settings.go</text>
@ -750,12 +737,12 @@
<g>
<rect x="554.238575" y="269.821099" width="96.227611" height="49.217459" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="457.428550" y="398.912211" width="65.124380" height="85.577752" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(562.238575,285.421099) scale(0.642849)"
transform="translate(465.428550,414.512211) scale(0.393625)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">connkeeper.go</text>
@ -763,31 +750,30 @@
<g>
<rect x="658.466186" y="269.821099" width="28.078788" height="42.859964" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(666.466186,285.421099) scale(0.114382)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">settings.go</text>
</g>
<g>
<rect x="797.999328" y="392.730435" width="66.542129" height="25.124070" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="522.427999" y="492.489963" width="0.124931" height="24.392299" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
</g>
<g>
<rect x="797.999328" y="253.903557" width="92.898206" height="71.626877" style="fill: rgb(12, 128, 68);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<rect x="457.428550" y="492.489963" width="56.999449" height="24.392299" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
</g>
<g>
<rect x="793.323733" y="390.730667" width="68.750549" height="25.711838" style="fill: rgb(0, 104, 55);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
</g>
<g>
<rect x="562.552930" y="526.972444" width="107.275958" height="61.027556" style="fill: rgb(12, 128, 68);opacity:1;fill-opacity:1.00;stroke:rgb(128,128,128);stroke-width:1px;stroke-opacity:1.00;" />
<text
data-notex="1"
text-anchor="start"
transform="translate(805.999328,269.503557) scale(0.728203)"
transform="translate(570.552930,542.572444) scale(0.864356)"
style="font-family: Open Sans, verdana, arial, sans-serif !important; font-size: 12px; fill: rgb(255, 255, 255); fill-opacity: 1.00; white-space: pre;"
data-math="N">database.go</text>

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 29 KiB