Artifact
03a512ed177aed5713c885af982bd9c84d916bde :
File
classes.fs
— part of check-in
[528007f864]
at
2019-04-30 22:23:38
on branch trunk
— Add dummies for future expansion of pubkey format
(user:
bernd
size: 15143)
0000: 5c 20 6e 65 74 32 6f 20 63 6c 61 73 73 65 73 0a \ net2o classes.
0010: 0a 5c 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 .\ Copyright (C)
0020: 20 32 30 31 35 20 20 20 42 65 72 6e 64 20 50 61 2015 Bernd Pa
0030: 79 73 61 6e 0a 0a 5c 20 54 68 69 73 20 70 72 6f ysan..\ This pro
0040: 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 gram is free sof
0050: 74 77 61 72 65 3a 20 79 6f 75 20 63 61 6e 20 72 tware: you can r
0060: 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 edistribute it a
0070: 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 5c 20 69 nd/or modify.\ i
0080: 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d t under the term
0090: 73 20 6f 66 20 74 68 65 20 47 4e 55 20 41 66 66 s of the GNU Aff
00a0: 65 72 6f 20 47 65 6e 65 72 61 6c 20 50 75 62 6c ero General Publ
00b0: 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 ic License as pu
00c0: 62 6c 69 73 68 65 64 20 62 79 0a 5c 20 74 68 65 blished by.\ the
00d0: 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 Free Software F
00e0: 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 oundation, eithe
00f0: 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 r version 3 of t
0100: 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 5c he License, or.\
0110: 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e (at your option
0120: 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 ) any later vers
0130: 69 6f 6e 2e 0a 0a 5c 20 54 68 69 73 20 70 72 6f ion...\ This pro
0140: 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 gram is distribu
0150: 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 ted in the hope
0160: 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 that it will be
0170: 75 73 65 66 75 6c 2c 0a 5c 20 62 75 74 20 57 49 useful,.\ but WI
0180: 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e THOUT ANY WARRAN
0190: 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e TY; without even
01a0: 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 the implied war
01b0: 72 61 6e 74 79 20 6f 66 0a 5c 20 4d 45 52 43 48 ranty of.\ MERCH
01c0: 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 ANTABILITY or FI
01d0: 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 TNESS FOR A PART
01e0: 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 ICULAR PURPOSE.
01f0: 20 53 65 65 20 74 68 65 0a 5c 20 47 4e 55 20 41 See the.\ GNU A
0200: 66 66 65 72 6f 20 47 65 6e 65 72 61 6c 20 50 75 ffero General Pu
0210: 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 blic License for
0220: 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a more details...
0230: 5c 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 \ You should hav
0240: 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 e received a cop
0250: 79 20 6f 66 20 74 68 65 20 47 4e 55 20 41 66 66 y of the GNU Aff
0260: 65 72 6f 20 47 65 6e 65 72 61 6c 20 50 75 62 6c ero General Publ
0270: 69 63 20 4c 69 63 65 6e 73 65 0a 5c 20 61 6c 6f ic License.\ alo
0280: 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f ng with this pro
0290: 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 gram. If not, s
02a0: 65 65 20 3c 68 74 74 70 3a 2f 2f 77 77 77 2e 67 ee <http://www.g
02b0: 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f nu.org/licenses/
02c0: 3e 2e 0a 0a 5c 20 6a 6f 62 20 63 6f 6e 74 65 78 >...\ job contex
02d0: 74 20 73 74 72 75 63 74 75 72 65 20 61 6e 64 20 t structure and
02e0: 73 75 62 63 6c 61 73 73 65 73 0a 0a 63 75 72 72 subclasses..curr
02f0: 65 6e 74 2d 6f 0a 0a 56 61 72 69 61 62 6c 65 20 ent-o..Variable
0300: 63 6f 6e 74 65 78 74 73 20 5c 47 20 63 6f 6e 74 contexts \G cont
0310: 61 69 6e 73 20 61 6c 6c 20 63 6f 6d 6d 61 6e 64 ains all command
0320: 20 6f 62 6a 65 63 74 73 0a 0a 30 20 56 61 6c 75 objects..0 Valu
0330: 65 20 6d 79 2d 6b 65 79 2d 64 65 66 61 75 6c 74 e my-key-default
0340: 20 5c 47 20 64 65 66 61 75 6c 74 20 6f 77 6e 20 \G default own
0350: 6b 65 79 0a 0a 6f 62 6a 65 63 74 20 63 6c 61 73 key..object clas
0360: 73 0a 20 20 20 20 66 69 65 6c 64 3a 20 74 6f 6b s. field: tok
0370: 65 6e 2d 74 61 62 6c 65 0a 20 20 20 20 76 61 6c en-table. val
0380: 75 65 3a 20 70 61 72 65 6e 74 0a 20 20 20 20 76 ue: parent. v
0390: 61 6c 75 65 3a 20 6d 79 2d 6b 65 79 20 20 20 20 alue: my-key
03a0: 20 20 20 20 5c 20 6b 65 79 20 75 73 65 64 20 66 \ key used f
03b0: 6f 72 20 74 68 69 73 20 63 6f 6e 74 65 78 74 0a or this context.
03c0: 20 20 20 20 66 69 65 6c 64 3a 20 72 65 71 3f 0a field: req?.
03d0: 20 20 20 20 66 69 65 6c 64 3a 20 63 2d 73 74 61 field: c-sta
03e0: 74 65 20 5c 20 73 74 61 74 65 20 66 6f 72 20 63 te \ state for c
03f0: 68 65 63 6b 73 20 77 68 65 74 68 65 72 20 65 76 hecks whether ev
0400: 65 72 79 74 68 69 6e 67 20 69 73 20 74 68 65 72 erything is ther
0410: 65 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 74 61 e. method sta
0420: 72 74 2d 72 65 71 0a 20 20 20 20 6d 65 74 68 6f rt-req. metho
0430: 64 20 6e 65 73 74 2d 73 69 67 20 5c 20 63 68 65 d nest-sig \ che
0440: 63 6b 20 73 69 67 20 66 69 72 73 74 20 61 6e 64 ck sig first and
0450: 20 74 68 65 6e 20 6e 65 73 74 0a 65 6e 64 2d 63 then nest.end-c
0460: 6c 61 73 73 20 63 6d 64 2d 63 6c 61 73 73 20 5c lass cmd-class \
0470: 20 63 6f 6d 6d 61 6e 64 20 69 6e 74 65 72 70 72 command interpr
0480: 65 74 65 72 0a 27 20 6e 6f 6f 70 20 63 6d 64 2d eter.' noop cmd-
0490: 63 6c 61 73 73 20 74 6f 20 73 74 61 72 74 2d 72 class to start-r
04a0: 65 71 0a 3a 6e 6f 6e 61 6d 65 20 28 20 61 64 64 eq.:noname ( add
04b0: 72 20 75 20 2d 2d 20 66 6c 61 67 20 29 20 32 64 r u -- flag ) 2d
04c0: 72 6f 70 20 2d 31 20 3b 20 63 6d 64 2d 63 6c 61 rop -1 ; cmd-cla
04d0: 73 73 20 74 6f 20 6e 65 73 74 2d 73 69 67 0a 0a ss to nest-sig..
04e0: 56 61 72 69 61 62 6c 65 20 63 6d 64 2d 74 61 62 Variable cmd-tab
04f0: 6c 65 0a 56 61 72 69 61 62 6c 65 20 72 65 70 6c le.Variable repl
0500: 79 2d 74 61 62 6c 65 0a 56 61 72 69 61 62 6c 65 y-table.Variable
0510: 20 6c 6f 67 2d 74 61 62 6c 65 0a 56 61 72 69 61 log-table.Varia
0520: 62 6c 65 20 73 65 74 75 70 2d 74 61 62 6c 65 0a ble setup-table.
0530: 56 61 72 69 61 62 6c 65 20 63 6f 6e 6e 65 63 74 Variable connect
0540: 2d 74 61 62 6c 65 0a 56 61 72 69 61 62 6c 65 20 -table.Variable
0550: 61 63 6b 2d 74 61 62 6c 65 0a 56 61 72 69 61 62 ack-table.Variab
0560: 6c 65 20 6d 73 67 69 6e 67 2d 74 61 62 6c 65 0a le msging-table.
0570: 56 61 72 69 61 62 6c 65 20 6d 73 67 2d 74 61 62 Variable msg-tab
0580: 6c 65 0a 56 61 72 69 61 62 6c 65 20 74 65 72 6d le.Variable term
0590: 2d 74 61 62 6c 65 0a 56 61 72 69 61 62 6c 65 20 -table.Variable
05a0: 61 64 64 72 65 73 73 2d 74 61 62 6c 65 0a 56 61 address-table.Va
05b0: 72 69 61 62 6c 65 20 63 6f 6e 74 65 78 74 2d 74 riable context-t
05c0: 61 62 6c 65 0a 56 61 72 69 61 62 6c 65 20 6b 65 able.Variable ke
05d0: 79 2d 65 6e 74 72 79 2d 74 61 62 6c 65 0a 56 61 y-entry-table.Va
05e0: 72 69 61 62 6c 65 20 76 61 75 6c 74 2d 74 61 62 riable vault-tab
05f0: 6c 65 0a 56 61 72 69 61 62 6c 65 20 70 61 79 2d le.Variable pay-
0600: 74 61 62 6c 65 0a 56 61 72 69 61 62 6c 65 20 67 table.Variable g
0610: 72 6f 75 70 2d 74 61 62 6c 65 0a 0a 56 6f 63 61 roup-table..Voca
0620: 62 75 6c 61 72 79 20 6d 61 70 63 0a 0a 61 6c 73 bulary mapc..als
0630: 6f 20 6d 61 70 63 20 64 65 66 69 6e 69 74 69 6f o mapc definitio
0640: 6e 73 0a 0a 63 6d 64 2d 63 6c 61 73 73 20 63 6c ns..cmd-class cl
0650: 61 73 73 0a 20 20 20 20 36 34 76 61 6c 75 65 3a ass. 64value:
0660: 20 64 65 73 74 2d 76 61 64 64 72 0a 20 20 20 20 dest-vaddr.
0670: 76 61 6c 75 65 3a 20 64 65 73 74 2d 73 69 7a 65 value: dest-size
0680: 0a 20 20 20 20 76 61 6c 75 65 3a 20 64 65 73 74 . value: dest
0690: 2d 72 61 64 64 72 0a 20 20 20 20 24 76 61 6c 75 -raddr. $valu
06a0: 65 3a 20 64 65 73 74 2d 69 76 73 24 0a 20 20 20 e: dest-ivs$.
06b0: 20 76 61 6c 75 65 3a 20 64 65 73 74 2d 69 76 73 value: dest-ivs
06c0: 67 65 6e 0a 20 20 20 20 73 63 76 61 6c 75 65 3a gen. scvalue:
06d0: 20 64 65 73 74 2d 69 76 73 6c 61 73 74 67 65 6e dest-ivslastgen
06e0: 0a 20 20 20 20 73 63 76 61 6c 75 65 3a 20 64 65 . scvalue: de
06f0: 73 74 2d 72 65 71 20 20 20 5c 20 2d 2f 2d 20 20 st-req \ -/-
0700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0710: 20 20 74 72 75 65 20 69 66 20 6f 6e 67 6f 69 6e true if ongoin
0720: 67 20 72 65 71 75 65 73 74 0a 20 20 20 20 24 76 g request. $v
0730: 61 6c 75 65 3a 20 64 65 73 74 2d 69 76 73 72 65 alue: dest-ivsre
0740: 73 74 24 0a 20 20 20 20 76 61 6c 75 65 3a 20 64 st$. value: d
0750: 65 73 74 2d 74 69 6d 65 73 74 61 6d 70 73 0a 20 est-timestamps.
0760: 20 20 20 76 61 6c 75 65 3a 20 64 65 73 74 2d 72 value: dest-r
0770: 65 70 6c 69 65 73 0a 20 20 20 20 5c 20 20 20 20 eplies. \
0780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 s
0790: 65 6e 64 65 72 3a 20 20 20 20 20 20 20 20 20 20 ender:
07a0: 20 20 20 20 20 20 72 65 63 65 69 76 65 72 3a 0a receiver:.
07b0: 20 20 20 20 76 61 6c 75 65 3a 20 64 65 73 74 2d value: dest-
07c0: 74 6f 70 20 20 20 5c 20 2d 2f 2d 20 20 20 20 20 top \ -/-
07d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 s
07e0: 65 6e 64 65 72 20 72 65 61 64 20 75 70 20 74 6f ender read up to
07f0: 20 68 65 72 65 0a 20 20 20 20 76 61 6c 75 65 3a here. value:
0800: 20 64 65 73 74 2d 68 65 61 64 20 20 5c 20 72 65 dest-head \ re
0810: 61 64 20 75 70 20 74 6f 20 68 65 72 65 20 20 20 ad up to here
0820: 20 20 20 20 20 72 65 63 65 69 76 65 64 20 73 6f received so
0830: 6d 65 0a 20 20 20 20 76 61 6c 75 65 3a 20 64 65 me. value: de
0840: 73 74 2d 74 61 69 6c 20 20 5c 20 73 65 6e 64 20 st-tail \ send
0850: 66 72 6f 6d 20 68 65 72 65 20 20 20 20 20 20 20 from here
0860: 20 20 72 65 63 65 69 76 65 64 20 61 6c 6c 0a 20 received all.
0870: 20 20 20 76 61 6c 75 65 3a 20 64 65 73 74 2d 62 value: dest-b
0880: 61 63 6b 20 20 5c 20 66 6c 75 73 68 65 64 20 6f ack \ flushed o
0890: 6e 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 66 6c n destination fl
08a0: 75 73 68 65 64 0a 20 20 20 20 66 69 65 6c 64 3a ushed. field:
08b0: 20 64 65 73 74 2d 65 6e 64 20 20 20 5c 20 2d 2f dest-end \ -/
08c0: 2d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -
08d0: 20 20 20 20 20 74 72 75 65 20 69 66 20 6c 61 73 true if las
08e0: 74 20 63 68 75 6e 6b 0a 20 20 20 20 66 69 65 6c t chunk. fiel
08f0: 64 3a 20 64 6f 2d 73 6c 75 72 70 0a 20 20 20 20 d: do-slurp.
0900: 6d 65 74 68 6f 64 20 66 72 65 65 2d 64 61 74 61 method free-data
0910: 0a 20 20 20 20 6d 65 74 68 6f 64 20 72 65 67 65 . method rege
0920: 6e 2d 69 76 73 0a 20 20 20 20 6d 65 74 68 6f 64 n-ivs. method
0930: 20 68 61 6e 64 6c 65 0a 20 20 20 20 6d 65 74 68 handle. meth
0940: 6f 64 20 72 65 77 69 6e 64 2d 74 69 6d 65 73 74 od rewind-timest
0950: 61 6d 70 73 0a 20 20 20 20 6d 65 74 68 6f 64 20 amps. method
0960: 72 65 77 69 6e 64 2d 70 61 72 74 69 61 6c 0a 65 rewind-partial.e
0970: 6e 64 2d 63 6c 61 73 73 20 63 6f 64 65 2d 63 6c nd-class code-cl
0980: 61 73 73 0a 27 20 64 72 6f 70 20 20 63 6f 64 65 ass.' drop code
0990: 2d 63 6c 61 73 73 20 74 6f 20 72 65 67 65 6e 2d -class to regen-
09a0: 69 76 73 0a 27 20 6e 6f 6f 70 20 20 63 6f 64 65 ivs.' noop code
09b0: 2d 63 6c 61 73 73 20 74 6f 20 72 65 77 69 6e 64 -class to rewind
09c0: 2d 74 69 6d 65 73 74 61 6d 70 73 0a 27 20 32 64 -timestamps.' 2d
09d0: 72 6f 70 20 63 6f 64 65 2d 63 6c 61 73 73 20 74 rop code-class t
09e0: 6f 20 72 65 77 69 6e 64 2d 70 61 72 74 69 61 6c o rewind-partial
09f0: 0a 0a 63 6f 64 65 2d 63 6c 61 73 73 20 63 6c 61 ..code-class cla
0a00: 73 73 0a 20 20 20 20 66 69 65 6c 64 3a 20 64 61 ss. field: da
0a10: 74 61 2d 72 65 73 65 6e 64 23 20 5c 20 72 65 73 ta-resend# \ res
0a20: 65 6e 64 20 74 6f 6b 65 6e 73 3b 20 6f 6e 6c 79 end tokens; only
0a30: 20 66 6f 72 20 64 61 74 61 0a 20 20 20 20 76 61 for data. va
0a40: 6c 75 65 3a 20 73 65 6e 64 2d 61 63 6b 23 0a 65 lue: send-ack#.e
0a50: 6e 64 2d 63 6c 61 73 73 20 64 61 74 61 2d 63 6c nd-class data-cl
0a60: 61 73 73 0a 0a 63 6f 64 65 2d 63 6c 61 73 73 20 ass..code-class
0a70: 63 6c 61 73 73 0a 20 20 20 20 66 69 65 6c 64 3a class. field:
0a80: 20 64 61 74 61 2d 61 63 6b 62 69 74 73 0a 20 20 data-ackbits.
0a90: 20 20 66 69 65 6c 64 3a 20 64 61 74 61 2d 61 63 field: data-ac
0aa0: 6b 62 69 74 73 2d 62 75 66 0a 20 20 20 20 66 69 kbits-buf. fi
0ab0: 65 6c 64 3a 20 64 61 74 61 2d 61 63 6b 23 20 20 eld: data-ack#
0ac0: 20 20 20 5c 20 66 75 6c 6c 79 20 61 63 6b 65 64 \ fully acked
0ad0: 20 62 75 72 73 74 73 0a 20 20 20 20 66 69 65 6c bursts. fiel
0ae0: 64 3a 20 61 63 6b 2d 62 69 74 23 20 20 20 20 20 d: ack-bit#
0af0: 20 5c 20 61 63 74 75 61 6c 20 61 63 6b 20 62 69 \ actual ack bi
0b00: 74 0a 20 20 20 20 66 69 65 6c 64 3a 20 64 61 74 t. field: dat
0b10: 61 2d 72 65 73 65 6e 64 23 2d 62 75 66 0a 20 20 a-resend#-buf.
0b20: 20 20 73 63 76 61 6c 75 65 3a 20 61 63 6b 2d 61 scvalue: ack-a
0b30: 64 76 61 6e 63 65 3f 20 20 5c 20 61 63 6b 20 69 dvance? \ ack i
0b40: 73 20 61 64 76 61 6e 63 69 6e 67 20 73 74 61 74 s advancing stat
0b50: 65 0a 65 6e 64 2d 63 6c 61 73 73 20 72 63 6f 64 e.end-class rcod
0b60: 65 2d 63 6c 61 73 73 0a 0a 72 63 6f 64 65 2d 63 e-class..rcode-c
0b70: 6c 61 73 73 20 63 6c 61 73 73 0a 20 20 20 20 76 lass class. v
0b80: 61 6c 75 65 3a 20 72 65 63 2d 61 63 6b 23 0a 65 alue: rec-ack#.e
0b90: 6e 64 2d 63 6c 61 73 73 20 72 64 61 74 61 2d 63 nd-class rdata-c
0ba0: 6c 61 73 73 0a 0a 70 72 65 76 69 6f 75 73 20 64 lass..previous d
0bb0: 65 66 69 6e 69 74 69 6f 6e 73 0a 0a 63 6d 64 2d efinitions..cmd-
0bc0: 63 6c 61 73 73 20 63 6c 61 73 73 0a 20 20 20 20 class class.
0bd0: 66 69 65 6c 64 3a 20 74 69 6d 69 6e 67 2d 73 74 field: timing-st
0be0: 61 74 0a 20 20 20 20 66 69 65 6c 64 3a 20 74 72 at. field: tr
0bf0: 61 63 6b 2d 74 69 6d 69 6e 67 0a 20 20 20 20 66 ack-timing. f
0c00: 69 65 6c 64 3a 20 66 6c 79 62 75 72 73 74 0a 20 ield: flyburst.
0c10: 20 20 20 66 69 65 6c 64 3a 20 66 6c 79 62 75 72 field: flybur
0c20: 73 74 73 0a 20 20 20 20 66 69 65 6c 64 3a 20 74 sts. field: t
0c30: 69 6d 65 6f 75 74 73 0a 20 20 20 20 66 69 65 6c imeouts. fiel
0c40: 64 3a 20 77 69 6e 64 6f 77 2d 73 69 7a 65 20 5c d: window-size \
0c50: 20 70 61 63 6b 65 74 73 20 69 6e 20 66 6c 69 67 packets in flig
0c60: 68 74 0a 20 20 20 20 36 34 66 69 65 6c 64 3a 20 ht. 64field:
0c70: 72 74 64 65 6c 61 79 20 5c 20 6e 73 0a 20 20 20 rtdelay \ ns.
0c80: 20 36 34 66 69 65 6c 64 3a 20 6c 61 73 74 2d 74 64field: last-t
0c90: 69 6d 65 0a 20 20 20 20 36 34 66 69 65 6c 64 3a ime. 64field:
0ca0: 20 6c 61 73 74 61 63 6b 20 5c 20 6e 73 0a 20 20 lastack \ ns.
0cb0: 20 20 36 34 66 69 65 6c 64 3a 20 72 65 63 76 2d 64field: recv-
0cc0: 74 69 63 6b 0a 20 20 20 20 36 34 66 69 65 6c 64 tick. 64field
0cd0: 3a 20 6e 73 2f 62 75 72 73 74 0a 20 20 20 20 36 : ns/burst. 6
0ce0: 34 66 69 65 6c 64 3a 20 6c 61 73 74 2d 6e 73 2f 4field: last-ns/
0cf0: 62 75 72 73 74 0a 20 20 20 20 36 34 66 69 65 6c burst. 64fiel
0d00: 64 3a 20 62 61 6e 64 77 69 64 74 68 2d 74 69 63 d: bandwidth-tic
0d10: 6b 20 5c 20 6e 73 0a 20 20 20 20 36 34 66 69 65 k \ ns. 64fie
0d20: 6c 64 3a 20 6e 65 78 74 2d 74 69 63 6b 20 5c 20 ld: next-tick \
0d30: 6e 73 0a 20 20 20 20 36 34 66 69 65 6c 64 3a 20 ns. 64field:
0d40: 65 78 74 72 61 2d 6e 73 0a 20 20 20 20 36 34 66 extra-ns. 64f
0d50: 69 65 6c 64 3a 20 73 6c 61 63 6b 67 72 6f 77 0a ield: slackgrow.
0d60: 20 20 20 20 36 34 66 69 65 6c 64 3a 20 73 6c 61 64field: sla
0d70: 63 6b 67 72 6f 77 27 0a 20 20 20 20 36 34 66 69 ckgrow'. 64fi
0d80: 65 6c 64 3a 20 6c 61 73 74 73 6c 61 63 6b 0a 20 eld: lastslack.
0d90: 20 20 20 36 34 66 69 65 6c 64 3a 20 6d 69 6e 2d 64field: min-
0da0: 73 6c 61 63 6b 0a 20 20 20 20 36 34 66 69 65 6c slack. 64fiel
0db0: 64 3a 20 6d 61 78 2d 73 6c 61 63 6b 0a 20 20 20 d: max-slack.
0dc0: 20 36 34 66 69 65 6c 64 3a 20 74 69 6d 65 2d 6f 64field: time-o
0dd0: 66 66 73 65 74 20 20 5c 20 6d 61 6b 65 20 74 69 ffset \ make ti
0de0: 6d 65 73 74 61 6d 70 73 20 73 6d 61 6c 6c 65 72 mestamps smaller
0df0: 0a 20 20 20 20 36 34 66 69 65 6c 64 3a 20 6c 61 . 64field: la
0e00: 73 74 64 65 6c 74 61 74 0a 65 6e 64 2d 63 6c 61 stdeltat.end-cla
0e10: 73 73 20 61 63 6b 2d 63 6c 61 73 73 0a 0a 63 6d ss ack-class..cm
0e20: 64 2d 63 6c 61 73 73 20 63 6c 61 73 73 0a 20 20 d-class class.
0e30: 20 20 66 69 65 6c 64 3a 20 70 65 65 72 73 5b 5d field: peers[]
0e40: 0a 20 20 20 20 66 69 65 6c 64 3a 20 73 69 6c 65 . field: sile
0e50: 6e 74 2d 6c 61 73 74 23 0a 65 6e 64 2d 63 6c 61 nt-last#.end-cla
0e60: 73 73 20 6d 73 67 69 6e 67 2d 63 6c 61 73 73 0a ss msging-class.
0e70: 0a 63 6d 64 2d 63 6c 61 73 73 20 63 6c 61 73 73 .cmd-class class
0e80: 7b 20 6d 73 67 0a 20 20 20 20 24 76 61 6c 75 65 { msg. $value
0e90: 3a 20 69 64 24 0a 20 20 20 20 6d 65 74 68 6f 64 : id$. method
0ea0: 20 73 74 61 72 74 0a 20 20 20 20 6d 65 74 68 6f start. metho
0eb0: 64 20 74 61 67 0a 20 20 20 20 6d 65 74 68 6f 64 d tag. method
0ec0: 20 63 68 61 69 6e 0a 20 20 20 20 6d 65 74 68 6f chain. metho
0ed0: 64 20 73 69 67 6e 61 6c 0a 20 20 20 20 6d 65 74 d signal. met
0ee0: 68 6f 64 20 72 65 0a 20 20 20 20 6d 65 74 68 6f hod re. metho
0ef0: 64 20 74 65 78 74 0a 20 20 20 20 6d 65 74 68 6f d text. metho
0f00: 64 20 6f 62 6a 65 63 74 0a 20 20 20 20 6d 65 74 d object. met
0f10: 68 6f 64 20 69 64 0a 20 20 20 20 6d 65 74 68 6f hod id. metho
0f20: 64 20 61 63 74 69 6f 6e 0a 20 20 20 20 6d 65 74 d action. met
0f30: 68 6f 64 20 63 6f 6f 72 64 0a 20 20 20 20 6d 65 hod coord. me
0f40: 74 68 6f 64 20 6f 74 72 69 66 79 0a 20 20 20 20 thod otrify.
0f50: 6d 65 74 68 6f 64 20 70 61 79 6d 65 6e 74 0a 20 method payment.
0f60: 20 20 20 6d 65 74 68 6f 64 20 75 72 6c 0a 20 20 method url.
0f70: 20 20 6d 65 74 68 6f 64 20 6c 69 6b 65 0a 20 20 method like.
0f80: 20 20 6d 65 74 68 6f 64 20 61 77 61 79 0a 20 20 method away.
0f90: 20 20 6d 65 74 68 6f 64 20 65 6e 64 0a 20 20 20 method end.
0fa0: 20 6d 65 74 68 6f 64 20 64 69 73 70 6c 61 79 20 method display
0fb0: 20 20 5c 20 64 69 73 70 6c 61 79 20 6f 6e 65 20 \ display one
0fc0: 6d 65 73 73 61 67 65 0a 20 20 20 20 6d 65 74 68 message. meth
0fd0: 6f 64 20 72 65 64 69 73 70 6c 61 79 20 5c 20 64 od redisplay \ d
0fe0: 69 73 70 6c 61 79 20 66 75 6c 6c 20 73 65 74 0a isplay full set.
0ff0: 7d 63 6c 61 73 73 0a 0a 63 6d 64 2d 63 6c 61 73 }class..cmd-clas
1000: 73 20 63 6c 61 73 73 7b 20 70 61 79 0a 20 20 20 s class{ pay.
1010: 20 66 69 65 6c 64 3a 20 73 6f 75 72 63 65 73 5b field: sources[
1020: 5d 20 20 20 20 5c 20 61 6c 6c 20 74 68 65 20 73 ] \ all the s
1030: 6f 75 72 63 65 73 20 73 74 6f 72 65 64 20 68 65 ources stored he
1040: 72 65 2c 20 61 6e 20 61 72 72 61 79 0a 20 20 20 re, an array.
1050: 20 66 69 65 6c 64 3a 20 73 69 6e 6b 73 5b 5d 20 field: sinks[]
1060: 20 20 20 20 20 5c 20 61 6c 6c 20 74 68 65 20 73 \ all the s
1070: 69 67 6e 61 74 75 72 65 73 20 73 74 6f 72 65 64 ignatures stored
1080: 20 68 65 72 65 2c 20 61 6e 20 61 72 72 61 79 0a here, an array.
1090: 20 20 20 20 66 69 65 6c 64 3a 20 61 73 73 65 74 field: asset
10a0: 73 5b 5d 20 20 20 20 20 5c 20 61 6c 6c 20 73 65 s[] \ all se
10b0: 6c 65 63 74 65 64 20 61 73 73 65 74 73 20 28 61 lected assets (a
10c0: 72 72 61 79 20 5b 61 73 73 65 74 2c 61 6d 6f 75 rray [asset,amou
10d0: 6e 74 5d 2a 29 0a 20 20 20 20 66 69 65 6c 64 3a nt]*). field:
10e0: 20 62 61 6c 61 6e 63 65 73 5b 5d 20 20 20 5c 20 balances[] \
10f0: 61 6c 6c 20 62 61 6c 61 6e 63 65 73 20 28 61 6d all balances (am
1100: 6f 75 6e 74 5b 61 73 73 65 74 5d 29 0a 20 20 20 ount[asset]).
1110: 20 76 61 6c 75 65 3a 20 63 75 72 72 65 6e 74 2d value: current-
1120: 70 6b 0a 20 20 20 20 76 61 6c 75 65 3a 20 63 75 pk. value: cu
1130: 72 72 65 6e 74 2d 61 73 73 65 74 0a 20 20 20 20 rrent-asset.
1140: 6d 65 74 68 6f 64 20 6c 61 73 74 2d 63 6f 6e 74 method last-cont
1150: 72 61 63 74 0a 20 20 20 20 6d 65 74 68 6f 64 20 ract. method
1160: 73 6f 75 72 63 65 0a 20 20 20 20 6d 65 74 68 6f source. metho
1170: 64 20 73 69 6e 6b 0a 20 20 20 20 6d 65 74 68 6f d sink. metho
1180: 64 20 61 73 73 65 74 0a 20 20 20 20 6d 65 74 68 d asset. meth
1190: 6f 64 20 6f 62 6c 69 67 61 74 69 6f 6e 0a 20 20 od obligation.
11a0: 20 20 6d 65 74 68 6f 64 20 61 6d 6f 75 6e 74 0a method amount.
11b0: 20 20 20 20 6d 65 74 68 6f 64 20 63 6f 6d 6d 65 method comme
11c0: 6e 74 0a 20 20 20 20 6d 65 74 68 6f 64 20 23 73 nt. method #s
11d0: 6f 75 72 63 65 0a 20 20 20 20 6d 65 74 68 6f 64 ource. method
11e0: 20 62 61 6c 61 6e 63 65 0a 20 20 20 20 6d 65 74 balance. met
11f0: 68 6f 64 20 66 69 6e 61 6c 69 7a 65 0a 7d 63 6c hod finalize.}cl
1200: 61 73 73 0a 0a 62 65 67 69 6e 2d 73 74 72 75 63 ass..begin-struc
1210: 74 75 72 65 20 77 61 6c 6c 65 74 0a 20 20 20 20 ture wallet.
1220: 66 69 65 6c 64 3a 20 63 6f 6e 74 72 61 63 74 23 field: contract#
1230: 0a 20 20 20 20 66 69 65 6c 64 3a 20 61 73 73 65 . field: asse
1240: 74 73 5b 5d 0a 20 20 20 20 66 69 65 6c 64 3a 20 ts[]. field:
1250: 61 6d 6f 75 6e 74 73 5b 5d 0a 20 20 20 20 66 69 amounts[]. fi
1260: 65 6c 64 3a 20 24 63 6f 6d 6d 65 6e 74 73 5b 5d eld: $comments[]
1270: 0a 20 20 20 20 66 69 65 6c 64 3a 20 24 73 69 67 . field: $sig
1280: 0a 65 6e 64 2d 73 74 72 75 63 74 75 72 65 0a 0a .end-structure..
1290: 5c 20 6f 62 6a 65 63 74 2f 72 65 66 65 72 65 6e \ object/referen
12a0: 63 65 20 74 79 70 65 73 0a 0a 73 63 6f 70 65 7b ce types..scope{
12b0: 20 6d 73 67 0a 30 0a 65 6e 75 6d 20 69 6d 61 67 msg.0.enum imag
12c0: 65 23 0a 65 6e 75 6d 20 74 68 75 6d 62 6e 61 69 e#.enum thumbnai
12d0: 6c 23 0a 65 6e 75 6d 20 70 61 74 63 68 23 0a 65 l#.enum patch#.e
12e0: 6e 75 6d 20 73 6e 61 70 73 68 6f 74 23 0a 65 6e num snapshot#.en
12f0: 75 6d 20 6d 65 73 73 61 67 65 23 0a 65 6e 75 6d um message#.enum
1300: 20 70 6f 73 74 69 6e 67 23 20 20 20 5c 20 64 76 posting# \ dv
1310: 63 73 20 70 72 6f 6a 65 63 74 2c 20 70 6f 73 74 cs project, post
1320: 69 6e 67 0a 65 6e 75 6d 20 66 69 6c 65 73 23 20 ing.enum files#
1330: 20 20 20 20 5c 20 64 76 63 73 20 70 72 6f 6a 65 \ dvcs proje
1340: 63 74 2c 20 66 69 6c 65 73 0a 65 6e 75 6d 20 63 ct, files.enum c
1350: 68 61 74 6c 6f 67 23 20 20 20 5c 20 63 68 61 74 hatlog# \ chat
1360: 6c 6f 67 20 6f 66 20 69 6e 73 74 61 6e 74 20 6d log of instant m
1370: 65 73 73 61 67 65 73 0a 65 6e 75 6d 20 74 69 6d essages.enum tim
1380: 65 6c 69 6e 65 23 20 20 5c 20 63 68 61 74 6c 6f eline# \ chatlo
1390: 67 20 6f 66 20 70 6f 73 74 69 6e 67 73 0a 65 6e g of postings.en
13a0: 75 6d 20 6c 6f 67 67 72 6f 75 70 73 23 20 5c 20 um loggroups# \
13b0: 6c 6f 67 73 20 6f 66 20 6c 6f 67 73 0a 64 72 6f logs of logs.dro
13c0: 70 0a 7d 73 63 6f 70 65 0a 0a 73 63 6f 70 65 3a p.}scope..scope:
13d0: 20 69 6e 76 69 74 0a 30 0a 65 6e 75 6d 20 6e 6f invit.0.enum no
13e0: 6e 65 23 0a 65 6e 75 6d 20 70 65 6e 64 23 0a 65 ne#.enum pend#.e
13f0: 6e 75 6d 20 71 72 23 0a 64 72 6f 70 0a 7d 73 63 num qr#.drop.}sc
1400: 6f 70 65 0a 0a 63 6d 64 2d 63 6c 61 73 73 20 63 ope..cmd-class c
1410: 6c 61 73 73 0a 20 20 20 20 5c 20 63 61 6c 6c 62 lass. \ callb
1420: 61 63 6b 73 0a 20 20 20 20 64 65 66 65 72 3a 20 acks. defer:
1430: 74 69 6d 65 6f 75 74 2d 78 74 20 20 20 20 5c 20 timeout-xt \
1440: 63 61 6c 6c 62 61 63 6b 20 66 6f 72 20 74 69 6d callback for tim
1450: 65 6f 75 74 0a 20 20 20 20 64 65 66 65 72 3a 20 eout. defer:
1460: 73 65 74 69 70 2d 78 74 20 20 20 20 20 20 5c 20 setip-xt \
1470: 63 61 6c 6c 62 61 63 6b 20 66 6f 72 20 73 65 74 callback for set
1480: 2d 69 70 0a 20 20 20 20 64 65 66 65 72 3a 20 61 -ip. defer: a
1490: 63 6b 2d 78 74 20 20 20 20 20 20 20 20 5c 20 63 ck-xt \ c
14a0: 61 6c 6c 62 61 63 6b 20 66 6f 72 20 61 63 6b 6e allback for ackn
14b0: 6f 77 6c 65 64 67 65 0a 20 20 20 20 64 65 66 65 owledge. defe
14c0: 72 3a 20 70 75 6e 63 68 2d 64 6f 6e 65 2d 78 74 r: punch-done-xt
14d0: 20 5c 20 63 61 6c 6c 62 61 63 6b 20 66 6f 72 20 \ callback for
14e0: 4e 41 54 20 74 72 61 76 65 72 73 61 6c 20 6f 6b NAT traversal ok
14f0: 0a 20 20 20 20 64 65 66 65 72 3a 20 73 79 6e 63 . defer: sync
1500: 2d 64 6f 6e 65 2d 78 74 20 20 5c 20 63 61 6c 6c -done-xt \ call
1510: 62 61 63 6b 20 66 6f 72 20 73 79 6e 63 20 64 6f back for sync do
1520: 6e 65 0a 20 20 20 20 64 65 66 65 72 3a 20 73 79 ne. defer: sy
1530: 6e 63 2d 6e 6f 6e 65 2d 78 74 20 20 5c 20 63 61 nc-none-xt \ ca
1540: 6c 6c 62 61 63 6b 20 66 6f 72 20 73 79 6e 63 20 llback for sync
1550: 6e 6f 74 20 6e 65 65 64 65 64 0a 20 20 20 20 5c not needed. \
1560: 20 6d 61 70 73 20 66 6f 72 20 64 61 74 61 20 61 maps for data a
1570: 6e 64 20 63 6f 64 65 20 74 72 61 6e 73 66 65 72 nd code transfer
1580: 0a 20 20 20 20 30 20 2b 66 69 65 6c 64 20 73 74 . 0 +field st
1590: 61 72 74 2d 6d 61 70 73 0a 20 20 20 20 76 61 6c art-maps. val
15a0: 75 65 3a 20 63 6f 64 65 2d 6d 61 70 0a 20 20 20 ue: code-map.
15b0: 20 76 61 6c 75 65 3a 20 63 6f 64 65 2d 72 6d 61 value: code-rma
15c0: 70 0a 20 20 20 20 76 61 6c 75 65 3a 20 64 61 74 p. value: dat
15d0: 61 2d 6d 61 70 0a 20 20 20 20 76 61 6c 75 65 3a a-map. value:
15e0: 20 64 61 74 61 2d 72 6d 61 70 0a 20 20 20 20 30 data-rmap. 0
15f0: 20 2b 66 69 65 6c 64 20 65 6e 64 2d 6d 61 70 73 +field end-maps
1600: 0a 20 20 20 20 5c 20 73 74 72 69 6e 67 73 0a 20 . \ strings.
1610: 20 20 20 30 20 2b 66 69 65 6c 64 20 73 74 61 72 0 +field star
1620: 74 2d 73 74 72 69 6e 67 73 0a 20 20 20 20 66 69 t-strings. fi
1630: 65 6c 64 3a 20 72 65 73 65 6e 64 30 0a 20 20 20 eld: resend0.
1640: 20 66 69 65 6c 64 3a 20 64 61 74 61 2d 72 65 73 field: data-res
1650: 65 6e 64 0a 20 20 20 20 66 69 65 6c 64 3a 20 70 end. field: p
1660: 75 62 6b 65 79 20 20 20 20 20 20 20 20 5c 20 6f ubkey \ o
1670: 74 68 65 72 20 73 69 64 65 20 6f 66 66 69 63 69 ther side offici
1680: 61 6c 20 70 75 62 6b 65 79 0a 20 20 20 20 66 69 al pubkey. fi
1690: 65 6c 64 3a 20 70 75 6e 63 68 2d 61 64 64 72 73 eld: punch-addrs
16a0: 0a 20 20 20 20 66 69 65 6c 64 3a 20 72 71 64 2d . field: rqd-
16b0: 78 74 73 20 20 20 20 20 20 20 5c 20 63 61 6c 6c xts \ call
16c0: 62 61 63 6b 73 20 66 6f 72 20 72 65 71 75 65 73 backs for reques
16d0: 74 20 64 6f 6e 65 20 28 61 72 72 61 79 29 0a 20 t done (array).
16e0: 20 20 20 66 69 65 6c 64 3a 20 6d 79 2d 65 72 72 field: my-err
16f0: 6f 72 2d 69 64 0a 20 20 20 20 66 69 65 6c 64 3a or-id. field:
1700: 20 62 65 61 63 6f 6e 2d 68 61 73 68 0a 20 20 20 beacon-hash.
1710: 20 30 20 2b 66 69 65 6c 64 20 65 6e 64 2d 73 74 0 +field end-st
1720: 72 69 6e 67 73 0a 20 20 20 20 66 69 65 6c 64 3a rings. field:
1730: 20 72 65 71 75 65 73 74 2d 67 65 6e 20 20 20 5c request-gen \
1740: 20 70 72 65 2d 67 65 6e 65 72 61 74 65 64 20 72 pre-generated r
1750: 65 71 75 65 73 74 20 6e 75 6d 62 65 72 0a 20 20 equest number.
1760: 20 20 66 69 65 6c 64 3a 20 70 65 72 6d 2d 6d 61 field: perm-ma
1770: 73 6b 0a 20 20 20 20 5c 20 73 65 63 72 65 74 73 sk. \ secrets
1780: 0a 20 20 20 20 30 20 2b 66 69 65 6c 64 20 73 74 . 0 +field st
1790: 61 72 74 2d 73 65 63 72 65 74 73 0a 20 20 20 20 art-secrets.
17a0: 66 69 65 6c 64 3a 20 63 72 79 70 74 6f 2d 6b 65 field: crypto-ke
17b0: 79 0a 20 20 20 20 66 69 65 6c 64 3a 20 64 65 73 y. field: des
17c0: 74 2d 30 6b 65 79 20 20 20 20 20 5c 20 6b 65 79 t-0key \ key
17d0: 20 66 6f 72 20 73 74 61 74 65 6c 65 73 73 20 63 for stateless c
17e0: 6f 6e 6e 65 63 74 69 6f 6e 73 0a 20 20 20 20 30 onnections. 0
17f0: 20 2b 66 69 65 6c 64 20 65 6e 64 2d 73 65 63 72 +field end-secr
1800: 65 74 73 0a 20 20 20 20 5c 20 73 65 6d 61 70 68 ets. \ semaph
1810: 6f 72 65 73 0a 20 20 20 20 30 20 2b 66 69 65 6c ores. 0 +fiel
1820: 64 20 73 74 61 72 74 2d 73 65 6d 61 73 0a 20 20 d start-semas.
1830: 20 20 31 20 70 74 68 72 65 61 64 2d 6d 75 74 65 1 pthread-mute
1840: 78 65 73 20 2b 66 69 65 6c 64 20 66 69 6c 65 73 xes +field files
1850: 74 61 74 65 2d 73 65 6d 61 0a 20 20 20 20 31 20 tate-sema. 1
1860: 70 74 68 72 65 61 64 2d 6d 75 74 65 78 65 73 20 pthread-mutexes
1870: 2b 66 69 65 6c 64 20 63 6f 64 65 2d 73 65 6d 61 +field code-sema
1880: 0a 20 20 20 20 30 20 2b 66 69 65 6c 64 20 65 6e . 0 +field en
1890: 64 2d 73 65 6d 61 73 0a 20 20 20 20 5c 20 63 6f d-semas. \ co
18a0: 6e 74 65 78 74 73 20 66 6f 72 20 73 75 62 63 6c ntexts for subcl
18b0: 61 73 73 65 73 0a 20 20 20 20 66 69 65 6c 64 3a asses. field:
18c0: 20 6e 65 78 74 2d 63 6f 6e 74 65 78 74 20 20 5c next-context \
18d0: 20 6c 69 6e 6b 20 66 69 65 6c 64 20 74 6f 20 63 link field to c
18e0: 6f 6e 6e 65 63 74 20 61 6c 6c 20 63 6f 6e 74 65 onnect all conte
18f0: 78 74 73 0a 20 20 20 20 66 69 65 6c 64 3a 20 6c xts. field: l
1900: 6f 67 2d 63 6f 6e 74 65 78 74 0a 20 20 20 20 66 og-context. f
1910: 69 65 6c 64 3a 20 61 63 6b 2d 63 6f 6e 74 65 78 ield: ack-contex
1920: 74 0a 20 20 20 20 66 69 65 6c 64 3a 20 6d 73 67 t. field: msg
1930: 69 6e 67 2d 63 6f 6e 74 65 78 74 0a 20 20 20 20 ing-context.
1940: 66 69 65 6c 64 3a 20 6d 73 67 2d 63 6f 6e 74 65 field: msg-conte
1950: 78 74 0a 20 20 20 20 66 69 65 6c 64 3a 20 66 69 xt. field: fi
1960: 6c 65 2d 73 74 61 74 65 20 20 20 20 5c 20 66 69 le-state \ fi
1970: 6c 65 73 0a 20 20 20 20 5c 20 72 65 73 74 20 6f les. \ rest o
1980: 66 20 73 74 61 74 65 0a 20 20 20 20 66 69 65 6c f state. fiel
1990: 64 3a 20 63 6f 64 65 62 75 66 23 0a 20 20 20 20 d: codebuf#.
19a0: 66 69 65 6c 64 3a 20 63 6f 6e 74 65 78 74 23 0a field: context#.
19b0: 20 20 20 20 66 69 65 6c 64 3a 20 77 61 69 74 2d field: wait-
19c0: 74 61 73 6b 0a 20 20 20 20 76 61 6c 75 65 3a 20 task. value:
19d0: 6d 61 78 2d 74 69 6d 65 6f 75 74 73 20 5c 20 69 max-timeouts \ i
19e0: 6e 69 74 69 61 6c 69 7a 65 64 20 77 69 74 68 20 nitialized with
19f0: 74 69 6d 65 6f 75 74 73 23 0a 20 20 20 20 24 31 timeouts#. $1
1a00: 30 20 2b 66 69 65 6c 64 20 72 65 74 75 72 6e 2d 0 +field return-
1a10: 61 64 64 72 65 73 73 20 5c 20 75 73 65 64 20 61 address \ used a
1a20: 73 20 72 65 74 75 72 6e 20 61 64 64 72 65 73 73 s return address
1a30: 0a 20 20 20 20 24 31 30 20 2b 66 69 65 6c 64 20 . $10 +field
1a40: 72 30 2d 61 64 64 72 65 73 73 20 5c 20 75 73 65 r0-address \ use
1a50: 64 20 66 6f 72 20 72 65 73 65 6e 64 69 6e 67 20 d for resending
1a60: 30 0a 20 20 20 20 24 32 30 20 2b 66 69 65 6c 64 0. $20 +field
1a70: 20 70 75 6e 63 68 23 0a 20 20 20 20 36 34 66 69 punch#. 64fi
1a80: 65 6c 64 3a 20 72 65 63 76 2d 61 64 64 72 0a 20 eld: recv-addr.
1a90: 20 20 20 66 69 65 6c 64 3a 20 72 65 61 64 2d 66 field: read-f
1aa0: 69 6c 65 23 0a 20 20 20 20 66 69 65 6c 64 3a 20 ile#. field:
1ab0: 77 72 69 74 65 2d 66 69 6c 65 23 0a 20 20 20 20 write-file#.
1ac0: 66 69 65 6c 64 3a 20 72 65 73 69 64 75 61 6c 72 field: residualr
1ad0: 65 61 64 0a 20 20 20 20 66 69 65 6c 64 3a 20 72 ead. field: r
1ae0: 65 73 69 64 75 61 6c 77 72 69 74 65 0a 20 20 20 esidualwrite.
1af0: 20 66 69 65 6c 64 3a 20 62 6c 6f 63 6b 73 69 7a field: blocksiz
1b00: 65 0a 20 20 20 20 66 69 65 6c 64 3a 20 62 6c 6f e. field: blo
1b10: 63 6b 61 6c 69 67 6e 0a 20 20 20 20 66 69 65 6c ckalign. fiel
1b20: 64 3a 20 72 65 71 6d 61 73 6b 20 5c 20 70 65 72 d: reqmask \ per
1b30: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 72 65 71 75 connection requ
1b40: 65 73 74 20 6d 61 73 6b 0a 20 20 20 20 66 69 65 est mask. fie
1b50: 6c 64 3a 20 72 65 71 63 6f 75 6e 74 20 5c 20 70 ld: reqcount \ p
1b60: 65 72 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 72 65 er connection re
1b70: 71 75 65 73 74 20 63 6f 75 6e 74 20 28 66 6f 72 quest count (for
1b80: 20 6e 6f 6e 20 63 6f 6f 6b 69 65 2d 72 65 71 75 non cookie-requ
1b90: 65 73 74 73 29 0a 20 20 20 20 66 69 65 6c 64 3a ests). field:
1ba0: 20 72 65 71 75 65 73 74 23 0a 20 20 20 20 66 69 request#. fi
1bb0: 65 6c 64 3a 20 66 69 6c 65 72 65 71 23 0a 20 20 eld: filereq#.
1bc0: 20 20 66 69 65 6c 64 3a 20 66 69 6c 65 2d 63 6f field: file-co
1bd0: 75 6e 74 20 5c 20 6f 70 65 6e 20 66 69 6c 65 20 unt \ open file
1be0: 63 6f 75 6e 74 0a 20 20 20 20 66 69 65 6c 64 3a count. field:
1bf0: 20 66 69 6c 65 2d 72 65 67 23 20 20 5c 20 6e 65 file-reg# \ ne
1c00: 78 74 20 66 69 6c 65 20 69 64 20 74 6f 20 72 65 xt file id to re
1c10: 71 75 65 73 74 0a 20 20 20 20 0a 20 20 20 20 66 quest. . f
1c20: 69 65 6c 64 3a 20 64 61 74 61 2d 62 32 62 0a 20 ield: data-b2b.
1c30: 20 20 20 0a 20 20 20 20 76 61 6c 75 65 3a 20 61 . value: a
1c40: 63 6b 2d 72 65 73 65 6e 64 73 23 0a 20 20 20 20 ck-resends#.
1c50: 63 66 69 65 6c 64 3a 20 61 63 6b 2d 73 74 61 74 cfield: ack-stat
1c60: 65 0a 20 20 20 20 63 76 61 6c 75 65 3a 20 61 63 e. cvalue: ac
1c70: 6b 2d 72 65 63 65 69 76 65 0a 20 20 20 20 63 76 k-receive. cv
1c80: 61 6c 75 65 3a 20 61 63 6b 2d 72 65 73 65 6e 64 alue: ack-resend
1c90: 7e 0a 20 20 20 20 0a 20 20 20 20 63 76 61 6c 75 ~. . cvalu
1ca0: 65 3a 20 72 65 71 2d 63 6f 64 65 73 69 7a 65 0a e: req-codesize.
1cb0: 20 20 20 20 63 76 61 6c 75 65 3a 20 72 65 71 2d cvalue: req-
1cc0: 64 61 74 61 73 69 7a 65 0a 0a 20 20 20 20 73 63 datasize.. sc
1cd0: 76 61 6c 75 65 3a 20 6b 65 79 2d 73 65 74 75 70 value: key-setup
1ce0: 3f 20 20 20 20 20 5c 20 74 72 75 65 20 69 66 20 ? \ true if
1cf0: 6b 65 79 20 73 65 74 75 70 20 69 73 20 64 6f 6e key setup is don
1d00: 65 0a 20 20 20 20 63 76 61 6c 75 65 3a 20 69 6e e. cvalue: in
1d10: 76 69 74 65 2d 72 65 73 75 6c 74 23 20 5c 20 69 vite-result# \ i
1d20: 6e 76 69 74 61 74 69 6f 6e 20 72 65 73 75 6c 74 nvitation result
1d30: 0a 20 20 20 20 63 76 61 6c 75 65 3a 20 63 6c 6f . cvalue: clo
1d40: 73 69 6e 67 3f 0a 20 20 20 20 5c 20 66 6c 6f 77 sing?. \ flow
1d50: 20 63 6f 6e 74 72 6f 6c 2c 20 73 65 6e 64 65 72 control, sender
1d60: 20 70 61 72 74 0a 0a 20 20 20 20 36 34 66 69 65 part.. 64fie
1d70: 6c 64 3a 20 6e 65 78 74 2d 74 69 6d 65 6f 75 74 ld: next-timeout
1d80: 20 5c 20 6e 73 0a 20 20 20 20 36 34 66 69 65 6c \ ns. 64fiel
1d90: 64 3a 20 72 65 73 65 6e 64 2d 61 6c 6c 2d 74 6f d: resend-all-to
1da0: 20 5c 20 6e 73 0a 20 20 20 20 5c 20 66 6c 6f 77 \ ns. \ flow
1db0: 20 63 6f 6e 74 72 6f 6c 2c 20 72 65 63 65 69 76 control, receiv
1dc0: 65 72 20 70 61 72 74 0a 20 20 20 20 36 34 66 69 er part. 64fi
1dd0: 65 6c 64 3a 20 62 75 72 73 74 2d 74 69 63 6b 73 eld: burst-ticks
1de0: 0a 20 20 20 20 36 34 66 69 65 6c 64 3a 20 66 69 . 64field: fi
1df0: 72 73 74 62 2d 74 69 63 6b 73 0a 20 20 20 20 36 rstb-ticks. 6
1e00: 34 66 69 65 6c 64 3a 20 6c 61 73 74 62 2d 74 69 4field: lastb-ti
1e10: 63 6b 73 0a 20 20 20 20 36 34 66 69 65 6c 64 3a cks. 64field:
1e20: 20 64 65 6c 74 61 2d 74 69 63 6b 73 0a 20 20 20 delta-ticks.
1e30: 20 36 34 66 69 65 6c 64 3a 20 6d 61 78 2d 64 74 64field: max-dt
1e40: 69 63 6b 73 0a 20 20 20 20 36 34 66 69 65 6c 64 icks. 64field
1e50: 3a 20 6c 61 73 74 2d 72 61 74 65 0a 20 20 20 20 : last-rate.
1e60: 5c 20 65 78 70 65 72 69 6d 65 6e 74 3a 20 74 72 \ experiment: tr
1e70: 61 63 6b 20 70 72 65 76 69 6f 75 73 20 62 32 62 ack previous b2b
1e80: 2d 73 74 61 72 74 0a 20 20 20 20 36 34 66 69 65 -start. 64fie
1e90: 6c 64 3a 20 6c 61 73 74 2d 72 74 69 63 6b 0a 20 ld: last-rtick.
1ea0: 20 20 20 36 34 66 69 65 6c 64 3a 20 6c 61 73 74 64field: last
1eb0: 2d 72 61 64 64 72 0a 20 20 20 20 66 69 65 6c 64 -raddr. field
1ec0: 3a 20 61 63 6b 73 0a 20 20 20 20 66 69 65 6c 64 : acks. field
1ed0: 3a 20 72 65 63 65 69 76 65 64 0a 20 20 20 20 5c : received. \
1ee0: 20 63 6f 6f 6b 69 65 73 0a 20 20 20 20 66 69 65 cookies. fie
1ef0: 6c 64 3a 20 6c 61 73 74 2d 61 63 6b 61 64 64 72 ld: last-ackaddr
1f00: 0a 20 20 20 20 5c 20 73 74 61 74 69 73 74 69 63 . \ statistic
1f10: 73 0a 20 20 20 20 4b 45 59 42 59 54 45 53 20 2b s. KEYBYTES +
1f20: 66 69 65 6c 64 20 74 70 6b 63 0a 20 20 20 20 4b field tpkc. K
1f30: 45 59 42 59 54 45 53 20 2b 66 69 65 6c 64 20 74 EYBYTES +field t
1f40: 73 6b 63 0a 65 6e 64 2d 63 6c 61 73 73 20 63 6f skc.end-class co
1f50: 6e 74 65 78 74 2d 63 6c 61 73 73 0a 0a 63 6d 64 ntext-class..cmd
1f60: 2d 63 6c 61 73 73 20 63 6c 61 73 73 0a 20 20 20 -class class.
1f70: 20 73 63 6f 70 65 3a 20 68 6f 73 74 0a 20 20 20 scope: host.
1f80: 20 66 69 65 6c 64 3a 20 70 72 69 23 0a 20 20 20 field: pri#.
1f90: 20 66 69 65 6c 64 3a 20 69 64 0a 20 20 20 20 6c field: id. l
1fa0: 66 69 65 6c 64 3a 20 69 70 76 34 0a 20 20 20 20 field: ipv4.
1fb0: 24 31 30 20 2b 66 69 65 6c 64 20 69 70 76 36 0a $10 +field ipv6.
1fc0: 20 20 20 20 77 66 69 65 6c 64 3a 20 70 6f 72 74 wfield: port
1fd0: 76 34 0a 20 20 20 20 77 66 69 65 6c 64 3a 20 70 v4. wfield: p
1fe0: 6f 72 74 76 36 0a 20 20 20 20 66 69 65 6c 64 3a ortv6. field:
1ff0: 20 61 6e 63 68 6f 72 20 5c 20 6e 65 74 32 6f 20 anchor \ net2o
2000: 61 6e 63 68 6f 72 20 28 69 73 20 61 20 70 75 62 anchor (is a pub
2010: 6b 65 79 29 0a 20 20 20 20 66 69 65 6c 64 3a 20 key). field:
2020: 72 6f 75 74 65 20 20 5c 20 6e 65 74 32 6f 20 72 route \ net2o r
2030: 6f 75 74 65 0a 20 20 20 20 66 69 65 6c 64 3a 20 oute. field:
2040: 72 65 76 6f 6b 65 20 5c 20 69 73 20 61 20 72 65 revoke \ is a re
2050: 76 6f 6b 65 20 70 61 74 68 0a 20 20 20 20 66 69 voke path. fi
2060: 65 6c 64 3a 20 6b 65 79 20 20 20 20 5c 20 70 73 eld: key \ ps
2070: 6b 20 66 6f 72 20 63 6f 6e 6e 65 63 74 69 6f 6e k for connection
2080: 20 73 65 74 75 70 0a 20 20 20 20 66 69 65 6c 64 setup. field
2090: 3a 20 65 6b 65 79 20 20 20 5c 20 65 70 68 65 6d : ekey \ ephem
20a0: 65 72 61 6c 20 6b 65 79 20 61 20 6c 61 20 4d 69 eral key a la Mi
20b0: 6e 69 6d 61 4c 54 0a 20 20 20 20 36 34 66 69 65 nimaLT. 64fie
20c0: 6c 64 3a 20 65 6b 65 79 2d 74 6f 20 5c 20 65 70 ld: ekey-to \ ep
20d0: 68 65 6d 65 72 61 6c 20 6b 65 79 20 74 69 6d 65 hemeral key time
20e0: 6f 75 74 0a 20 20 20 20 7d 73 63 6f 70 65 0a 65 out. }scope.e
20f0: 6e 64 2d 63 6c 61 73 73 20 61 64 64 72 65 73 73 nd-class address
2100: 2d 63 6c 61 73 73 0a 0a 5c 20 63 6f 6f 6b 69 65 -class..\ cookie
2110: 73 0a 0a 6f 62 6a 65 63 74 20 63 6c 61 73 73 0a s..object class.
2120: 20 20 20 20 36 34 66 69 65 6c 64 3a 20 63 63 2d 64field: cc-
2130: 74 69 6d 65 6f 75 74 0a 20 20 20 20 66 69 65 6c timeout. fiel
2140: 64 3a 20 63 63 2d 63 6f 6e 74 65 78 74 0a 20 20 d: cc-context.
2150: 20 20 4b 45 59 42 59 54 45 53 20 2b 66 69 65 6c KEYBYTES +fiel
2160: 64 20 63 63 2d 73 65 63 72 65 74 0a 65 6e 64 2d d cc-secret.end-
2170: 63 6c 61 73 73 20 63 6f 6e 2d 63 6f 6f 6b 69 65 class con-cookie
2180: 0a 0a 63 6f 6e 2d 63 6f 6f 6b 69 65 20 3e 6f 73 ..con-cookie >os
2190: 69 7a 65 20 40 20 43 6f 6e 73 74 61 6e 74 20 63 ize @ Constant c
21a0: 6f 6f 6b 69 65 2d 73 69 7a 65 23 0a 0a 5c 20 70 ookie-size#..\ p
21b0: 65 72 6d 69 73 73 69 6f 6e 73 0a 0a 31 0a 62 69 ermissions..1.bi
21c0: 74 20 70 65 72 6d 25 63 6f 6e 6e 65 63 74 20 20 t perm%connect
21d0: 20 20 5c 20 6e 6f 74 20 73 65 74 20 66 6f 72 20 \ not set for
21e0: 62 61 6e 6e 65 64 20 70 65 6f 70 6c 65 0a 62 69 banned people.bi
21f0: 74 20 70 65 72 6d 25 62 6c 6f 63 6b 65 64 20 20 t perm%blocked
2200: 20 20 5c 20 73 65 74 20 66 6f 72 20 62 61 6e 6e \ set for bann
2210: 65 64 20 70 65 6f 70 6c 65 20 2d 20 6d 61 6b 65 ed people - make
2220: 73 20 73 75 72 65 20 6f 6e 65 20 62 69 74 20 69 s sure one bit i
2230: 73 20 73 65 74 0a 62 69 74 20 70 65 72 6d 25 64 s set.bit perm%d
2240: 68 74 20 20 20 20 20 20 20 20 5c 20 63 61 6e 20 ht \ can
2250: 77 72 69 74 65 20 69 6e 74 6f 20 74 68 65 20 44 write into the D
2260: 48 54 0a 62 69 74 20 70 65 72 6d 25 6d 73 67 20 HT.bit perm%msg
2270: 20 20 20 20 20 20 20 5c 20 63 61 6e 20 73 65 6e \ can sen
2280: 64 20 6d 65 73 73 61 67 65 73 0a 62 69 74 20 70 d messages.bit p
2290: 65 72 6d 25 66 69 6c 65 72 64 20 20 20 20 20 5c erm%filerd \
22a0: 20 63 61 6e 20 72 65 61 64 20 66 69 6c 65 73 0a can read files.
22b0: 62 69 74 20 70 65 72 6d 25 66 69 6c 65 77 72 20 bit perm%filewr
22c0: 20 20 20 20 5c 20 63 61 6e 20 77 72 69 74 65 20 \ can write
22d0: 66 69 6c 65 73 0a 62 69 74 20 70 65 72 6d 25 66 files.bit perm%f
22e0: 69 6c 65 6e 61 6d 65 20 20 20 5c 20 63 61 6e 20 ilename \ can
22f0: 61 63 63 65 73 73 20 6e 61 6d 65 64 20 66 69 6c access named fil
2300: 65 73 0a 62 69 74 20 70 65 72 6d 25 66 69 6c 65 es.bit perm%file
2310: 68 61 73 68 20 20 20 5c 20 63 61 6e 20 61 63 63 hash \ can acc
2320: 65 73 73 20 66 69 6c 65 73 20 62 79 20 68 61 73 ess files by has
2330: 68 0a 62 69 74 20 70 65 72 6d 25 73 6f 63 6b 65 h.bit perm%socke
2340: 74 20 20 20 20 20 5c 20 63 61 6e 20 61 63 63 65 t \ can acce
2350: 73 73 20 73 6f 63 6b 65 74 73 0a 62 69 74 20 70 ss sockets.bit p
2360: 65 72 6d 25 74 65 72 6d 69 6e 61 6c 20 20 20 5c erm%terminal \
2370: 20 63 61 6e 20 61 63 63 65 73 73 20 74 65 72 6d can access term
2380: 69 6e 61 6c 0a 62 69 74 20 70 65 72 6d 25 74 65 inal.bit perm%te
2390: 72 6d 73 65 72 76 65 72 20 5c 20 63 61 6e 20 61 rmserver \ can a
23a0: 63 63 65 73 73 20 74 65 72 6d 73 65 72 76 65 72 ccess termserver
23b0: 0a 62 69 74 20 70 65 72 6d 25 73 79 6e 63 20 20 .bit perm%sync
23c0: 20 20 20 20 20 5c 20 69 73 20 61 6c 6c 6f 77 65 \ is allowe
23d0: 64 20 74 6f 20 73 79 6e 63 0a 62 69 74 20 70 65 d to sync.bit pe
23e0: 72 6d 25 69 6e 64 69 72 65 63 74 20 20 20 5c 20 rm%indirect \
23f0: 66 6f 72 63 65 20 69 6e 64 69 72 65 63 74 20 63 force indirect c
2400: 6f 6e 6e 65 63 74 69 6f 6e 0a 64 72 6f 70 0a 0a onnection.drop..
2410: 70 65 72 6d 25 63 6f 6e 6e 65 63 74 20 70 65 72 perm%connect per
2420: 6d 25 64 68 74 20 70 65 72 6d 25 6d 73 67 20 70 m%dht perm%msg p
2430: 65 72 6d 25 66 69 6c 65 72 64 20 70 65 72 6d 25 erm%filerd perm%
2440: 66 69 6c 65 68 61 73 68 20 6f 72 20 6f 72 20 6f filehash or or o
2450: 72 20 6f 72 20 56 61 6c 75 65 20 70 65 72 6d 25 r or Value perm%
2460: 64 65 66 61 75 6c 74 0a 70 65 72 6d 25 63 6f 6e default.perm%con
2470: 6e 65 63 74 20 70 65 72 6d 25 64 68 74 20 70 65 nect perm%dht pe
2480: 72 6d 25 69 6e 64 69 72 65 63 74 20 6f 72 20 6f rm%indirect or o
2490: 72 20 56 61 6c 75 65 20 70 65 72 6d 25 64 68 74 r Value perm%dht
24a0: 72 6f 6f 74 0a 70 65 72 6d 25 62 6c 6f 63 6b 65 root.perm%blocke
24b0: 64 20 70 65 72 6d 25 69 6e 64 69 72 65 63 74 20 d perm%indirect
24c0: 6f 72 20 56 61 6c 75 65 20 70 65 72 6d 25 75 6e or Value perm%un
24d0: 6b 6e 6f 77 6e 0a 70 65 72 6d 25 62 6c 6f 63 6b known.perm%block
24e0: 65 64 20 70 65 72 6d 25 69 6e 64 69 72 65 63 74 ed perm%indirect
24f0: 20 6f 72 20 69 6e 76 65 72 74 20 56 61 6c 75 65 or invert Value
2500: 20 70 65 72 6d 25 6d 79 73 65 6c 66 0a 43 72 65 perm%myself.Cre
2510: 61 74 65 20 70 65 72 6d 24 20 2c 22 20 63 62 64 ate perm$ ," cbd
2520: 6d 72 77 6e 68 73 74 76 79 69 22 0a 0a 5c 20 51 mrwnhstvyi"..\ Q
2530: 52 20 74 61 67 73 0a 0a 73 63 6f 70 65 3a 20 71 R tags..scope: q
2540: 72 0a 30 0a 65 6e 75 6d 20 6f 77 6e 6b 65 79 23 r.0.enum ownkey#
2550: 0a 65 6e 75 6d 20 6b 65 79 23 0a 65 6e 75 6d 20 .enum key#.enum
2560: 6b 65 79 73 69 67 23 0a 65 6e 75 6d 20 68 61 73 keysig#.enum has
2570: 68 23 0a 65 6e 75 6d 20 73 79 6e 63 23 20 20 20 h#.enum sync#
2580: 20 5c 20 73 79 63 68 6e 72 6f 6e 69 7a 69 6e 67 \ sychnronizing
2590: 20 69 6e 66 6f 3a 20 6b 65 79 2b 73 65 63 72 65 info: key+secre
25a0: 74 0a 65 6e 75 6d 20 70 61 79 6d 65 6e 74 23 20 t.enum payment#
25b0: 5c 20 70 61 79 6d 65 6e 74 20 69 73 20 76 61 6c \ payment is val
25c0: 75 65 2b 63 6f 69 6e 74 79 70 65 2b 77 61 6c 6c ue+cointype+wall
25d0: 65 74 0a 64 72 6f 70 0a 7d 73 63 6f 70 65 0a 0a et.drop.}scope..
25e0: 5c 20 74 69 6d 65 73 74 61 73 74 73 20 73 74 72 \ timestasts str
25f0: 75 63 74 75 72 65 0a 0a 62 65 67 69 6e 2d 73 74 ucture..begin-st
2600: 72 75 63 74 75 72 65 20 74 69 6d 65 73 74 61 74 ructure timestat
2610: 73 0a 73 66 76 61 6c 75 65 3a 20 74 73 2d 64 65 s.sfvalue: ts-de
2620: 6c 74 61 0a 73 66 76 61 6c 75 65 3a 20 74 73 2d lta.sfvalue: ts-
2630: 73 6c 61 63 6b 0a 73 66 76 61 6c 75 65 3a 20 74 slack.sfvalue: t
2640: 73 2d 72 65 71 72 61 74 65 0a 73 66 76 61 6c 75 s-reqrate.sfvalu
2650: 65 3a 20 74 73 2d 72 61 74 65 0a 73 66 76 61 6c e: ts-rate.sfval
2660: 75 65 3a 20 74 73 2d 67 72 6f 77 0a 65 6e 64 2d ue: ts-grow.end-
2670: 73 74 72 75 63 74 75 72 65 0a 0a 5c 20 69 6f 20 structure..\ io
2680: 70 65 72 2d 74 61 73 6b 20 76 61 72 69 61 62 6c per-task variabl
2690: 65 73 0a 0a 75 73 65 72 2d 6f 20 69 6f 2d 6d 65 es..user-o io-me
26a0: 6d 0a 0a 6f 62 6a 65 63 74 20 75 63 6c 61 73 73 m..object uclass
26b0: 20 69 6f 2d 6d 65 6d 0a 20 20 20 20 70 6f 6c 6c io-mem. poll
26c0: 66 64 20 34 20 2a 20 20 20 20 20 20 75 76 61 72 fd 4 * uvar
26d0: 20 70 6f 6c 6c 66 64 73 20 5c 20 75 70 20 74 6f pollfds \ up to
26e0: 20 66 6f 75 72 20 66 69 6c 65 20 64 65 73 63 72 four file descr
26f0: 69 70 74 6f 72 73 0a 20 20 20 20 73 6f 63 6b 61 iptors. socka
2700: 64 64 72 5f 69 6e 20 20 20 20 20 75 76 61 72 20 ddr_in uvar
2710: 73 6f 63 6b 61 64 64 72 3c 20 5c 20 69 6e 63 6f sockaddr< \ inco
2720: 6d 69 6e 67 20 73 6f 63 6b 65 74 0a 20 20 20 20 ming socket.
2730: 73 6f 63 6b 61 64 64 72 5f 69 6e 20 20 20 20 20 sockaddr_in
2740: 75 76 61 72 20 73 6f 63 6b 61 64 64 72 3e 20 5c uvar sockaddr> \
2750: 20 6f 75 74 67 6f 69 6e 67 20 73 6f 63 6b 65 74 outgoing socket
2760: 0a 20 20 20 20 73 6f 63 6b 61 64 64 72 5f 69 6e . sockaddr_in
2770: 20 20 20 20 20 75 76 61 72 20 73 6f 63 6b 61 64 uvar sockad
2780: 64 72 31 0a 20 20 20 20 5b 49 46 44 45 46 5d 20 dr1. [IFDEF]
2790: 6e 6f 2d 68 79 62 72 69 64 0a 09 73 6f 63 6b 61 no-hybrid..socka
27a0: 64 64 72 5f 69 6e 20 75 76 61 72 20 73 6f 63 6b ddr_in uvar sock
27b0: 61 64 64 72 32 0a 20 20 20 20 5b 54 48 45 4e 5d addr2. [THEN]
27c0: 0a 20 20 20 20 66 69 6c 65 2d 73 74 61 74 20 20 . file-stat
27d0: 20 20 20 20 20 75 76 61 72 20 73 74 61 74 62 75 uvar statbu
27e0: 66 0a 20 20 20 20 61 6c 69 67 6e 65 64 0a 20 20 f. aligned.
27f0: 20 20 63 65 6c 6c 20 20 20 20 20 20 20 20 20 20 cell
2800: 20 20 75 76 61 72 20 69 6e 64 2d 61 64 64 72 0a uvar ind-addr.
2810: 20 20 20 20 63 65 6c 6c 20 20 20 20 20 20 20 20 cell
2820: 20 20 20 20 75 76 61 72 20 74 61 73 6b 23 0a 20 uvar task#.
2830: 20 20 20 24 46 20 2b 20 2d 24 31 30 20 61 6e 64 $F + -$10 and
2840: 20 5c 20 61 6c 69 67 6e 20 62 79 20 24 31 30 0a \ align by $10.
2850: 20 20 20 20 6d 61 78 64 61 74 61 20 20 20 20 20 maxdata
2860: 20 20 20 20 75 76 61 72 20 61 6c 69 67 6e 65 64 uvar aligned
2870: 24 0a 20 20 20 20 24 31 30 20 20 20 20 20 20 20 $. $10
2880: 20 20 20 20 20 20 75 76 61 72 20 63 6d 64 74 6d uvar cmdtm
2890: 70 0a 20 20 20 20 24 31 30 20 20 20 20 20 20 20 p. $10
28a0: 20 20 20 20 20 20 75 76 61 72 20 72 65 74 75 72 uvar retur
28b0: 6e 2d 61 64 64 72 0a 20 20 20 20 24 31 30 20 20 n-addr. $10
28c0: 20 20 20 20 20 20 20 20 20 20 20 75 76 61 72 20 uvar
28d0: 74 65 6d 70 2d 61 64 64 72 0a 20 20 20 20 74 69 temp-addr. ti
28e0: 6d 65 73 74 61 74 73 20 20 20 20 20 20 20 75 76 mestats uv
28f0: 61 72 20 73 74 61 74 2d 74 75 70 6c 65 0a 20 20 ar stat-tuple.
2900: 20 20 6d 61 78 64 61 74 61 20 32 2f 20 6b 65 79 maxdata 2/ key
2910: 2d 73 61 6c 74 23 20 2b 20 6b 65 79 2d 63 6b 73 -salt# + key-cks
2920: 75 6d 23 20 2b 20 75 76 61 72 20 69 6e 69 74 30 um# + uvar init0
2930: 62 75 66 0a 20 20 20 20 61 6c 69 67 6e 65 64 0a buf. aligned.
2940: 20 20 20 20 63 65 6c 6c 20 20 20 20 20 20 20 20 cell
2950: 20 20 20 20 75 76 61 72 20 63 6f 64 65 30 2d 62 uvar code0-b
2960: 75 66 5e 0a 20 20 20 20 63 65 6c 6c 20 20 20 20 uf^. cell
2970: 20 20 20 20 20 20 20 20 75 76 61 72 20 63 6f 64 uvar cod
2980: 65 2d 62 75 66 5e 0a 20 20 20 20 63 65 6c 6c 20 e-buf^. cell
2990: 20 20 20 20 20 20 20 20 20 20 20 75 76 61 72 20 uvar
29a0: 63 6f 64 65 2d 62 75 66 24 5e 0a 20 20 20 20 63 code-buf$^. c
29b0: 65 6c 6c 20 20 20 20 20 20 20 20 20 20 20 20 75 ell u
29c0: 76 61 72 20 63 6f 64 65 2d 6b 65 79 5e 0a 20 20 var code-key^.
29d0: 20 20 5c 20 76 61 75 6c 74 20 76 61 72 69 61 62 \ vault variab
29e0: 6c 65 73 0a 20 20 20 20 63 65 6c 6c 20 20 20 20 les. cell
29f0: 20 20 20 20 20 20 20 20 75 76 61 72 20 65 6e 63 uvar enc
2a00: 2d 66 69 6c 65 6e 61 6d 65 0a 20 20 20 20 63 65 -filename. ce
2a10: 6c 6c 20 20 20 20 20 20 20 20 20 20 20 20 75 76 ll uv
2a20: 61 72 20 65 6e 63 2d 66 69 6c 65 0a 20 20 20 20 ar enc-file.
2a30: 63 65 6c 6c 20 20 20 20 20 20 20 20 20 20 20 20 cell
2a40: 75 76 61 72 20 65 6e 63 2d 66 64 0a 20 20 20 20 uvar enc-fd.
2a50: 63 65 6c 6c 20 20 20 20 20 20 20 20 20 20 20 20 cell
2a60: 75 76 61 72 20 65 6e 63 2d 70 61 64 64 69 6e 67 uvar enc-padding
2a70: 0a 20 20 20 20 63 65 6c 6c 20 20 20 20 20 20 20 . cell
2a80: 20 20 20 20 20 75 76 61 72 20 6b 65 79 2d 6c 69 uvar key-li
2a90: 73 74 0a 20 20 20 20 5c 20 6d 61 70 70 69 6e 67 st. \ mapping
2aa0: 20 62 75 66 66 65 72 73 0a 20 20 20 20 31 20 36 buffers. 1 6
2ab0: 34 73 20 20 20 20 20 20 20 20 20 20 20 75 76 61 4s uva
2ac0: 72 20 6e 65 77 2d 63 6f 64 65 2d 73 0a 20 20 20 r new-code-s.
2ad0: 20 31 20 36 34 73 20 20 20 20 20 20 20 20 20 20 1 64s
2ae0: 20 75 76 61 72 20 6e 65 77 2d 63 6f 64 65 2d 64 uvar new-code-d
2af0: 0a 20 20 20 20 31 20 36 34 73 20 20 20 20 20 20 . 1 64s
2b00: 20 20 20 20 20 75 76 61 72 20 6e 65 77 2d 64 61 uvar new-da
2b10: 74 61 2d 73 0a 20 20 20 20 31 20 36 34 73 20 20 ta-s. 1 64s
2b20: 20 20 20 20 20 20 20 20 20 75 76 61 72 20 6e 65 uvar ne
2b30: 77 2d 64 61 74 61 2d 64 0a 20 20 20 20 63 65 6c w-data-d. cel
2b40: 6c 20 20 20 20 20 20 20 20 20 20 20 20 75 76 61 l uva
2b50: 72 20 6e 65 77 2d 63 6f 64 65 2d 73 69 7a 65 0a r new-code-size.
2b60: 20 20 20 20 63 65 6c 6c 20 20 20 20 20 20 20 20 cell
2b70: 20 20 20 20 75 76 61 72 20 6e 65 77 2d 64 61 74 uvar new-dat
2b80: 61 2d 73 69 7a 65 0a 20 20 20 20 63 65 6c 6c 20 a-size. cell
2b90: 20 20 20 20 20 20 20 20 20 20 20 75 76 61 72 20 uvar
2ba0: 64 6f 2d 6b 65 79 70 61 64 0a 20 20 20 20 63 65 do-keypad. ce
2bb0: 6c 6c 20 20 20 20 20 20 20 20 20 20 20 20 75 76 ll uv
2bc0: 61 72 20 74 6d 70 2d 69 76 73 0a 20 20 20 20 63 ar tmp-ivs. c
2bd0: 65 6c 6c 20 20 20 20 20 20 20 20 20 20 20 20 75 ell u
2be0: 76 61 72 20 74 6d 70 2d 70 75 62 6b 65 79 0a 20 var tmp-pubkey.
2bf0: 20 20 20 63 65 6c 6c 20 20 20 20 20 20 20 20 20 cell
2c00: 20 20 20 75 76 61 72 20 74 6d 70 2d 6d 79 2d 6b uvar tmp-my-k
2c10: 65 79 0a 20 20 20 20 63 65 6c 6c 20 20 20 20 20 ey. cell
2c20: 20 20 20 20 20 20 20 75 76 61 72 20 74 6d 70 2d uvar tmp-
2c30: 70 65 72 6d 0a 20 20 20 20 63 65 6c 6c 20 20 20 perm. cell
2c40: 20 20 20 20 20 20 20 20 20 75 76 61 72 20 24 65 uvar $e
2c50: 72 72 6f 72 2d 69 64 0a 65 6e 64 2d 63 6c 61 73 rror-id.end-clas
2c60: 73 20 69 6f 2d 62 75 66 66 65 72 73 0a 0a 5c 20 s io-buffers..\
2c70: 72 65 70 6c 79 20 73 74 72 75 63 74 75 72 65 0a reply structure.
2c80: 0a 62 65 67 69 6e 2d 73 74 72 75 63 74 75 72 65 .begin-structure
2c90: 20 72 65 70 6c 79 0a 20 20 20 20 66 69 65 6c 64 reply. field
2ca0: 3a 20 72 65 70 6c 79 2d 6c 65 6e 0a 20 20 20 20 : reply-len.
2cb0: 66 69 65 6c 64 3a 20 72 65 70 6c 79 2d 6f 66 66 field: reply-off
2cc0: 73 65 74 0a 20 20 20 20 36 34 66 69 65 6c 64 3a set. 64field:
2cd0: 20 72 65 70 6c 79 2d 64 65 73 74 0a 20 20 20 20 reply-dest.
2ce0: 36 34 66 69 65 6c 64 3a 20 72 65 70 6c 79 2d 74 64field: reply-t
2cf0: 69 6d 65 0a 20 20 20 20 64 65 66 65 72 3a 20 72 ime. defer: r
2d00: 65 70 6c 79 2d 78 74 20 20 5c 20 65 78 65 63 75 eply-xt \ execu
2d10: 74 65 20 77 68 65 6e 20 72 65 63 65 69 76 69 6e te when receivin
2d20: 67 20 61 6e 20 6f 6b 0a 20 20 20 20 64 65 66 65 g an ok. defe
2d30: 72 3a 20 73 65 6e 64 2d 78 74 20 20 20 5c 20 65 r: send-xt \ e
2d40: 78 65 63 75 74 65 64 20 74 6f 20 28 72 65 29 73 xecuted to (re)s
2d50: 65 6e 64 20 61 20 6d 65 73 73 61 67 65 0a 20 20 end a message.
2d60: 20 20 76 61 6c 75 65 3a 20 72 65 70 6c 79 2d 74 value: reply-t
2d70: 61 67 20 5c 20 70 6f 69 6e 74 65 72 20 74 6f 20 ag \ pointer to
2d80: 72 65 70 6c 79 20 74 61 67 0a 5c 20 20 20 20 66 reply tag.\ f
2d90: 69 65 6c 64 3a 20 72 65 70 6c 79 2d 74 69 6d 65 ield: reply-time
2da0: 6f 75 74 23 20 5c 20 70 65 72 2d 72 65 70 6c 79 out# \ per-reply
2db0: 20 74 69 6d 65 6f 75 74 20 63 6f 75 6e 74 65 72 timeout counter
2dc0: 0a 5c 20 20 20 20 66 69 65 6c 64 3a 20 72 65 70 .\ field: rep
2dd0: 6c 79 2d 74 69 6d 65 6f 75 74 2d 78 74 20 5c 20 ly-timeout-xt \
2de0: 70 65 72 2d 72 65 70 6c 79 20 74 69 6d 65 6f 75 per-reply timeou
2df0: 74 20 78 74 0a 65 6e 64 2d 73 74 72 75 63 74 75 t xt.end-structu
2e00: 72 65 0a 0a 5c 20 61 64 64 72 65 73 73 20 74 6f re..\ address to
2e10: 20 69 6e 64 65 78 20 63 6f 6d 70 75 74 61 74 69 index computati
2e20: 6f 6e 73 0a 0a 3a 20 61 64 64 72 3e 62 69 74 73 ons..: addr>bits
2e30: 20 28 20 61 64 64 72 20 2d 2d 20 62 69 74 73 20 ( addr -- bits
2e40: 29 0a 20 20 20 20 63 68 75 6e 6b 2d 70 32 20 72 ). chunk-p2 r
2e50: 73 68 69 66 74 20 3b 0a 3a 20 61 64 64 72 3e 62 shift ;.: addr>b
2e60: 79 74 65 73 20 28 20 61 64 64 72 20 2d 2d 20 62 ytes ( addr -- b
2e70: 79 74 65 73 20 29 0a 20 20 20 20 5b 20 63 68 75 ytes ). [ chu
2e80: 6e 6b 2d 70 32 20 33 20 2b 20 5d 4c 20 72 73 68 nk-p2 3 + ]L rsh
2e90: 69 66 74 20 3b 0a 3a 20 62 79 74 65 73 3e 61 64 ift ;.: bytes>ad
2ea0: 64 72 20 28 20 62 79 74 65 73 20 61 64 64 72 20 dr ( bytes addr
2eb0: 2d 2d 20 29 0a 20 20 20 20 5b 20 63 68 75 6e 6b -- ). [ chunk
2ec0: 2d 70 32 20 33 20 2b 20 5d 4c 20 6c 73 68 69 66 -p2 3 + ]L lshif
2ed0: 74 20 3b 0a 3a 20 62 69 74 73 3e 62 79 74 65 73 t ;.: bits>bytes
2ee0: 20 28 20 62 69 74 73 20 2d 2d 20 62 79 74 65 73 ( bits -- bytes
2ef0: 20 29 0a 20 20 20 20 31 2d 20 32 2f 20 32 2f 20 ). 1- 2/ 2/
2f00: 32 2f 20 31 2b 20 3b 0a 3a 20 62 79 74 65 73 3e 2/ 1+ ;.: bytes>
2f10: 62 69 74 73 20 28 20 62 79 74 65 73 20 2d 2d 20 bits ( bytes --
2f20: 62 69 74 73 20 29 0a 20 20 20 20 33 20 6c 73 68 bits ). 3 lsh
2f30: 69 66 74 20 3b 0a 3a 20 61 64 64 72 3e 74 73 20 ift ;.: addr>ts
2f40: 28 20 61 64 64 72 20 2d 2d 20 74 73 2d 6f 66 66 ( addr -- ts-off
2f50: 73 65 74 20 29 0a 20 20 20 20 61 64 64 72 3e 62 set ). addr>b
2f60: 69 74 73 20 36 34 73 20 3b 0a 3a 20 61 64 64 72 its 64s ;.: addr
2f70: 3e 36 34 20 28 20 61 64 64 72 20 2d 2d 20 74 73 >64 ( addr -- ts
2f80: 2d 6f 66 66 73 65 74 20 29 0a 20 20 20 20 5b 20 -offset ). [
2f90: 63 68 75 6e 6b 2d 70 32 20 33 20 2d 20 5d 4c 20 chunk-p2 3 - ]L
2fa0: 72 73 68 69 66 74 20 2d 38 20 61 6e 64 20 3b 0a rshift -8 and ;.
2fb0: 3a 20 61 64 64 72 3e 72 65 70 6c 69 65 73 20 28 : addr>replies (
2fc0: 20 61 64 64 72 20 2d 2d 20 72 65 70 6c 69 65 73 addr -- replies
2fd0: 20 29 0a 20 20 20 20 61 64 64 72 3e 62 69 74 73 ). addr>bits
2fe0: 20 72 65 70 6c 79 20 2a 20 3b 0a 3a 20 61 64 64 reply * ;.: add
2ff0: 72 3e 6b 65 79 73 20 28 20 61 64 64 72 20 2d 2d r>keys ( addr --
3000: 20 6b 65 79 73 20 29 0a 20 20 20 20 6d 61 78 2d keys ). max-
3010: 73 69 7a 65 5e 32 20 72 73 68 69 66 74 20 5b 20 size^2 rshift [
3020: 6d 69 6e 2d 73 69 7a 65 20 6e 65 67 61 74 65 20 min-size negate
3030: 5d 4c 20 61 6e 64 20 3b 0a 0a 5c 20 6e 65 74 32 ]L and ;..\ net2
3040: 6f 20 68 65 61 64 65 72 20 73 74 72 75 63 74 75 o header structu
3050: 72 65 0a 0a 62 65 67 69 6e 2d 73 74 72 75 63 74 re..begin-struct
3060: 75 72 65 20 6e 65 74 32 6f 2d 68 65 61 64 65 72 ure net2o-header
3070: 0a 20 20 20 20 31 20 2b 66 69 65 6c 64 20 68 64 . 1 +field hd
3080: 72 66 6c 61 67 73 0a 20 20 20 20 31 20 2b 66 69 rflags. 1 +fi
3090: 65 6c 64 20 68 64 72 74 61 67 73 0a 20 20 20 31 eld hdrtags. 1
30a0: 36 20 2b 66 69 65 6c 64 20 64 65 73 74 69 6e 61 6 +field destina
30b0: 74 69 6f 6e 0a 20 20 20 20 38 20 2b 66 69 65 6c tion. 8 +fiel
30c0: 64 20 6d 61 70 61 64 64 72 0a 65 6e 64 2d 73 74 d mapaddr.end-st
30d0: 72 75 63 74 75 72 65 0a 0a 5c 20 6b 65 79 20 63 ructure..\ key c
30e0: 6c 61 73 73 0a 0a 63 6d 64 2d 63 6c 61 73 73 20 lass..cmd-class
30f0: 63 6c 61 73 73 0a 20 20 20 20 66 69 65 6c 64 3a class. field:
3100: 20 6b 65 2d 73 6b 20 20 20 20 20 20 20 5c 20 73 ke-sk \ s
3110: 65 63 72 65 74 20 6b 65 79 0a 20 20 20 20 66 69 ecret key. fi
3120: 65 6c 64 3a 20 6b 65 2d 70 6b 20 20 20 20 20 20 eld: ke-pk
3130: 20 5c 20 70 75 62 6c 69 63 20 6b 65 79 0a 20 20 \ public key.
3140: 20 20 66 69 65 6c 64 3a 20 6b 65 2d 72 73 6b 20 field: ke-rsk
3150: 20 20 20 20 20 5c 20 72 65 76 6f 6b 65 20 73 65 \ revoke se
3160: 63 72 65 74 20 28 74 65 6d 70 6f 72 61 72 69 6c cret (temporaril
3170: 79 20 73 74 6f 72 65 64 29 0a 20 20 20 20 66 69 y stored). fi
3180: 65 6c 64 3a 20 6b 65 2d 77 61 6c 6c 65 74 20 20 eld: ke-wallet
3190: 20 5c 20 77 61 6c 6c 65 74 0a 20 20 20 20 66 69 \ wallet. fi
31a0: 65 6c 64 3a 20 6b 65 2d 74 79 70 65 20 20 20 20 eld: ke-type
31b0: 20 5c 20 6b 65 79 20 74 79 70 65 0a 20 20 20 20 \ key type.
31c0: 66 69 65 6c 64 3a 20 6b 65 2d 6e 69 63 6b 20 20 field: ke-nick
31d0: 20 20 20 5c 20 6b 65 79 20 6e 69 63 6b 0a 20 20 \ key nick.
31e0: 20 20 66 69 65 6c 64 3a 20 6b 65 2d 6e 69 63 6b field: ke-nick
31f0: 23 20 20 20 20 5c 20 74 6f 20 61 76 6f 69 64 20 # \ to avoid
3200: 63 6f 6c 69 73 73 69 6f 6e 73 2c 20 61 64 64 20 colissions, add
3210: 61 20 6e 75 6d 62 65 72 20 68 65 72 65 0a 20 20 a number here.
3220: 20 20 66 69 65 6c 64 3a 20 6b 65 2d 70 65 74 73 field: ke-pets
3230: 5b 5d 20 20 20 5c 20 6b 65 79 20 70 65 74 6e 61 [] \ key petna
3240: 6d 65 73 0a 20 20 20 20 66 69 65 6c 64 3a 20 6b mes. field: k
3250: 65 2d 70 65 74 73 23 20 20 20 20 5c 20 74 6f 20 e-pets# \ to
3260: 61 76 6f 69 64 20 63 6f 6c 69 73 73 69 6f 6e 73 avoid colissions
3270: 2c 20 61 64 64 20 61 20 6e 75 6d 62 65 72 20 68 , add a number h
3280: 65 72 65 0a 20 20 20 20 66 69 65 6c 64 3a 20 6b ere. field: k
3290: 65 2d 70 72 6f 66 20 20 20 20 20 5c 20 70 72 6f e-prof \ pro
32a0: 66 69 6c 65 20 6f 62 6a 65 63 74 0a 20 20 20 20 file object.
32b0: 66 69 65 6c 64 3a 20 6b 65 2d 61 76 61 74 61 72 field: ke-avatar
32c0: 20 20 20 5c 20 61 76 61 74 61 72 20 6f 62 6a 65 \ avatar obje
32d0: 63 74 0a 20 20 20 20 66 69 65 6c 64 3a 20 6b 65 ct. field: ke
32e0: 2d 63 68 61 74 20 20 20 20 20 5c 20 63 68 61 74 -chat \ chat
32f0: 20 67 72 6f 75 70 20 66 6f 72 20 31 3a 31 20 63 group for 1:1 c
3300: 68 61 74 20 77 69 74 68 20 74 68 61 74 20 70 65 hat with that pe
3310: 72 73 6f 6e 0a 20 20 20 20 66 69 65 6c 64 3a 20 rson. field:
3320: 6b 65 2d 73 65 6c 66 73 69 67 0a 20 20 20 20 66 ke-selfsig. f
3330: 69 65 6c 64 3a 20 6b 65 2d 73 69 67 73 5b 5d 0a ield: ke-sigs[].
3340: 20 20 20 20 66 69 65 6c 64 3a 20 6b 65 2d 69 6d field: ke-im
3350: 70 6f 72 74 73 20 20 5c 20 62 69 74 6d 61 73 6b ports \ bitmask
3360: 20 6f 66 20 6b 65 79 20 69 6d 70 6f 72 74 0a 20 of key import.
3370: 20 20 20 66 69 65 6c 64 3a 20 6b 65 2d 5b 5d 31 field: ke-[]1
3380: 0a 20 20 20 20 66 69 65 6c 64 3a 20 6b 65 2d 5b . field: ke-[
3390: 5d 32 0a 20 20 20 20 66 69 65 6c 64 3a 20 6b 65 ]2. field: ke
33a0: 2d 5b 5d 33 0a 20 20 20 20 66 69 65 6c 64 3a 20 -[]3. field:
33b0: 6b 65 2d 5b 5d 34 0a 20 20 20 20 66 69 65 6c 64 ke-[]4. field
33c0: 3a 20 6b 65 2d 73 65 63 31 0a 20 20 20 20 66 69 : ke-sec1. fi
33d0: 65 6c 64 3a 20 6b 65 2d 73 65 63 32 0a 20 20 20 eld: ke-sec2.
33e0: 20 36 34 66 69 65 6c 64 3a 20 6b 65 2d 23 31 0a 64field: ke-#1.
33f0: 20 20 20 20 36 34 66 69 65 6c 64 3a 20 6b 65 2d 64field: ke-
3400: 23 32 0a 20 20 20 20 36 34 66 69 65 6c 64 3a 20 #2. 64field:
3410: 6b 65 2d 23 33 0a 20 20 20 20 36 34 66 69 65 6c ke-#3. 64fiel
3420: 64 3a 20 6b 65 2d 23 34 0a 5c 20 6f 74 68 65 72 d: ke-#4.\ other
3430: 20 66 69 65 6c 64 73 0a 20 20 20 20 66 69 65 6c fields. fiel
3440: 64 3a 20 6b 65 2d 73 74 6f 72 65 6b 65 79 20 5c d: ke-storekey \
3450: 20 75 73 65 64 20 74 6f 20 65 6e 63 72 79 70 74 used to encrypt
3460: 20 6f 6e 20 73 74 6f 72 61 67 65 0a 20 20 20 20 on storage.
3470: 66 69 65 6c 64 3a 20 6b 65 2d 6d 61 73 6b 20 20 field: ke-mask
3480: 20 20 20 5c 20 70 65 72 6d 69 73 73 69 6f 6e 20 \ permission
3490: 6d 61 73 6b 0a 20 20 20 20 66 69 65 6c 64 3a 20 mask. field:
34a0: 6b 65 2d 67 72 6f 75 70 73 20 20 20 5c 20 70 65 ke-groups \ pe
34b0: 72 6d 69 73 73 69 6f 6e 20 67 72 6f 75 70 73 0a rmission groups.
34c0: 20 20 20 20 36 34 66 69 65 6c 64 3a 20 6b 65 2d 64field: ke-
34d0: 6f 66 66 73 65 74 20 5c 20 6f 66 66 73 65 74 20 offset \ offset
34e0: 69 6e 20 6b 65 79 20 66 69 6c 65 0a 20 20 20 20 in key file.
34f0: 66 69 65 6c 64 3a 20 6b 65 2d 70 77 6c 65 76 65 field: ke-pwleve
3500: 6c 20 20 5c 20 70 61 73 73 77 6f 72 64 20 73 74 l \ password st
3510: 72 65 6e 67 74 68 20 6c 65 76 65 6c 0a 20 20 20 rength level.
3520: 20 66 69 65 6c 64 3a 20 6b 65 2d 73 6b 73 69 67 field: ke-sksig
3530: 20 20 20 20 5c 20 73 69 67 6e 61 74 75 72 65 20 \ signature
3540: 73 65 63 72 65 74 2c 20 63 6f 6d 70 75 74 65 64 secret, computed
3550: 2c 20 6e 65 76 65 72 20 73 74 6f 72 65 64 0a 20 , never stored.
3560: 20 20 20 30 20 2b 66 69 65 6c 64 20 6b 65 2d 65 0 +field ke-e
3570: 6e 64 0a 65 6e 64 2d 63 6c 61 73 73 20 6b 65 79 nd.end-class key
3580: 2d 65 6e 74 72 79 0a 0a 5c 20 6b 65 79 20 72 65 -entry..\ key re
3590: 6c 61 74 65 64 20 20 63 6f 6e 73 74 61 6e 74 73 lated constants
35a0: 0a 0a 36 34 20 43 6f 6e 73 74 61 6e 74 20 73 74 ..64 Constant st
35b0: 61 74 65 23 0a 73 74 61 74 65 23 20 32 2a 20 43 ate#.state# 2* C
35c0: 6f 6e 73 74 61 6e 74 20 73 74 61 74 65 32 23 0a onstant state2#.
35d0: 4b 45 59 42 59 54 45 53 20 43 6f 6e 73 74 61 6e KEYBYTES Constan
35e0: 74 20 6b 65 79 73 69 7a 65 20 5c 20 6f 75 72 20 t keysize \ our
35f0: 73 68 61 72 65 64 20 73 65 63 72 65 64 20 69 73 shared secred is
3600: 20 6f 6e 6c 79 20 33 32 20 62 79 74 65 73 20 6c only 32 bytes l
3610: 6f 6e 67 0a 4b 45 59 42 59 54 45 53 20 32 2a 20 ong.KEYBYTES 2*
3620: 43 6f 6e 73 74 61 6e 74 20 6b 65 79 73 69 7a 65 Constant keysize
3630: 32 20 5c 20 70 75 62 6b 65 79 2b 72 65 76 6b 65 2 \ pubkey+revke
3640: 79 3d 36 34 20 62 79 74 65 73 0a 0a 3a 20 6b 65 y=64 bytes..: ke
3650: 79 7c 20 28 20 73 69 7a 65 20 2d 2d 20 73 69 7a y| ( size -- siz
3660: 65 27 20 29 20 6b 65 79 73 69 7a 65 20 75 6d 69 e' ) keysize umi
3670: 6e 20 3b 0a 3a 20 6b 65 79 32 7c 20 28 20 73 69 n ;.: key2| ( si
3680: 7a 65 20 2d 2d 20 73 69 7a 65 27 20 29 20 6b 65 ze -- size' ) ke
3690: 79 73 69 7a 65 32 20 75 6d 69 6e 20 3b 0a 0a 5c ysize2 umin ;..\
36a0: 20 73 70 65 63 69 66 79 20 73 74 72 65 6e 67 74 specify strengt
36b0: 68 20 28 69 6e 20 62 79 74 65 73 29 2c 20 6e 6f h (in bytes), no
36c0: 74 20 6c 65 6e 67 74 68 21 20 6c 65 6e 67 74 68 t length! length
36d0: 20 69 73 20 32 2a 73 74 72 65 6e 67 74 68 0a 33 is 2*strength.3
36e0: 32 20 43 6f 6e 73 74 61 6e 74 20 68 61 73 68 23 2 Constant hash#
36f0: 31 32 38 20 5c 20 31 32 38 20 62 69 74 20 68 61 128 \ 128 bit ha
3700: 73 68 20 73 74 72 65 6e 67 74 68 20 69 73 20 65 sh strength is e
3710: 6e 6f 75 67 68 21 0a 36 34 20 43 6f 6e 73 74 61 nough!.64 Consta
3720: 6e 74 20 68 61 73 68 23 32 35 36 20 5c 20 32 35 nt hash#256 \ 25
3730: 36 20 62 69 74 20 68 61 73 68 20 73 74 72 65 6e 6 bit hash stren
3740: 67 74 68 20 69 73 20 6d 6f 72 65 20 74 68 61 6e gth is more than
3750: 20 65 6e 6f 75 67 68 21 0a 0a 5c 20 67 72 6f 75 enough!..\ grou
3760: 70 20 64 65 73 63 72 69 70 74 69 6f 6e 0a 0a 63 p description..c
3770: 6d 64 2d 63 6c 61 73 73 20 63 6c 61 73 73 7b 20 md-class class{
3780: 67 72 6f 75 70 73 0a 20 20 20 20 24 76 61 6c 75 groups. $valu
3790: 65 3a 20 69 64 24 20 5c 20 69 73 20 74 68 65 20 e: id$ \ is the
37a0: 70 75 62 6b 65 79 0a 20 20 20 20 66 69 65 6c 64 pubkey. field
37b0: 3a 20 6d 65 6d 62 65 72 5b 5d 0a 20 20 20 20 66 : member[]. f
37c0: 69 65 6c 64 3a 20 61 64 6d 69 6e 20 20 20 20 20 ield: admin
37d0: 5c 20 73 65 63 72 65 74 20 6b 65 79 2c 20 6f 6e \ secret key, on
37e0: 6c 79 20 6b 6e 6f 77 6e 20 74 6f 20 74 68 65 20 ly known to the
37f0: 61 64 6d 69 6e 73 0a 20 20 20 20 36 34 76 61 6c admins. 64val
3800: 75 65 3a 20 70 65 72 6d 73 23 0a 7d 63 6c 61 73 ue: perms#.}clas
3810: 73 0a 0a 5c 5c 5c 0a 4c 6f 63 61 6c 20 56 61 72 s..\\\.Local Var
3820: 69 61 62 6c 65 73 3a 0a 66 6f 72 74 68 2d 6c 6f iables:.forth-lo
3830: 63 61 6c 2d 77 6f 72 64 73 3a 0a 20 20 20 20 28 cal-words:. (
3840: 0a 20 20 20 20 20 28 28 22 6e 65 74 32 6f 3a 22 . (("net2o:"
3850: 20 22 2b 6e 65 74 32 6f 3a 22 29 20 64 65 66 69 "+net2o:") defi
3860: 6e 69 74 69 6f 6e 2d 73 74 61 72 74 65 72 20 28 nition-starter (
3870: 66 6f 6e 74 2d 6c 6f 63 6b 2d 6b 65 79 77 6f 72 font-lock-keywor
3880: 64 2d 66 61 63 65 20 2e 20 31 29 0a 20 20 20 20 d-face . 1).
3890: 20 20 22 5b 20 5c 74 5c 6e 5d 22 20 74 20 6e 61 "[ \t\n]" t na
38a0: 6d 65 20 28 66 6f 6e 74 2d 6c 6f 63 6b 2d 66 75 me (font-lock-fu
38b0: 6e 63 74 69 6f 6e 2d 6e 61 6d 65 2d 66 61 63 65 nction-name-face
38c0: 20 2e 20 33 29 29 0a 20 20 20 20 20 28 28 22 36 . 3)). (("6
38d0: 34 76 61 6c 75 65 3a 22 29 0a 20 20 20 20 20 20 4value:").
38e0: 20 6e 6f 6e 2d 69 6d 6d 65 64 69 61 74 65 20 28 non-immediate (
38f0: 66 6f 6e 74 2d 6c 6f 63 6b 2d 74 79 70 65 2d 66 font-lock-type-f
3900: 61 63 65 20 2e 20 32 29 0a 20 20 20 20 20 20 20 ace . 2).
3910: 22 5b 20 5c 74 5c 6e 5d 22 20 74 20 6e 61 6d 65 "[ \t\n]" t name
3920: 20 28 66 6f 6e 74 2d 6c 6f 63 6b 2d 76 61 72 69 (font-lock-vari
3930: 61 62 6c 65 2d 6e 61 6d 65 2d 66 61 63 65 20 2e able-name-face .
3940: 20 33 29 29 0a 20 20 20 20 20 28 22 5b 61 2d 7a 3)). ("[a-z
3950: 30 2d 39 5d 2b 28 22 20 69 6d 6d 65 64 69 61 74 0-9]+(" immediat
3960: 65 20 28 66 6f 6e 74 2d 6c 6f 63 6b 2d 63 6f 6d e (font-lock-com
3970: 6d 65 6e 74 2d 66 61 63 65 20 2e 20 31 29 0a 20 ment-face . 1).
3980: 20 20 20 20 20 22 29 22 20 6e 69 6c 20 63 6f 6d ")" nil com
3990: 6d 65 6e 74 20 28 66 6f 6e 74 2d 6c 6f 63 6b 2d ment (font-lock-
39a0: 63 6f 6d 6d 65 6e 74 2d 66 61 63 65 20 2e 20 31 comment-face . 1
39b0: 29 29 0a 20 20 20 20 20 28 28 22 63 6c 61 73 73 )). (("class
39c0: 7b 22 29 20 64 65 66 69 6e 69 74 69 6f 6e 2d 73 {") definition-s
39d0: 74 61 72 74 65 72 20 28 66 6f 6e 74 2d 6c 6f 63 tarter (font-loc
39e0: 6b 2d 6b 65 79 77 6f 72 64 2d 66 61 63 65 20 2e k-keyword-face .
39f0: 20 31 29 0a 20 20 20 20 20 20 22 5b 20 5c 74 5c 1). "[ \t\
3a00: 6e 5d 22 20 74 20 6e 61 6d 65 20 28 66 6f 6e 74 n]" t name (font
3a10: 2d 6c 6f 63 6b 2d 66 75 6e 63 74 69 6f 6e 2d 6e -lock-function-n
3a20: 61 6d 65 2d 66 61 63 65 20 2e 20 33 29 29 0a 20 ame-face . 3)).
3a30: 20 20 20 20 28 28 22 7d 63 6c 61 73 73 22 29 20 (("}class")
3a40: 64 65 66 69 6e 69 74 69 6f 6e 2d 65 6e 64 65 72 definition-ender
3a50: 20 28 66 6f 6e 74 2d 6c 6f 63 6b 2d 6b 65 79 77 (font-lock-keyw
3a60: 6f 72 64 2d 66 61 63 65 20 2e 20 31 29 29 0a 20 ord-face . 1)).
3a70: 20 20 20 29 0a 66 6f 72 74 68 2d 6c 6f 63 61 6c ).forth-local
3a80: 2d 69 6e 64 65 6e 74 2d 77 6f 72 64 73 3a 0a 20 -indent-words:.
3a90: 20 20 20 28 0a 20 20 20 20 20 28 28 22 6e 65 74 (. (("net
3aa0: 32 6f 3a 22 20 22 2b 6e 65 74 32 6f 3a 22 29 20 2o:" "+net2o:")
3ab0: 28 30 20 2e 20 32 29 20 28 30 20 2e 20 32 29 20 (0 . 2) (0 . 2)
3ac0: 6e 6f 6e 2d 69 6d 6d 65 64 69 61 74 65 29 0a 20 non-immediate).
3ad0: 20 20 20 20 28 28 22 63 6c 61 73 73 7b 22 29 20 (("class{")
3ae0: 28 30 20 2e 20 32 29 20 28 30 20 2e 20 32 29 29 (0 . 2) (0 . 2))
3af0: 0a 20 20 20 20 20 28 28 22 7d 63 6c 61 73 73 22 . (("}class"
3b00: 29 20 28 2d 32 20 2e 20 30 29 20 28 30 20 2e 20 ) (-2 . 0) (0 .
3b10: 2d 32 29 29 0a 20 20 20 20 29 0a 45 6e 64 3a 0a -2)). ).End:.
3b20: 5b 54 48 45 4e 5d 0a [THEN].