From ed424fa0a2de4d6c41d079fa0565d0efe5487a60 Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Sun, 1 Oct 2023 09:51:27 +0200 Subject: [PATCH] Updated documentation --- docs/Reticulum Manual.epub | Bin 2491081 -> 2491405 bytes docs/Reticulum Manual.pdf | Bin 2404589 -> 2405552 bytes docs/manual/_sources/interfaces.rst.txt | 26 ++++++++++++++++++------ docs/manual/index.html | 2 +- docs/manual/interfaces.html | 26 +++++++++++++++++------- docs/manual/objects.inv | Bin 2456 -> 2463 bytes docs/manual/searchindex.js | 2 +- docs/source/interfaces.rst | 26 ++++++++++++++++++------ 8 files changed, 61 insertions(+), 21 deletions(-) diff --git a/docs/Reticulum Manual.epub b/docs/Reticulum Manual.epub index f041939d029122749e6a37406437f05535895e81..fa0a19ada2f3fb4550cf64e3dbcb475dc01b0ce4 100644 GIT binary patch delta 24408 zcmV(~K+nI)g_r@2h?oJe9svktPC-`?iInA&CIKdYJI-R*{tg9tYk{`;F1;8OHIfKZ zBui3W{(VP_Wyf0*IXMJ2=beY!%xL7tXH2d|R+zY2Vw zf^6bhVl=4)HM@YjN`eij)&c^i%Fv`)*vgM& zK5QMxdJ)#gJ%wcP;CZtW98IaC?JlOc)(>`qPVHaokg{H{D0Sl?ZMNIKv(cz1Hx&aCR|@ zM&n<-6M1LrwTF1{czOtlcMCdbj!uL+XlC%^$dBT;=yf`Yr*ZsmdoH!L)z+7f@uf6> z7`K~~lsPb^ot7BtNKDBUNbPo+(8XvM>|_xIPeJ?%2djZKQ~DVmuq6v;D)@w7!eyP6 zpVnhUC?R~h(ps7OuR893)2G6l zF&ITnwYi_$CsAd;h1X}$ra+f(Nb){`mb}ELvkeo4(Y`D|IAG&Zpt0t@!#A?98NPyi zyo@wbr7(myxxrfxTH(`Wq8qPA(GcGAbzVG#_i}}o04;~`UQc;ETjHZ1mbsz2SSACQ zqv(_=RY_B<8q4tzTzrZ%H05f4$?b%)A-vILo=HTJPlf=`62)RemSCM&VifYa^ll*0 zm#FRd73?8du;^fu5+>Ag7BFkyqa611VKaIKG&u#a0@%v8O7JwW>x=uv;hT@^r!%I~ zJ0E*ur{qxP^Cf17{Q9n6&S;f&svJOiJtft{U+0XYQ%=Ukkg_+9PeCPrmz5nt8l94~ z7zP@jfp&TG@;Bg|&H~>^yA&!{%Srr+qK*yxQO`cJnoIDoNAG%ejcOk|=iGp;Ur_v% z8(^+^FBi^`qc!0oa9M5d+%;+84RienzGWYO;2wWqk8ax^Z=0WPo1br+KbZUVw)y3@ z`Ga%Aa}jul)Zh)O{*s$Udu=}E71rC%zwacyF4zcmIgnAGgMbKVR2@^-PkKM&ZW;=V);7=chkDgx>4+ABTg%sqGwC>?gzY z*mPDWm{PcxEHFAwsybw{$7DEVbQWUlw? z!*TIni{Eel+K146zIEeI+(2oC{lk4k!_1=o$AkJW>`Q;gf&2D7@kzo;Ce{`8Hz zAVK{Pd&018-7t59Z8XJi978J~DrhTBypIPo^vUbd>nd9Z2iEbYI?&@fxKBF*9}0mF z_XqxSIG z8L~Xpi~4`iD~;J{VN40)RDc*EKEEH4MgdsgmrIgp7Q-R`i_Hz&Np0AUxM3x>vA}jJ z%SIAnd2ZNXTM+94fX4+<^8*~d|=ghPc-$dXW%kf>a=#r)D5$o|SW+mu`zI92S zsYi5cBdsml8MkaR%eG%yR>GSKcoWI?YETiEQ?<|sx_|_LU&2XLZQ)wYB4J_I3OLxr9pd;L!-+zC|GQ}Vlwq!kW#IgHK z4uk=Oz8gd#X>KCjdlI}W4POD zU@u(OWn1@2^pv=3gI^#^-q>iszku5uBDgm@F1-oxov@>B*bZC`;CAFbq2HBx=Z6sG zjWd-05HqrlGGaZfNDvq%P72d@%1x`IiRypGIgv-Zi`K4RPfHB5h1|9smbTU5L}}xU zD|@4Q8vT=It8Le0klCwzv3{tkzxE6Bwe6IYz=xuYa%6vX zY!rsXE6{=b2$`O?zCV+sss&7Rvv5s*hmC8fM!0J`Vy>&2QMy+9EMP%JQeIY{#mb_B z{ytv>)UzH*n)UJx>?|r!#jFRXnae zrIn|8T49IWla!_&j=LfEND?Hdrcyz|N^7#AsL6&1!Fe9~NkmOcGPks<4kUjnupvTZ zp3iQ_Bhxs^dOT8x5%tyZ6fx6r(|AD=Hu1Zsre`{}X*;IMXeXkA8jj`BF3Ezrq4hb6 zela~~dgkgE*6l@QT^&%=Lc@tX;EzQfX1R5fhwi)8PEESJFl`6iw6R&w3D}O3lzsPk zLhSpuY!!vQsDhZ=j|=;fQb2!h#rFj0p|kyKzU2gOs|6VG-%*}e4{vEk*0|N*ViqUA z6F2G#R$@jf7qCnrbp|b4#Y8o7BB?>y%wkEO@}ykcEY~|P-OSYj;PZ&BRoiFw)R;u^ zaUv-&!4kn+Ew2@{RTBy<3B1)(T24rvOuAY2^mfuba$TPilYFl(%8P#!gkXGRQ`;m= zH=O!-d=kqo)_CevqRu!$sKAP<*sC^9R#?@h8;Mfm1R)7aI%>SksD7D^M166B(1s-y zn=-CUb8(ycWTKonK}f@jEQ$E$zF{d)9pHLOX&!PS+B70PAw6}vqTM|qm5ErYgV`6g>={c@rHmv`S>8q&eOB!o--mv< z-q=&45cSANa>M#-lZfzNJAJ?l#z7XRqB4cBUL zwBd`NexaVdYIEK|7O#T z2X#JCm7F59W_`f+OP(;5uej*n+Pjv9St~3I8=EbRMa_S4D!F#KRbP*Z8>UB6*85zQG-@*wm0U&oyg4&n9`jrU%|aD-S)bY)(X_ zGnRi?*}RC>>pY}hIWxDuxrzVcCIq*#xvG9kdQo$7+7;-|K~E}JnUQZ-z>?$kMARW; z$@NTzu%IEAly&s&^93x!p;sHW>;KR)X^@5kx2h$VIcI$SqfJum*-5F6$+SDneOk9I zRJn#O6Rv#sCCZ91VzF{_EvR5o?6qJms;__l6jbWH@>En2V}u@j$YVZzC%*MLV!@f= zN^7I`qA;os21Elw2JX5ytpwG1IT{576azx<{Yc#>vgekH5?Ia+@4AzsGl86nf?*=L zasQKkq16>&Q{xU(e9Ow_rqfnS5+RQJ6Uo)ZE55`TvZ;e%EF##|L=%<5MDkiqwJCpp zLqn3*=U7$qd%&)w+?EfxX}#1QqJo%6ilAyXSzd;_Wxce@NmjsAO(DzcZ|lOQfrH;u zQAJEfGIF#$)4_+e&2%!wsnN|eQ9l3DblMf^9x=B+TA9+=9kFb65|zY6QnQ`sS>sNn ze(Z-XGq}A%sf2PSs)vc}PWABKC<%WZ#=0P)T9`;K?mb@I7e{PJVw5NI;^JrxNp!J9 z%`lO?z{0UE0?Gq4jpY?)b+LdlkiGkHX|~$szIL?}^}tj%=}obHbra28qddh_!VaRu z)x{FEz*JJ^R9e6!Ql$Yjam4X|Dtlv?#>6O0%na(Hh$H<}Qp)^w{qSHEVU7f@ibSPmHqE=>%kxeG_Nqd#j>OL{plcC zJZAtBwV@LM-nOlwsECFQ&-&d8iad>|8>W)FVY7rkI(bi=fv6wO5J$*9C)9u9{lngT zT}rTv%KV<3Tqs(Q_Vo;LWbA7ay=1E*qcH1QSV&L&fRGW=r^0lRQrO#??rAUCff-{@ zWmfOl{IP1b$kD25mWY4R3S@RYlUB5yG0OCcyW*7X(?J^6GfAy_OGCPbS@ZERAFfL~ zim{6t;S8xvwS%vvsABX$BS@;x&q?I^o>CHL5dNaJq!>R?1Ck2u%3DR+p%Z3AF=~*= zbRa3sZfN)}Gb=jmfEiH?8zd(k$R->qu0|}YV=DUJy%H?tjf;Qfn<5NIJvxwFZJLq) z%h|lBmd7)a#%zwR-*X-&m0>%nO)BR12B}2{vS*1_tSceST(%?g4o= zn=$VE@O$Ev`TBo5VwJ8oAQ|~UQb1fr9aj>OQ6KtI+bu--_(8_;fo$?Np1Xi4&o6}d z3*jXuHH^5lXD=&ziZpO!mJ}4l(jr~t#VVu9kv|c}+n6hkbQ@{OVDN4{{LtBw&+o6T z%{>uZE8g4$LA2wu&Ior)>Fy|HzWmNeW$O*dM(N1DB%y!N_kg$$XLk=rv#!Ho9Z@?w zqTVyD*F4~cie7%50%VeOFmF5DKK|%|<%pTp;DHa6VDjtU-F^RYcX2hpIKS@$tZ83^ z5WY%+SXxR~Q6Bj7JSB6=R1o!OHfQ5NwEVCC?gO~fod!J^{T;-K?ajsBISJiGK>U8F z-?=gO*ad$`VCl%d|4`lLSIDu^hFV*b>@z1jV%}3?U2&@yQ&;SW8VGd(;$-^8kJ-Pk z%)=ZNb~TWokU*SC|Lf}ShwK0C1FEvDjx~ZB1Cvp1#(L`W$E(ZvxATW@H&=IGAHVg$ z*yct97|4?$;zD9VJU0kT_J|wE(zFH^&?rNM>MDPI&)qnl^R&S|@@;%*fCBM?c^zSy zvk+Epy6OdSV_gFd=oZY&2U(Jbo|_TBKSI%k1}1zf4I$5-NH%BU!H?GcaRMJ2pg@aY z-bz>|%>CjmBWXXibz@!w56BkGdkKYqzOvXK9k;Fl2Q&=kt%NM<53RDT0S1)J5TRsv z%ZPsyp4*Sif04J|T3^G5Iw(j%=?oFtrU;_QHP$cZ#)SqZP&6k9MH57>-+O^VCmN_g zRI@o)DoIz{<7;7*IHvto}af53I7S0R}V;CZT^ypTb_K zxM2+>`0gu0y*#@CWkSE7A+R=XZqW$jymWs~Bo~c#WGho!H@fUjPSz3mbVuZS3Q0TH z8j=7}^?*jfJV`)aW2W8bJejx2+SlMZYPe8m1lcMb%mW2{9?c_gdCILUofmqyPvTC8 z8vIbVAmkaJmThAwBCB$x8Xef1Utotzjc))14dy8T)6-uFt3d_S3ntxvee|%mirjy8 zv=K)KBn&3eKToL^v*yFk%Nd>53y4i88k|7Uj1W>SWpf+ue$K*jnH)}6#GmsOKz@p% zFYcXAHNFFoK_iT^<8!8dEd&Wf9ZVwmtGkQY-}n5y(e0(d!@DKYkzic|5Q-RtP`kf5zrO1Q zZev*k3@8>%!uXVgM$fBORNQ~81`rS>m~8P0=?SScY_6{Z2}GT-Y?`eioEh;5jg5AB zl}X8-Z@eRVsh+QcK)0MaC=itoXpk{NHS$SF`PjMn3Rr<1ZGC7k0>v@Lo+itTD&zNn z%z*|SP!X8)>s;AobWNhXN5X~^bxM$n)WKwEFZF9cpGor8%R=LO-gkfQG{}Kc!6b2S zeEQ!64!xNhK|r=sXDoT;Q!RZ#8|@9uVbC2b)F=pb*%q&Q3AM$HsC!VFAVj3$YZ@Fx z_lgF{TWaf+joN(-3rW|zBKTGikTpU z=3iG=_vbg)|GwIU^W}g1;_>^;FnO074QL>6CJ5=qis9yJ{&jYKVY(tWENh?vT{A&w zx6Oy{s{l2yfS{QmP!$ytxh{*a`Z01TJzc9uz*0BAf#Ef zFJ+vnva10F)W!s%y11m@oG{>zPtOy>2OSH>b~hTxK(tH{q9uQf<}_SHdFaoVk1fgeG3{2Se%Gk880SQ#j6rplx=z9EVyj}>K#x?MOikTu*OflIe>nJ0= zoCe%9OW;ET7O0mgLcL_fP5kJ^=;l{JSR2;B0?K8ITy?6lef3gyZJESya6rFIk;lP` z6KY-%r9B;sDoB639I0c2WUbB=dm^mAQ*aw%Q^((iASIJVyo>p(H6eU4IwbUuWb7I zSv9Je8a#hWYjVQ|%=deS5Wrn=>y%Y{?1*XzbqwZmssBupjGAt2CDPHxx&|E7D41Ic zE{n_P(!z$UG_8RpN|)gPeKDbr!JvXOGz?4uB64-FPD4IV>3{mEp6|S9z@7nEq+H|2 zk^2SRcu(g)ZP} zT|*y&JjcTULWJq&^czB&08t6YfC?eRHupQ%tdh7-OsBuaMh62xdDQAqgB=PQgidpPe-lLy7il4R zi#vY}ZlH1;RF2to^h|yydb>vrdLVl+4*;-EF(I!1HqWBD>8lTr8~Rcw21%5Mm;LO%1JCGz`j(nIIeT5cAN%j_B3P zX$JwK)&UKJdBEWI;p^ky_Xf`gHi(WY;~IZtK;vK%{l|v)(VAef)}|Rqb3DYP`_IEZ zxk~E>dkUav9ND)m6`zu8{c^H4z*!h-rVAs)ZP?*{YodBy&K+q{|UP(Xi1 z0aoQY8IY`ahABV<5%N`a)l?8GH^D4u9PD7f_=SG*1 z0NGLPL<14%63mMXeCk|Ir207R^A7gCI}L0gTrlr5RMY0)NZ#tvU{?gR%}_E2@;1(& z#n@oFEBe_w;&d=fcQ8nIMeQ6WO0rg+1yNyv2Esf_(Qj8&lF4^P($#VdHIby`eypFE zGgBWo=Hx2k7|I-k@a~LUy_`Cum#=zbs8lc+XU-qLeYw87yqe8#dw@D>+SeciItKHQ z#%ATb&XZsrB3zxvZf0~VbcL8xf%R14$47LCT|loPV9%{5AbZR=UW?2L~hkOYV!jRHuWL z*44Y=aJ^n1tzRAqxg5TD`}Xbd9_tKjrFX2V=UX*-RxM23ljGw*hN4n~@c|*D6{8tG zz<*=GG$rYZO2zc)pw^4z&43I;W=RWnI=JI(T?wfNBo(D*B~)JXOs`HecE?ken8I&_ zmt1q2Cn}{mJAH9AJXhrS=*8Q21m#!Ify|MQl&EFO7SIoN z#Kq9aX9d(;=WKk^6I?eQ^d$LTqZ;#|1~ zkLjzIC$C=5cWW>e)n;C6ElStyAFt;pFJAB5Y^}5?T$A(p%aqO2SJ)&$O&S_i8h_12 zw()b4@jH^{RDsUo4C2TQEdImHwWL+WWK*YG58ECPDL|hF1?A;dMPj5-EY)0;glDG% z>6IZVtuiDEl_4pNGQi8D)r((h3{*K7RpXl#SH!+ZC@&Pzf>cu6@r;p;sL7h^6`^@f z^ooJ%gN7E=2!hO#u?$`~sLPB=kbj}fNCW#Dnb$neh!ar}AqgxbmWv7jmXZQkt$4X4 zT>l2#14O10Ugs6n2xc(dJ2;F)EZX+rEyeQ1(P&sfM}ooBBGr>wOF{pjML7 zG7w|Vl3KA01py`jW+2F%k#E3^Ac|owD42h=Au0hKPpm(H>A3Vva)V5Q3*g)``8F$ba_6Bfgk}l2@jS=j!xEWc>F0y9D{d(YntAs+7=OW{ccgKV6?on`MRzrGPfuUm zyQ+j$2k^R}y=h)&pa~eBLcEL0YxMwq@}=XFZ=M@hRZ|J3&T6WUcrY$$)fUX5s{(rJ z8mJs3~7!|Yc7&f8j%<$nZ6hkJ=cRV?KT&^6~T zlM*aE%n=1te3;e-8#5MR-7O#H?tm~`SzsE(AR8?~(!S7cb zoT)F7DUXW_Zj3`LKNsQ_46|7yNFZm95Es3k*QKtLye=t(&EHIke8$rL9BWm>ex};! zl_*17F-7v!kbfUE5dFmR#;g1A-8%7h#RKwRqLyT~QJVccmV4qL1aRn97JOMt8wF=n zQ{zionhSoT7Pv>(<(CLeHZaQGN8y9nvX85 zBR>G%j}70lAcaYVLinkSc}%wK8JH2zcjl99*|xrI$%5a5F;h(9=>r~ABzWEc*6acq zWM&v-3JmfE8NJU-8%P)L35b;PxvPq2-J}xtIf#+CVe1GU(}^3QoANEgBs44 zpJ6?65!UNvB|IQs1{+Xbnt@grRko#mbpHWJw==$Fn}n97fL=0laE8I0*%bfDHsnLd zi6+VxE#Vn}xlGMv^BfJ_g}R^*63n%1^THRF(0{*Oen5!UAZbZUWe#rxGj!vLvGfm} zkv$i{6k+C$0iumL`bDpFNx{+;ExE!p6YTCa<+*i{UirwCuYr5~b5kRlXp+%%<&%fO zvc&1I9FsT-mS{v#>|we~x0}a3X``zRE>YJN!u!`}NQh>pAqatHMBXG*&>A@!@%fW} zwtqGcq0{u1Y1mwGA;IP-H}6wJhK*H7jyCD-F&#}|z7<4j+4c$D2SbMlEsMB9*BmzV z_KbWm{tg9lVG7Xz8*>0UP|>B`XUjS_2~uwerY($4+$rtDC&}@Hh)GS|90#?Lc(pR!&DS=UZO$t4DTl0CeUl8HSN1c$O~y$A2wG zR2kf6JLe@+?X?fL)BcQ9pTO+#)<;JM=U?psSOMz_6PV7s+QY9aL+m|o+#a^I_S2>} zaEW(L+;%jdU93Y|>)^N#oEel`%wER%2TXoag^-sg)7XeQtxW!e$q@KvGBs%vCij7# z<{Yn>b?_&K8XLdPwnqHhdGrxCu74`Yg`^>{@mJ)txTdl3oka<-oi&M!Tk(p8s8cA% z#=PYahzFQ|Ue0E*G3kAB@+#>ffB4VQ$t$uCd^a(=3Q~!=zYVoHh#u+PrH+j9COLD zCGLnGxbSu6cz^e5*YhMjJ-nxUvtu=y?aj8@krE#Xy-$L9>)9qdo311`bPC0v0O#AER~rBxf*& z-O?{^&OTFiXL0QL$7178KNc>{69ZGS|JC3`@GA*bfeW{}W=nHM_J7)QV&G$5zht_ZgYtL=9mXXbAVgayx;Ikz!57eT3aN9?jj-U7LlQNM@6TNsC#XwN0ZlMW@H1>-)| zN*0V|bDG|o#J~A?>%vhYfSS0D&ubInVS;he5KMmk=iVgacjJA1u+?z<%zv0(lIB>Z zk6G^^9A1B!9bLCcyMGZ5kZ;9*?MZToKP2q=N?|lUhaeQHs*0ArY9+%96{8{YU`(;K zaW6CaklgOrc(bF}zL`BqeIA}R?j-ou>EvEyw`sf`#kP&?RpM)wGG6r~xNB=q@_#nL z$WCJ0NMHPfCDf z_deF$>X_0Qfn$HLV_jfQ45~Gq!(LVGj64-iF)Gv5ufb-f9+`qAc^J|Spc}fa$Ahik z!3Z}EX%5XAMYSUz)CvjPg3CX z#rTDOO;sI*^JP?4s(!ZD)QkNmd*OlqWfrCC+1`a#mqlLId*M9KYL(H$mpZPO&ti3< z=W3t-n1njhwT_bgY91x(+2Qm72J^=`SD7lKIxoF}Ugqz!hb%^y>w1L=s zJgxGkoPVnY?L$pN@JFbXs)WK2lA~vndt0YSgPdN zURAFWRV|gGz0|9M)>Nyj`e0sFd*QNFi)VXhRUOrOeo(B=Q(9m(rSJar;@K1RB>L*X z1J%OkHiP1f%zzJ~!}ETf`OrF*9T9LC-Y%bf6NFO788 zc`)QvRBB%9JPURFY;WEo!M=7#KrcP5ibx)5Ki-!CpB~`5lc&qWjW|SK1y75U9~Hr* zNq?F&teOIJP=!r}XVWNKh3|A0S7E*gg&3+Zs=`dwmwEXP&$RPS!YGS_C`t0mDqQ7F zSm$A?ukb02RL_@Ty;Lc^5MtQNXvGiBmw8^PY4~=j!mLSWs^qzJRqJeC2WBQ3tH_i5 zTq_xRPP?9$Dymg@sq1CfZb4UJnwKif%YTrNp$b(NGa$~ z(a_br)H8)ucmNFNO<5B1B&#sGh;$Oo5`5hbKM4TKbA3V2s;ek1=zEJAkqnLHV1Lw7 zRRyNI@FrlQsNCYdqer7~sn3`DiMmipm|v(8tPlsV%rEUJR}AeLc2cGU8$3n_v{)!C zwjDm;;V0oTqDiAL$@6z10T!!y8d=0AGQ?|hv#cyiEN$A^rp)y}vwvD_W<)oGRCOHE zzkPad@8p|CCo#bL%DiC_{~$U6^M5aDL8*GFtAH@Ni4p?>pTeT1&Rf#jL|J&sqpYKo z=k!5KQbbWl?%cay5gy_=36_L{O{V93UV^+ifd~+-<^V09x;ye9%L!Wq=9t|cH=V=j zn~O(GTtB~jGYwDcFwW`8EUyKHL1c?2<1I!BJss$5QASl=HuIVW2owE|@P8z4XoVF} z{N-O?ydfMdX(}NXp@&kvZ!|qlN0}&kJ*@In1r@OgK((SB%$Lk8RIG^tW^@WlWnrN( z?B@{;g2l>n6ChkO!;fF|cRGyb1l1}ia)L3IQ0bJ=zWjn&iO?n3`+kzoc?+~*T^Ufu zAPu5gI@|(Mm(~zetEyJ%B!9eIYGOClGH;R?m}}pdtw7dMlhn+Hk~F9NfD63-$q|Of zr9m4B{j2xwTLj%Q%BqAI58=Vkqx5l6D#2HWDL(Sf5BE+!BX*}-8jcllB{~=ymDp?e z)}2F3TvIbtFfi7sIjMx0CP5x7fOuz~;#3G9b8U zf;9WHt_{A|vidWFKR27`-F)xlZP~a9`ZEa3|JIdeDFI3YCv=qq%i@+5Y*?ra<9M|k za#)c<8Wzh{r9nC0KYxEkxIa38oc#(o)AIIzBlb{)r!TANrcDr-&hgNhz9Dqz#j?M% zaR^08l@nbggw7UIX>TMfnc7D;_l_iuN_@4&Dl<-CZ`_`F^2WQnOrq?;29%y`pcGXv z566M=8fr})b}$$_U@lfQx(1?-!ou!cUCmWdGq;GCb%34g^M5P{yC$t?^vun3XSW4T z-P{H?4;=40U>bgNkK*KX!D?JoD$Dmol>xq+AulJN$O3U+F9f<>@;JZlg2znPvX-b=Se=pg8@Xh74Syhw@Rakc&y7xG{JIO zyd}V?qXI*x0e>d6Bd$XFSty7%vUF=!%WKTf%IhM0I;R9e+2;9OhRYLz8rF)+xv2rdt`b z$D1uI)q5vjJ~=)<9@%(QN4FjMD{tgMQF35R!=90-kBaR!B0bbG5l@faY_JgVO>3N! zSU0{65naAdgN%bHn_D}Ojw2YdsMS^1qPD(9T2VZ`R5P$ikn)ADG>l9q65o_LEXxEY za|c>%e1FwZd9H}Ngnu6z&=USsOd4?&1nhkf8A-~?qDf$HksO7bBVQy~&h9Yx z-~_ClpInf|dPys(!WkK!P#4K`p5+Zp(lT0*+JEVMC_l5GtnMG?q;)3|=mz&TVWWz7 z$rct_%WS^YJd!oOtZS+qzy|A<;UQHVM0M+TVy$-5x>8~=26h>LFHV54Y_bfS&8-%~ z*0i|h$nw{UUW3~XpeCDNT_|>{unR4xGr7!?Jc`*1$ZMqCZ*u-@Le+Cpg5W~V(}Oon zNq=?_EsxRdpj7ZasOkU`up)GnpP~8ux~O~Y37kM<*OA&y=wpJO9#KT|chR|;hTmE5 zVyx;2V@8B(j0F?Y=G2X;oi%J z9$pcC7}N^8sMRXfl}-z|J!3-Stj8D$w|^Y+fBo?_C0g7crUcPkA6^Hd5mwHG8yMcm zBhRqB)xaBUw%6jXAf5}?B4HkxS}m_LER@4)VBwj%?C?k9?haaP0W;-cj5`ciCmyj5 z2L~qV+7nuJ^o}?&dNv1bd)9DI*PQG$DL{KTF9wA^WZVE^22U|bw;IGCoq_)X7? z-}U474_C9_Yto9p)W`YdQS|=HDt}imetZ18ihn1^JLzu;u?%BHAsn8>;-wCFwYa+34f-x+%J@vWwPp6Se{u$dR!yX-$2fXwMitPlsU(@5e|ev znlXSlnpc@o?TRW@HwCSWzzOuO{$G_YPy&wA-NR6V)Dak8Hng5D!Ed4B+TY=LGrXv5Zg zI8X;n=*_@1N5G>p(Qv}c^HM1&{)SFON3OoFQm~ z;m>q&Lj`8Bck*D$|Jw{VGxjZguOsW0%|1`quYuI1WaS(LGk=}M!u4(F*8|${Kn@1s zv+z)M_2kJYoV}gVJKLA~y7bp$rGvyo$KRA^Xc9lFIr!wjVm9b%bPdDOWC+*X&>z0H{K4mW=J2d>T77SV$WPl zlbx?=vPQET&}7#wfHh6a#9r8QMq-4du8Bf9vrE?2`hN_k;SUHM4e6AX7`tso)SzAp z435`f2{L1nMPm04vH4=d6Kms>4bE5 zQr)w;z<*YBcttOg5ft^dRw`t~N97-zX8Bh-wSW2S;aC3$da%>i-SXB<2#CoM1zQ3m zXB@D^DJjico=GIF)ww0Jnw~=N{%$pHS@ONoxMfLyyvDsgfpvDaj4vaOEq|JHN07R@qQMbO`S;VGe)7i5t;vr4 zb=)LDl`m=xv=0}1Ogdqc#VN^~lx+RCtR`Z86USzEl5X#GRh=zp4B#(bT5nigZP0ijhPFX0xn+5{qwd8>087A4s*hKEUwipOmvyem~Ajx>zB(FHMg z%l+Jlhn5Fv-okIDv_?FVJM+Aa2A`d^jRyyrx?nwv{k9*7(@qG=qSxt46v$XtrXbB6 zn0N)mIgSuUsZ26*s^H<*RccjBlr|uAo_`|Gnxs%cJIu?JlbHAro6NWvl*t})>Tb=v zkM-1RMsPkkIw2TQZK>^VN|VbG}y3Y-&_tPV1)>^7gJ;PPKp{y`HNfzkmGPF?Qu8yAe3a& zcD(?VO=m(-&1b8KJ(`_V6F(i7rbg){LBb?5o#zopiA@S#yA9r17bb2qvJG3VB0KpO z8$?jBU16M~dUvuhhp}G+{MmY~t$&ZAox0zC>8;_P(TRlvqKqU$N|%X+oPeO?llyof z!)@ijBZh-OyB{iLbVVib%}oS)>;9Mlw3v?{yZf_5(AI}0#3y?)zSX*qj*q9_zwMKJ zs1P7jxM)TgJrp?=uHB)V(EysMtCKV!P)?scaXuuN8h<@H)~T;nZmf?q&wplg$PxQO zz1mubRuezkI2oO_JyYgnKJ?oRYL;k-l8z45ji7cTmSSwp6oGfk)^>_sZixC;Rg>Bz zR19k;fndXD#i6qY*`<`sx)3_o7N05Ij1IJ5b-pZY3X(mA~!u%h_2p`U>BPCfb(+#J+Dyr zRjh&G+M)pOGp5{^;@11N^srRZK23Viw#z5KB8eIu8GRY+>%{n=g#UzSgSV z{z^D-DF*Q4F#aYDKR*uBU%nU#CtUFhH(%1@ZL2YzTu|`DRexI1ye7VU ziH;I6wr?Gup$`(&7}EEC_}h!;-+#Y9ZkEw2ZjsNzN81<&N|fiSM4bca5~-S%>e2w# zZ-+QCA)^=U_9)F86y}gt^5gR#CPv9XF|?}3fg@JGsDD}=x9~Ll#bBG?@}#E>hB}|W|ohHl%hzqG~A1}9CH@u+&_|DDf26x5}}jrb$Dzm#l}4y)?W{9 z(p!VdNPlgat1TqVY4@^CpSr}nTzJ-DfoY+=x%PBPa8Pe=oy#;H`IiK;e z&#(;`Zqsq2u=^4p0KN6_;cd*eiuJthCYwChvDu7@xNfhthMH#w39PGDtpsJ2w31}S zoiyYqvX%AYNa!H&UYHoi2%LIsRuIRN?i>XHCx1kPmudL(hR9D~C$ndcHk11Wfs$v( z^FlN>^Qmg)OSG=Vuq35ool7zS9mF4Jr;XW00{;7B0LgkjzAyfNzWu`4!Lq+u)WrLx z4PAC3L4&V%nf!ptFr=8On;sDx7>CD44@P1dpsSg#Z&5M5sU`;}7?rxdp_xXnWqCG& z7JpTp7q?sKcxKcFj$G(MZRf{$s>6-n&<6v&*ft#UlR^E48Mb(qdm%{{6}TQIblwT% ziawp|S`jE>wBqC6IrGMSOv#z_;MFFpLExjNK29LPk3_NEWvz-+JAduc> zZC+|_yCIs2gL}Y-0r>mFg|V9Z!h^rHsegLhgG1`^)Rmey^~lQ1vp1(hljwc!9?3A>&1%}zKkWq+py zfBX8o-eS>zN_wPCf*vI6lAVV3#7(ye;hGES?W1ekLTI<%I0i$k-Q8QG!LaedDx_;} z7bSSABT6_EcU_eHViQ-pWdLnRc_2s=g%>1}RlNdk$&m%DOov{6?%P){Py(0DlZKsB zw~goIh01u?gT0g2^!pF^{Wfu(c7Gt(t}N(o+AF%6wc%nBb!7SJJT|?iD=u$pYI-c1 zqvZw=gKrh#GwOJcil#)N#k~+}zJp~w)`1h;^yU4k62NNii#+_(+9X?gjDNC8{){%s z_*qI>5n>W4k;BMQ*hg-$lH+UIy0VtHzlP{{IkJ@c3J=_3AzRkbwsU^*@_&ctK8C^r zT8%qdO@nn^++|Q4&6@!5#a)6e?h8q9m&Jo6SRlcj;O-J+ad%rh32wpNJ-9n8!6is= zm)rNQ{_oY@O#P~RX1c3udOl27SNC&dF%^@X1QY+gz9TJLKonLSjjI(+1->VXnVx>J-AF z=A=P0kJw6BoXJzo=Ob%QlzO#qvYyorxgrbxp%ss6$a&{AK#Jq!Mq|g}o0z5ZH&Z#i z+CiV`E8dasfeS;2+U7CBtlslc8H@Vy9uDN%Z2ao5-@K2kxQ>gxskEq<)|C4NE35a* zrZ+TMbcZBthCrUT#1&TH^R}Pm6XaG)-t^;zp7~9Ox~zM(qo8hvB#YtW?qZp{MVW!#2ArOfHbOBH!)~vFy`sHj@9Rp{b7eFHAZx{o8c)t zV>8-965WjxF&-kSWt&Trq4Ot~OzjB>6*-~R9rB2HnBDc`Lf)3-gKbp0arqvfB8}7A z42YaVTc2hno}tgnQ#idk?6L>f%r&XrPI4sE@A7vP!Xnp%uY+VW5MmDH935@-1KhPhHQ*P|a^IJ$w1U22? zyJU1xx8Z_B)a|;$-s~~+kNz3gaT0{##}ZAfjg>Cj+&f8FRLGZulW(~edH%DQr9`ZQ50JgT^WRE#3=CNL_q zWNB%^&*BtYwFWa`T%>$%UGsj$ez1o9b_);ApqZOX9FOe#mW)P<{1QOmVuTekGlD^w=)zOz0&S2UoeJ7D4p--5>T z=u4r_ELo-K;tZVu?V6fHpVC(Dre!N^ITGA|RA9!;V!yVhhkdHxucFWCJ<0MJfWjJ# zecT6ReK2H0j@EBtH1b;nv;!ejc`sW24~I@%>{S7z|I9_k%bk=u@i_Kib6V~r(#)|U04i$u*o9tzIDT=anS7^-TS84UK)D9;+sCQ#zJpkLky1`)O|kzRwaw zBiuT2?0DvvxMw?{9t?iS)?jOthK0$YNrDM%+MsROOb5y9LC;M?x2 z*?$NVRct0p)1okuVMVoL_0xn!`L<97<39Q#HAjE)|1@HR6hjPg3?fY`7~2}PG%2V# z#o$TX>dnI+7wvpKW;~bdu6)WilvBu&=Q4LpbGnRcQM|g-BI#yX6f*gEVW5HSw2u(dzOV zXxvoXD`x0aWaYuAg8tzLJ3-4r|7hMevT;<(z)EU9Y+W;m`X`22m{LS{sAGw_Lc?^8{AL7^GviAR|i-kc_d1cNEZr>Qa}W<1)po$O@|ZaHe+hi@;p9BbDdUPsOsigVx(85M%#7%PYQPg#Xx*nya%jS-vP%M={{ur#rUU(#x zRCM3xj+@@WJ4c`4Zl^r5|B&<0aKy*~)pRwjM3L@o>}<}e)&*UQETiQnDVTBN{y9Ra z#Y%H1;L0Z;Gv7$VU6EW^O+BGlo2$c_9bw^&Tw5A)p}nB{{dqi}7k~`MpKl!~^jL4PZE6ZjzMwkUE^qbCS*< zR*ppk(L;}p=5FqH`WP5TTGpF$GT)Cg1IY_o@i}O2)V;z&K~mo%?^~U}U9C4954I6z zXYy{%G$dxWlK4m;bUfaA6_v4&<qX!BiIgW#ICi>l&)a%CNwC z9kDw8o7>c&xO47~j&(7HMeGh+@kU&s-QXT%h@odhMopKrs&X{_!(E+o-EF&h6`j0fr{~{v*iUQL@}ZHFgrI2sy`p&}fXKHX(^VhEx24L~H6c%PELuI?!Kx*T>*+l?e%geA&xneFIau zk}kdQD2Nk~VDHoCvm9AsCx@a}kU&CeAx@uJPgCrn#f>M}RW8?Q#!z--^<25ofWL^x zO#6LMbUVR0A!_*qS%Kn>c>SS?+>1cPxP1^vuYEB^W2k+*|cPtyx_m6OZHIXFE{4wBlZOA z1OzUb-*3`9*_~c#%(d5kl)9IQ0^}-TqROPbY0ZsrTEt=RzNo&XzMzW9>HgwUJkLbz zZeNF?L&%}Wb0%dqvi{jC38Kzte8Cl-f6xXYlw$Up>Sl$e0tt*a2}#^)<^&eHR?c*d z^syz>&eSLExWt{rs)#$~SK=GKZ7A>*3P|`P+>8DhJ1 z=nl+&y@>(Iqp;l6-p~69naxP)ec=Z*x@*KYoMZGS`4%HpgdkkeFdOe?Z$ocw?uYzpib1s9dt09&s%bjJ(07jo_2)iCijqJuq;M-%dz8xwQnRgGFH*La)O%QAQ=!{EOtciBh^5$#pxKF=j z?1u*5tj+f8WI3W*LbNi8oGUVG$s3iiVt)*RUXRP{1!A*X%S5Vu48M{@l$pFFhYC-z z%dbyL_Gogp>&#o7Ywz(;@T;vU<_U-|rLe_!I^nKAZZ9J)#o}k2)Fb+fM=v?t&Wlbq3F#P?YS|x33_+)P9cuUZ@O1zF!0XQ@ z9zi?jk-W(qW&EJlR;_W&$(V^zM1aFPo07DHv|INr5%!y746suLe98c}x_v!>|XnNkaPQ9aU(;5^Xtkezr{UtuCw9V|5nX$W$7hD`!oNChrcqU}d()Yf-`%+1B?Hf8u z+j<^!W5SiHs$iNJO_xqUOv!6^A3DVP1%S>Odi;sUrm8IL_H2rLiWI&S>fEQt6uRTA zRC5m8rGZTLnKpXe(c3*|%PAdIohQY=J2z(U-Yvj0hk1PcDWqI$SB6*`I%Q4X!47*g_>le{nR$c^{@bGtG~f-J+a1`N+4z}O<{*;ud*C25 zF^1p%mqb*yCX?fs$M6TrFHAonBFHZH1Mn4V$hqK_;P%n=1gi3!?Y}o8e1$!BA7J*3 zOj3|SoODm7@Ra7(TkC63jnHtR)sWL`;ZlWs>ctfw<6gdy75lE0>`?J5Tm{NyRhay3 zhsG)?kPCc>v@=bJ zaaEcfR)gvTE#Eme+@^>Wpv5HQjE?VCIfBf71x!-)vC7H3X^^7`JK>zTS!x2pBqxiM zI4K4Cx!s!oszzv;`hXC-9h2UNwwhYr&pTg4*J%FXzT_t9=YLqk-jA+b*q<3*f{mn1LI6Px zm+(yI8#Lu(mj0ZWWnE9w z3-l4v$QlNzth~R>a{7|K562V@2990J_8^*JP_9~O?zVlb+r_0^7vakewZkYw!r~Bi zP;@M`)l<(qkm@`35yDAkd|lmajyeG`-O-z|lMS}HXUR6)u|F;@jb_DzzKswqSUSH~ z15KXVy@rXW6CNqJt!kfLM+s=_6x>8 zOQN-Esp63OO+X#^1+4mt=e#egpt9C6OJO)lI9K5uf1BOL9(7C<$eL$4v+e>}l+G#P zr1iHYSuAm#)Y*dBS*MMJ@NfT>AKeztl(teX3?h+7F5pqKbydVvlVI-r-KhQ$X$l)z zMxluJ|Nfq;dBbe?s;ziHPshQqO%ji~!@1*k;{mO3K#G6bo9tKkEA*n?bgJAc(<+Jn zKFh$FGNqFf6y8_4ZD$2X;FBQ8`q3sH(#U~sdaxgV;vutzX1CxJIQo8|EO`HnHDX~{ z$fIYHUta}(%@H34QsB+j^CByi|2deoO?)a;AxtARDew z7eDk~upKGmH!K5P+{5N)dVYzFm0cd#F3#8PD;nj*RXiX(W?E&zKnw+hb+Egxrx35p zuR)?{+*P2!?fdwpSa9mqV|4M}=;2C@Q07{}z290(a|f-_R}5M;XXGVqXMJ*_Xw09- zbVDcQ<~REg@vjmuG!30GeYW07WB` z&r@!Ep<+B_xA=HEp`}g2d>m5pGuAS8@-NKUqv&oD=5OvhpOe(9j<+gK z`y0pqL2MF?e6%s8)73pR7~|NkWR~@M%-%2wp&;lmIy4%Snb!s-JNCjwD`FQ5MTW+_ znnHrSp+^7GyrQlZ3i=TIHWk=}yPaZkZ8faJ0^4lU((VXy#b=LEsfN`p`o9xWoiMVsBKMamMkC4D zbphpC=q`}xHimeg+uKzVSDVbF`+2zY`)ZTbiFW**>c*Bsb{EU6P&V-gS5FZZ{zw&D zmtLooaapOZUC|HJ$fBzQgEP1Ily*C^aW6QL!j&|M^#3L^R<{AM`%9*&_gfQS*x3BJ{_F*bxzmgt|%d^+PP4m=Y!Sj5;kSOhBhpB<3B z>n!{XcmTk7qu&AO0S(enP1w@FLJ%p%x*+Z;6X7@DpbRuG`TUS3KnM4!M9>xm5xEe<_OWR-6~!#nD_1fQ8$0f zifs69H!iH=2Lr$(090)7(w;nWF(357Z#$)-fu4mUn6&J8|GTyt@U;PGd( zt9jD1#mO(F)8^)mr~5roqM}Z6hb=H5Q~{Te^x5vFxoY`t`mpzp`2+8%u}}StD){w9 z%#wKeA-z(oWgz6a(H{`l`DaiKeZF+J+;n*;Hl|SDwEUczh&i;ya;XCIY9(3WZt0|U zkG0SlPmW$s_ouQ{Ma3DZcrKR6u`SI)jxWKPHFMJ6l>s09g*k+6Ayh5@(Kj*XRZ>up zZ?flt&h*=?(YeL)cqz*e_G17301M)ikIr914z!r!qi4g`RPXhA}E4|qYRU9cv`xU#@ z2R)Z+;Q~6xU&z~@ez^+^z>|1}(uAuJ@OCsC!63tip+}kuqd7iCH*s1S!(N!?^;s)a zWwkyPq{CTsDHP&KwC?1=*-<)m7r)5JDK2RgXz}};HJ(mNb-B#>1AdSj3L8c>cQr)v zAPbUjvgLj{99h!rj72kylL#0|ieH`0P>wLg|M-dzKvpiI-4N_UIOCvx>!o^}RV@5& z`uhTY3v3 z1m;FX?Q1%&kqm5hPHS;OCVv&PL`a+|OWh6NmRQ9BA){ zkps)WYubl(Kb-Xg28OK#k6)ExtwMY)j%+Sc&X!S}-Ka$XKzW zS;|TShS_5gHPRx+uetOVf)bFOf}p9XeYy@7Dgyee1KgWpm%dFSzbFFJBgit74Sl1n z<5stc8b4JWRz8>c$J1%Hud=}VIUn~Cwy-~KKa-HSK>Q=LlDY+gIH!B)^}7k}dC#!) zyVaL>btJx~NVUS{Re{uWSmETE$vVu$woZFN^Ne!2#f%?wR2S)7m9Zf+f0$dw>>5{v zL^+)$-`8O{Qx_{$7xoE(!X5&YESsP1GGZp!cki>gBNPJPN6hUzSLkvUc_iK3zU&~` zx=o#tE>4!{#T2s7XYt!6yf(V>GS!6KomU3vQo4p1#eUq#ms{1Ty)Z6z(ZWjArTjd@ z6-E}7_WeF)G~mwe8fzHxg(GWFr?s-0y1OucCgd~HAuqaC&pGY>)tLGXhF%iVfG=@x zDZxU+s3-^3Mdqw~WG6-0eg2;5r_F&~XY5#W?#IH%T}>qLIGcca_C!NujvKF6<~r7gFd}1PiuD)ScA4khcLvSKdse7R zqDEy{VUrlXq3WV4-o7qw$fsRjabOLjbabCeHB*fmb*}6meq*ayjZYAq2SfKP{y^+} z{X&BuUeKVWx1i8}!=FP1??7Dt9dF>@Fvd{#JCH2GDYX3#1V-qF-ra$y;s0hR**%C7 zVI0bT55HRgb-oA5ApC|l-GivK{!g?5SpWbYwBX+(KOg}H09e_Znt8H&TDscVepEm} zBtrV%=*j=P{|NxV|F;?dkRK2LWqSaLB6bi%Z683wh*3luw{{h{;~?&4 z!nrtWH(leQEkVx1!|#K_30K1MZ*YRuWnFoHe}da6^XmQM@VHx_PBA!eu*?YUaAV8< z)LPl$_#kEms8eS72SwyxYhhih-3{+`N;)Ibx*0r#9*z%UU8kk61)N~_hCypYUO2m) zM3dxK??~R;2JJo`Ji+%N@oqtT&B2LK2ki`g9QjfF5eaDSl1(kgQ~p<$+pBRFfA9vDHgO}E8v3q z?oGpjG>M4dCi23q&s~a&Uoc&W7oMPh=z533kHNNZjqD<9bj~RIhFgCeg0!o~w-cXsMEnN^AFsEcJ{i@@CA$@AR z8G}*OR-4T+811V9N(U^N1R87ZJA5k(+u;ky z`}0U66^Ajr=@s63)CwQY6J4^NL}Pf5mwE9R-qQtM3bY!-dp_ogY=w`0SmlQ5VwH|y zPNHL`R2Ah|HCD+OTzrf(lnb?g5_U@27~bSO&!lCMPsadH62)RemSUY)VHAp{^ll*4 z=cwKI1?)aqu;^fu5~kD&7BFkyqa611VLN&OG(85f0@$l>RVjF2*Jt;O!&e{I4<}5e z-+b(eoswgjkLQ>@^6R^PI-%9pscHo2`IyuUf1Q&=$DB-*W6E94?A!|E^G&v^e zavUf*0lnqz%ioA|IthFu?W$C{T213m6m@Li4|?{w)k1=YJ$m1>YgGH#Ip+p!^Mc}Y zVSu^zy}WdW9IOc!fy?T8=e|h`ub7)h@HKn#fqVRcJ-TkczixiGZhpLO{$TFs>*lBH z<`2#d&!xmWqy}$L4VT+pU6d+1!?0q z23^0gabNk*-({NxiQoUihvN$2gCBa2G+mR@PD)yD%^Vf@Q_NL}yO zhvWRe=D*+kwGV;&eCtM^xPih7`-l6G2B}5;j|bIX*q48f*6!Q)*e5Y7k%Pix@zXc% zf~>25*b|0z>js&--bR!E#xb<=p@g=Q*!y@u1E0Jey{^*D`oKE=R0Vom1@~!3;6ows z;r_sXu3Tmzv1))nalyW@->1pDXuIM&>4>j2LfIJGqLhyleAlkXM?&N$a*&jg_9 z{;v2dNmCj;@y;SniEn*zlN8q(KNS{|!oZUKzI4az3_8Ny`Th5YEK>|}VN2E{M;yD) zoqFJ!dI|q?o#bzh&sb@h>$0u;IDCrTjlnOF#&2vi;9tOP4iVg&9TnaL_)geSH*5#425>uapV05hyz@hd z^2Qm;e~1~`gekEeR%E?4OdRK??Sz|FM-zY5jdLQ8b{B43znYd9W(&A&J1A_c!->+y z8Og&vP@gPVcWRg`Db4OhlJ1a1dE-dR)1qyrE5bTsZ=Lz9S^h}rnx@ofUtBau=7x2^ zg&RAo+^F@xqWEzn)#^pe6j;$4RnzF7G+k}GCWFjg>5KJ4W&O2Zn6GW8qy#<`Wt4v- zt7F3;AYP6RN z4yV@2hhQ~FQgX8SCs~IPYviTGuwH-qYUF<5inZ}lTNr8MqTU)xipzTz9QA1AGMz!2 z>kZ}i*f1P}=+V|4E9XYr_P6fT@I{q1lw8ESXR3Y~#vA(~A|73`c3jRctUD%;Ojhxz z@|2XGs%eECa8FX2dN}Te+#^Ylpqfer2`jD1hN31LA_V7o;Kv~~Ey>)%sycs=sKAB@ zk$FD59gj@o#GCO*9Y)kw!&Age$4#OIiP^;Oo|>NNRHp5SDx;l<3Til(N4q2o>IT;5 zF#N^zoavdXpIf&VrFC^cQ40+x@_;`US&(MdO%}NCRy#H6vfQ-2=BAC!dQQN0l%(vt z&thWVzon}%=tUJo+SWT*vZuF`=8^0Al$hjuby0s_oFD|_Bb(aB zK~i(-w^-q+Q;9m`1fc>;s(i27I9YC0n{FgZjT3|XV6b;shZLOR_lRoBM{*xKVvJQ9GON5ewafW3IeZqx;X|jLPtTdnW!6#9Tj3gD-^@cT!d}FzghL#|?G$l!8+fH)ZwjjKu zbjfJaO|?&#pvV-&35rg>-iiukgivB%=qr<94vBGjYPdNLhS%oQyMq1+^T39Ge6R#Pr6-ybrajIN;ZEf%%j_?+~-}pZC z!%b~ZjY8BTBgqZxuc5nEnQyiLJaJQMv5Tr>B!5;i4*kq)ED3ye6Y5!CvLOFQw{5sq zgQE>!{PYX;>}7w`i_{o)dfLsocW$l1D%tHB;Fa$2Pk}l?=;lk3q%_Ezi0V+*Lh3iH zs#5`Vg3!(7Ci!3F%{mW)kbPvrxB3hcmfPdM$eZmpJ*d+HWr9%D*FN*ydK^ZbPxv>R z)*jUPL{)N%(3;f&+b>znRKDV(e{1hr7-p?7H*9RSFcyC`$EoDnsDQKpn z-RiEiGAz}%j-74}X(idoqF!ziJks@YEGm^#gj&91v(4g4fjKljgDox-s1u2*kyfs-W6;+BI|I(Vf?b3G}z&?Kp1XJkoY!YlCuNwdgQ zFIpO9Ggf9)?S7W1X-*}NM&8F^8hYW{s*ckbnqEYu-TL5++bS0@#<%ow3Rf6|y(U&46f8q_c^%&5K0jjA(=+GUK;XZ0x08f4@?6-NMO z+1g|Y*5iA$^<-b`iftDc|6ZR%~j>n&*Z!pJ$W2Ueg0_p{0kORyHT1 z(iwkCtZZI{n@tu_ub7!z-`v=Labtp8*<6*sCB3LQIqeE`=b$GQtjx%_D`3fSdm`$P zvE+ItLs-y&OUf$x_W1&q;n1rL+tq()nKVelfm_v*%bYVl|IsGN_w1xp$7I?a=02_4 z7OGrBmkC$C`x0fv7_nGcUkl1v6niaLi>iO?KRK0puRIl1#2BFmAF_x~--&O14q0$! zxRT1Ky~vHKg8|Wikb%4IO)EilUXDfq0mXpOdp{EQiR`(hq6C(4!@KUJ=u9A|qF|Uv zZruN*Uuby+*wnbg6yLJ6S$EoMNg~8?eynrNa@m`Gl$DK~%R zZ)iZ0>KvN6Xo+SO{ZOv?h$kQqm?O*-4V-HCs9dEBsJT4mNxEG z>c@WQGK1SIlu9UPqI#If?o z)C?2J3oIP#VoiB~rm?)-tS%N%2C{cQF3ncE%-61Vq8^yaCcVkGuWrJbYm_ISO4#c# zc6G5tEijdoIi(gbiBxI;O&oFjpUU1CrV%j;6ETCjDB?&zm6S4nT|Yb+Mfrb4lSCIq zlmb&pDRBNjN5fOgIFS2l4^M3qSRn73q&na$ZamFZy|Vv3YCRaFfac|^K9O&pvcpRx?w7*8|o$e8PBG`)M*-r?{?@_YGJi(AM>;c zUSU^}Oq32&N$GGMJjHxRsV09k2S*Fj+p`BUd~y>YXCNwysl?US&lz3kXLid}Kgh{X znY2fK>f;PXT`}$~kv(zB6veJsrR$TZ3C`p%x_Tr^tF-~1N$8o97hMK^)it-9CkWye z6{$pNa3;H;^U7$}#Cq^Z;Knr6E|Wu2ShSPMqFm~|!K6F>4gzV0b_#!84(at$XCMlM zGsK2tKH8L7m55&`?FXuy{RA*l!FnOM6RMN##2JXH;S6zb>~l>0C*D8o&C;a=yC}`? z$;5@C1<78|5C_G+#^Fo4%JT@bu7!p4#E%6TA$`hC=ZS>9t?8b2kR6yO_Ecugj?Eg& zW{VuH%4Ufetw284GiiSv+Zm%wued8t**+a4UpW?L=KLIouJ0+OZU*5mDocv-12rJ2(5}2ys2w_CMiiq4=}QNa((Hx? z@A9#t!(KBZieZD4qyyPBBl(4hWqCM7|GSrhrMPFYd{cx02}geil50#e@_!jgYI!^( zNyKL6`aS1iTpG6H%A{geZ;()QAbWyn#kvxr-DzXGA(8)eFm zNjNZp=Rk7&{X*9yznNhIVA(KcVwMgPcJkTRUeQyYQc=ANT%Jdf*F7M+W;4c}AAV1q zGGBj3tkTs6q#%DEND7F{u;U^kGU`J=Y`c3XA3w-5K9Eh>#xoW$<@tpWe<8fTq=pd{ z_UvV8Pmum8~}*2c;wXeuPHf1L8iM-93LC&AN_+bwus#h+tLiiR5VreN^ zh1uGlX9<~8rh=$P(>WUl!sUPccOSr=?lkDZ=Hq^?RWS=?N5%ZoB>xx^wn7U#|)Ig{U5a-b^e$4)TWgg}zx2u5! zg#_Xx`d?RnKV1KBA5f)bb*vH87??bAGuBg|KVDtVznwpPyScji`uME}#x^$^z(Af1 z5!Vo7;<@X!$sVzWEKF-)0gW<5sIJ2I+>N3+PZodNBVX-90~ClC%$o?yjD@grlT|N> zwRH_Rpj$BS9i(vFraWSx%_?7A6RKy0}N;yOd9`$J_Wr{al;x&@U>Tj zdUC!ooTr}E|qfCEo-RQDAC0R%0(;boTDJ1O-Ye)h_)dLy@ z^AG`fjhJ?y^Az4DYhQ!wsNq7L5#*?JFwYY3c{Go}<%zb^WS;BYK8ZUWYVbqdf{HNF85G?)hfOizCytOgZOFPJ3%)zQP=DstP=MjRcGFqnVz z{ydRd#F`I3FK2XKFCaFZXmA2WGeStUgw1WZ`#B5CWpX%K5r58C0Qo73zPNWf)%XrT z28}Svj?eM(WDmcE9=OtA26||OkbZd}dC!j!X&bf$rEKCKCX&jzG8o49ZbS|_8Y&MzuTk67XX?J zlLSA{WtK1S^ft0JTxc)?&4o#X-{bmclhfD|D9G07U=qmpxi;8@HMcwn@^LztRPsHn znh7&T-Gwud!qdSdmG5EUOzens*?_{rq>MMcb|#FhTFYl3si%WU4bR7PpDcgfY@PP9 zFAwzt^rb-!G}9?UGkI&`#=nib-J7{JMUZOLkxn(Ai+D53iG?k>l|+z3)IlYcZ;e^K zoZ91-uZ19OsDnu#e|2{;`}>}sH@dwvczCx!IufjF074Oi5Nh`~=ht_=z}1#Dz<^@G zq=`>RVD!9dNyW`-00B{g$q|1alb(OR3o2+6i=L+uYe`k(bk6sBTyV;>}j&ps4{*J$Q)?U0TqEs zy3UndN;f3TdL(Q(QKtkMNF7XG_Cmj|=`)GndRb_E&->1u202hFnACsmjZgoZz@ayD zBM8WG>Wn3?e5$1{XrsM>ISjgEg&GB+F5BW&FQK-W5p@qr6NHE~d`*Lc=w8tP`AVG$ zLONbOJf45PxqkR|dv*6Xf4siE`u^i_et$KafBSCmqFau+)0YN5P%#sP(ERJ_>i+!Z z`rlV|IA6{$9>32FlXri)(SQa5XM&J!tQc;t=3i&$7p5z6!?Fe%&@~f;cB?;hUj?Xv z1q96mA=irU%Ii)q1;!04gAGASRA+)vYE{}9lcRSI)|$@-hXn-61R>4JeJSHqrCkju zpf)B5)x{-!eZqi0IX#aJA9Tza+udj&1JN=;h?XFn(_j&1fj@s=hDJ9ub5zm11|rZi z6NH{&F)(4U_8rQ%BDrSmMG5KVhY{HcEavHF1mcWMw zEKn~~gnCJd8~fpl(ao=%urjQH1(eGax$0DA`|73a+A@jZ;DCOaB9DXRC)B)knDlfk zDktr7q>c@ewK{)O?1`}cPQlg0rjEZ2K~`30id>GWp5g8n_nj9FV4#Pl$W^F16ed{W zz7G7o2Z!D?J^)ZhQ-nGa%OVWCb>{!JPw?KK#zz49X^PNK2^<%fwEu6=<}csb!2nlmnlq*ZsmzKrPhCDhcFE;CKvv02K92=&4H+# zKv!XM;TO8KI3`LBXLV}Q9f^)KV1drUB*X7#>#_w@bMJBp^Xg)9;1`EP!~8Xso-r#o z8lXT?ogw67QKO3d#l2VD!i@$fP*P_I>DY`Q-)j3!w7D;HLkP_8E1SN4R*q_>29Ls; z+^_-j{hogz1aMc}I%U-!JE9sw9fP@C>OYe>rKTHOfpk<`*MNf>1#?TmWpNo@TByki z(;8T!bQuoN7Zdsz3`#gd!@v|EB3JjSH01My{->Yn`Ob?5>=}SX$~Ar*xnI!QgE}Ng zQal_WWm?2$@IBU8Ze0V;0dPopmXIgDbJHJRN zh)OsHR0ttf-|yV8O5#2-o&FXX9Si{FQL94@b|`2NI?eU{I*J}H(n9hUcN*M4 zqZf=ImdqU^=`j-|PaZmw4@BJ-P3E(k7+SMv7?c|`K{n(e=AnZf(W{r!4gy520~!YN zfWhs<*T=u_4W18d5FM4qHOPR*!6f>R4DWxVHNhgSO*4?@c!){&p9Ot#71j;*6hP59 zvTs`|J|)-2_xb&Ma^3MlC4x|&?J=vDOMBdiS_X9mJ~s&;@6C#-0_sSxuZ{>Z77sCx z6O75f8j^JcC?0U3>lL)jNY-Isq- z3eEC5XK2p^Se5H!K(gW?=1GQq92yHPdsq-v7RV9Is|@ow4QM)_8(l&IWJi?~4Mdf^M}JJ|Q`G_Zki!Mx8BIpOLvaZ1f?n39TpLF=D5FB*z|zbH{##(zumggv*#W0eFFJPv)Y@%K@IszL02Y6uj;=G0069$ zsNE%h-S!-J8mHOIY}0z;bb9-ALrb*Hi6rVsDvrPX0sJG;O44Ry(GP7zfZ`7%K>!3P zkN$D~b#n99^b=X>A|D?djPNhHFY;2I4pv%M?}x+ndVREheI(>^`0Cxecf)(EGq9E3 zv#OqN)#O>VFm+FkkAEAAN)5&bgp5{ z9cSxGNIf8_C^ajg@|tIQb(*m|p0dOgej&W%n$tW{Db3mGtD|FVENo}VN+zimGHB>r zq_yU`BF9Is-n}O%zk&{Aj(nsWYg?k4^yQEWF^_+bnsuLDYQJS zHp>D8RY$=4aCiDU`<=c!K4$GWy`)i`E7#yLee?R{&D;5I4W^>n%xkSh>6-oR?fm4` z+nt-Ol@^6-az1~ZvU&Ojn>89JztTf1J6Nw5phF z>U8U2+XEs6=+mH}yxgitj1-Ecnv0U~>~tW#G9;x{hD4z~lN>W+|V$4}mE0&=kz$Cy71er7P4VV!`G0X)8 z^N%(}C7|Pp^#?E=m!3&(kV$X>oLgr9lBD#G!R)Z2Lf0~$m?HUPiUHbx(CFWj$j{XD zCDR&~Cg`2iEL%{ez1II>IjDljA{W5xL+_tLJT!KN=AvYQHt-V2d2US6U_5K81UhjU zROw|lo|I5BCGtC9fo4<;Y+;#hwj@lrQZ*{fwXX?k;%kzB(xUp;mbm27)Q>B*mYc-b z--L$CjKVrfoPi#UZ{!AlRu&3O+o83U$kbN);pD&Gd1wovSpsf6&vE#$L}pm}@!;%= zTZ)2a-n|aSU$E#MXOn%5a<0*0p$@1pWrJwTs) z>A2*Z=f+jlRD!9qn(8ASj7wUz1#{@CfS&qz=R1ZjjnYPzP?RNqMra^o$4EglDiL=~ zx^cw@AtW77nm4*O3*R7L;SD#|_Km&BpJ-vkgup%LX`-3Zp|BVnqD)i6CO4KHS2CJq zW>jg$MbdakbAlFT+rvmeKD&m4pR4&BOvFKcO|;EZZ&d`U}l!S6Y6dNDX5cqfM0c#~~5Zd(D& z#@p&%>`EvDI#XGyMh1we!G9vfL-(Tmk3gCX!2?)BjSS5n^p?l&EqJn37Zho+VWq&d zL&kT1ySeO}sVk}8OR-I#ztnDH6} z8E2{>{B=Vzv+O74sV5KDyeAFUN0-*5&1IMfb!A|w8E&eE%l@O zk3hPe@h#gVv@8Yml9_`u4Cc(H_)oSWA45(wQMPCa&j8G2YA&1SXy7i?1$~fUu4S7S zzOaOU{_XN3LbL`+OIj*(cpI3Z8&8a-f9Qr3zdl1kG&2oB2s9(|CYgfP$kB+;pY*eTwRsGkrngMP=86jmHb=R6pBgf3tU_|M zNpFwoXbSVKAX3Y=Pv|}xIz(t$#1*>cu%WkS-(ZosRrqZ~Ru2$eAK_v>9`a2Y65^_*094BgAxS}#!Q^|ZtI1xormprw9 zF#`FwWA_mfZbKcWqL}j%4WegwKQZx~2L3r-<7HBq-4fU#^i6#%|86J!v5dh{!6A%6 z>_^Qyn5wSOqr*mME`S4|GfyFBh7tpH`?&e}C(AEGs})_c2L}t^koxptLO*`3Bgq;( zhdUDX9JFf}j<~&odd6lLMwZ}Ny7-@ewir=maGUL%mrS+SKHN_GGg5s5v&UN>9T}W| zwFh7YtSd}lI`3)^zpf0i_q=g?*w)%lo8G`B-Z^pG(R_BX4r#4}<34a^P;N1M8RrL> z{Gzjx%OMaCF#o)q&0=HH`{d+J(nbFGpQDpE zWFPnt_!W5JtJ#l;%B80!hSTDcuhlbBRWG(>jQ~Y=Cv^4m*zCol@3$ioFCgIUcPa8< zCvuH94knfytKUnB`@cq#Mu4_Z@J zX?xQMKV&e@+K^m?^3^eV8TJl3y9bDzB`Relg$+Nb+b2sRGf(Pc|IvXpYJ(YuGj5C1vP;JRmOdt-<&Y zLpS%6CoMhd-rMO!5Icg0bz0HO3fKlXEMQYz;MWgV_MsO&?_hYN(pt0_D03-jmQrQ3 z$34ctVd+Z1LWTchw2mL*492iW`pJFS7s~D|jy?5QZ2XzW!X&qUc_2zxFsYe`6plc+SjejlsDHO1(Q`mn-rX$R&#U zJqq5!ILt(Q8Y!N26!{_;_kmWjU@V){^wy;N%_mzIjuHXX1X6rno4^j!ij#(5vg$wf zCK`ChL@QiUM!MDyN_aeJZ-t8#1 zZDg+!U$d0)svp5!TYHlKvk69a65B>Hdy&=!75xnNc4K?%fjxNNS$5mZo}_khmH)e= z@J*Dq7um0v!t7z6y|`(we(fZFa9ivNxt|Pc!yjkhWrin#CI_SG+}y-C7_CmmmzH6YFgJ!V8Uh)k zT`z~?xKkRKAsUaWXMS^10wlZlvF=vKl+FnJgB|Mvb7D|it?3;0s%mHCxp0b6nXY~g zHZ%3e6fDW(kZu6o&}}^)Z2kI0xM@gpXx1pI9r>VENZ2m?s%PV;|I zO9KQH000080QpKmS38hX!Q(0b02s@Yndv8g#fwZy_DYVnC-`;#1 zE}ASo4T2~58D3>+UO(MiG)?*S!NKL_<@EBww5ZMxj=uWptAi^%vnLOIt;%-Rdr~KV z<(!{AK0JJMP?YuFX%L1_7Ai{c3;mj@CJN(4RMo0^y4N=I{l|OZf&XP5W$NkPg;tkk zQ8jyET;z?)>ETPAG>fN+y3n!O=RYQ)&UK@sbia^YOGU+A3CmbJ~ZR>f(UcCkt$Jld99_MLyT(ZKd<`@Fk5| z&7)Y=PY&c;c{0`cyRcH})4jS`rm9{jMSE$MC9SDZSIt3O*L&fjQuC*KXLS=bIzA|u z=NT=qp3-;!dhztJdK`Uqc&Iw~+-6Xmks0tXI(cw>@^H4>fN@bSXKm9Ixf%9<(ZkvC z(ZijGZR@7U%#gF$gILYt6AT#wgAN#lp3I75Y0o0j7h#-6HQ_2w4v^cE`PYAWSw&^3 zD)-FrIgGs*Rt4eFUKZ)R_h87Ys8!tPA`f-)bT96ZU|%~VpqHN1Wh9SuAMeY6PY&?i z>669LMjWEAf+ywakBVT@rfn8~)@_M^IVcupl zRqQLngeojI{ zqaZG_j6g~Y|(rGkH@pU)+BmgYW^#whv zuA;1@?=5OXGBlQhQ7ct{mzeItn}9Dx?H2bPJsO1zeZJUF)rCsK;zCs*g*bpkacNJv zW@yi_lPV+F;4wO&`CMVK-S7bqKM5BRO&W!1QM?NYuvpEL$Ra*nL%bH7W#v(7@1~t? z%2fX|`=`ZbMszbs-6SFX+o$*TPQPh&ngG17%o`T*528~L|FRK(lxh~b4hW;$C^aDP zZ&=heMR&C}-7Gxi-K^u&XY@gLrRYW-yL0bH2osXQzdhW$LEL9kePZUTgBXZZ1p{!WKcOi-g*QMAE4Yj{rlh7ZI|xu3jv<_HXMHKU7yw0Y25$# z4?ATzcz3pU3YxQaV7jMIH_eEvIh=K6@V$=IpBenQ*+lQ+z0n0e^ATa-1pPOX_ zC=Hy@bpb3(I#RG#U zkaK;1o);k3B=wA*xq0sFw!mrH+rZ|~(XIogu?Iwe@rV27IykxDX62 zLI7d8U?sw2n1hs6aiJ5Ux5Dwj69eWpd>v!rdJ`vhmIV|$&6wx7F;6kz`1HqlTFmfZ z0M>08yy5qq&?qb(>#`h8u$&feFW}VO0&`D)159W~T!!?sRA6tU={78uH<+J=*LnCP zrWt${g%#3N(@Kdr^m$tEG%ET84A_ZO80d7e+kjC*oas(Stm(1AfWb}!k~SXYx@H-z zKQN?}orV^a=nwh_Ngkhg^euVxb9c?<^ty}pA=siAC(aDBI)iCx^ZwmR&X@$;aQ6d$ zblk*qm|pc1O_I4;rX1s&Ze@@jZ?>>Z@11`6_~hhdWaCj2-FD=!yph+kk^`d}4wOWF zTyED9>7kyA`11J81`QG4bjmrgbz|EQ*5%tYNI8h|*y@3F9Kkw`T3z)uYHMqx6(!S4 zH3ON%Rld-*hLY)6;+v{~W|=}|?m>%xm9HkM&J|IY@bBvev=@IWDvg*50=7N~k0jw_ z-lovEh>wEL5i%(;w?sK}sRe6cj#-k%8Ij&jD-2daAc|>Hu%0WH2G$`l4m94fouxYV z^cPi60%MVwLzNZ#3XPwivpLK?I00$rC+DQGUeZeHa7KzJ#6?n_XGIH@w2J0`Bz8I* z%Fk>kYleq8>C8z4y0v?ouu{dlWDSe7WmexB9?2?S)-+YE!3JxV;UQHLL``RRVySl1 zx-ud#26j1rFGhf{YV#bMEvyv6+O(MFNb}cRX z(~;VZ>0^R{98pH`yXag^!|$whF;Pu~F(X1X#)1h+bLz&ooiNM`tULkjj(ho+?wGHKk^jITMfKHXL~L73Zl6%EfVIDs@2gtLqgfD1`?jD z%N~6+=I)@w77$Y&#+bu^bz%|gQE*_QZak*dMDK_a!_J^a3m zYB5gyMuaus$yFlSr51yK?2>O>n(nWvr8JC@^rj)-9U|w+auVQX7y~A#0G^u>d3tc{ z_Fh)lHIKwAN(6fUtwTf7v}ZuDY-}eoSLHInfYf0O-7J0X zWMv%ar~_?yAnY(51Yogm!T{LMqy1Wy5l|uttmR@AKw{n5c~fkE$Q~+zr3k?TIDVo| ze_HCaIdh_LP*4VCe>LF#RoyTGTD9g~T8wQnBacfxsMpr@H4%?WkWUKFf63)37|X zisZOfyuX2*4@;8>K&cA$Z^Io3hBRXUu{WNE^a(dcJ&!Fn@ z4fd1$#1Qm<9-+wt@M8-!vq9^&=EH$FU|eqorUe`xwef}%UY=JPpX;djZlm z7=fWRF|tAhv7N;X#wU6Ui`Pb`RaHQL?z8G^K)1oT(8T4wAjEbX13g>!j10ggfyD+} zgZDrWsjbUE`~WsmL3pyba6PC4gh9`kUch#)FCd(My>x<1Z6ulXo=m#hq*yDJ2c0i_ zvLXe@-0T?Zj$9k-y$t+(aAiLEZ$FU#miDuWg9=LBAFJ^yN%+X7V=ZR2#>-zP8wtgT7gYap1B)fY2cofdw&gh-(OMPAW>#^KHe4^uT$}=>H z@6}xUncRUiZ0vq)pmXTDY!LLOtW%HqB&?G{hbu55NxB)2uZq z8}lsfgYEmq+QHfk$-{MX4M|q?nQKY1@ropCB)c_|?5YN^B54`l3tP^JjS$y0UMQ!3 zcFEd0o8dJ40j{HUGG#5wZWj@?RxX7Fk^`>RO4&vo;s;<(>_rFnNU{XzcEL_fk&5Ay zpU8AWmn3FQgoW@o92^;@(UQcvfF+GgMY-`B4UMQ3O+XqW!9sLv`@VVnoRG9+6oDg0 zB8^FYY>FW>Yx{41T> zzkK%KtN#Nz*vac|c`GUe*yM9$%x-%r0c(BF%j#V zI5N8vcYCMn`fN^nAhxvD@csu$n71M!0%CJ4^%yN-WyZiYeEaIT2UR%=J{}gy?V;Q) zDZ%)k2+7(B)}Y}3A4KZ0CrodD(KDY%EiR*{W4_KkNsF=9fY6GNmoN)jX#yU{qLVod ziIQj-L&GFT#iKUj-jys7cQuT;(K#`9i~Zb)hn5Cu-okGtwMHzGJJY<43ZI>|^9KjH zx?nkr?Y19?(oP76!1jt0!CLzrnm{OQbfyb)F&4 znz&F&J1nYvVkLA>BdT>4&I<6xq7Gq}HKibr>k?wy4Q^#FX z=R2m)AJy2gLEmqaYlOwpLp?qJ=NIe3VxJ+I(G#Zn&Q4?2u=$hj9(SH6y3Zs92i7Mg zS%j8msfN=eoqEmgu5ea=6;Xl|kA7-qusU?j9w^QMk$e#r2%~ywy}^bg`|5Ha4l8)5 zJ)atjcaqdd!e8VffEAZ;8OKd{$x^3{z`Y>^uk!{#?71_zR*dUyO-3pTe*}IdCF^t219N^DZb8UST?dAOr zQ*RCZj7}{a;AJEhQn^Sh!~_IAo7~598E#7l9#I?w+Cx_}QHTlYr|pv8QA z-`$_ZgSI*}AwKDo$*tCXd~!1N{%xP+L%9GU!bLN}=yje`q1wHBGwMJyd36#7gqt%Y zPaF>kqQ+m3j`h-i7b`dBN1A7II^>9LpU&W89!pWSW{SYOWotWmFE@C7>$=Ts5GsbXlYp_|Ghji5Hpdou}x-*ep?~U2u{q>@yDVfp?tYw)xU;^N(-C+w0HaWB0W%$A*j%7-AAeI2F1sJOTm3 zCbGnd4vfwmLFGLc$H)NNt`EYa4-dhkhqndbO@#UiS;_lpQAOKjdw#Yj-T(LsR*CP6 zAEWhNJZRN_gSbgNJh^egP@C8KJXZ;7XYn!)_GI$wX11&jU_~0QvQ4Lkn3z)&FbIE| zi?npR2oal}DR@`!hqDXCd_eg*fSy;Vha%RR;ku*%?=*R-vCOc5 z%!pWU^*}7`==dc3_pyb!r*FP68v9zSdiyKkz@;d_kHX}eEd2Z=%zpV|#GP=(FWh`d zkG8FU##C}a!V_m{MR7xz`FI-s-ze4N0vb`FbBlUbXE%3z!!;YgwP7LH^ZKFFO$el3c z7<7*fz6|unUK*7dV7==EfRA`D*5r*4-+F~AQ@VJ zHRHe$tzSf~o>_Pre&fozjqjSHD~um2*#cF}cV_2%8h%Gg#TFJT!5el8Il4-#0{omh#RRnbb)C0EjrqsW)mjw7yvzK5$SJrje^8~GZy-(!Vhz#olQ+3lLVg=*qhx}krzhH(V zIF(z3*Uh^$ublBKJ7~5WLM{in9G65DrQ)k7PMoB@=0@K|>8k$u_2aO+`U{+7M51=l z)>7mwkw{HY4I;JS8oCmH_ABR`op4;rP7D6_^>>5CqW+ZBNSg!$NH!H44eg1WY7;^= z=Th58H@1Y(Znbd?hFHCOuttMnepT&nZfk^RNedr?2UM_aE^4ZTvdjK(1U_ z(BHI|bT#YT#lq@H^V3CQYE9Ri-qbeqSQMk=1`vb0itrirtVd;AA<^PqFg4%6vg+%= z32yrGeq{+@HTQ)d{%LiREj7kJ=_G$fon-thC9McPiHxqp$WhowZn2V+YwEhPmbbr# zsCPNCl;#Q#++rbrTh`H)bAJBfhi5*9!U9^48(B?(b+HfNO3OLb4rbWPPr&D#YLM#XZwD{v=)6A{FsxQ@?&=yQK8S)-RPu4C|4_naxw zaEx_6oM(HFoTFvn*n~VrQAm?OSv_}ek7^^;8P6xcFaD+FW4cAi*FAC4A3p}#W^S5M z24N&NV*ZvH!ntFQOT?v!=53Zq5=7wVlo{ai$LWT3%AC_a-wm4KNq-S1#OlUSvv&xQZVP z(aLw6{?J*Kk=mJG{}(X5mt)s{yuHrPZ&3Sc0&4@8mq+O^v?bxgjMZ-rIrN za@Jhc(HEB*XgP`m^E%kYVF-1MWmM?m0al!NLAclQENq{x!NVJGBJ$@N9JRO?rl-qn z;c#iVTG(J{f)7Fl3tmL%YOZ{HuWOhdG>melX#)7>Z`{m6G}$PSwj}f;f`Yi76gJm) z#mZk$nJ8NHpVuzd62 zv5|^7#-{fq>RxBnMVEtEm})Gcl!y5m^;{Db;wio?{rQKR;hidgOS zk_^QN5Yh2ealT{I`3-C5pq9i@x*8uGFn*|CB6t`nlFM~H8GVK6u1_4D zl0tYigoanEoY5n;T=n~2`24wHGLthf0Xu@#`{B4Jt}C{4wVuVu)qBska1WM-Hh2ey^wO#XKfZGl+q(?VEbnv9~*p_F{}zNPBw5;wc z-2NE_bT03v`-|%LZ?PFFSh<8s5S?i@^Xdh<cx<53Q;x#BpL<`d@|LBYpRm&ft9CbNTiU-`^N!9I@zsS;J{Q5zUr84A9V=S@ z4&OCcv{1n#j7iM3n`4`274WK9-`K$V=+lvUhKF2XLMGT(+z7gHa#UFVm>m?MU0cub zTP~?FGreYRF+pFr{|CGU69X_7(ntR(u16`p)W?+H7Mz~sk(S*9$Qw`53qbOII6D!4sq!F#Xj?+EtrlP3+ zB{~vY^I9i|K|xyY_bCK|{~C&o?{fzpEO>4EVwOyOAtWckxO;P~e2-lf+KEU`IVJ1m zp4TZQN(c6+HTw>(pr;Jftz`vIHLp1A4_cYq_p9;R%3^dmH88WbK%Skk>WNC2g#2MOrJWzwX%$lr4B6UVw77inKW?PP6zFozJWdHu_-6_$T zm%ZbtL)t_qj)A!bmSrc}^96dTRg0D1obS5AL-_3A3^`?gX_7Pa7O}+!j`W|svfT=9 zMano{WoyWS4MGz;F{-Bl{Gx&Fn;qrf7LMpxH*jSUZZ*B+!LMI*l?RyTNTTJTz_z~d z?2?+yzlJSKnWKGT7?icS65&tRE0ypYNBy;TAQIv-^y; z>WtWgm(5tD_U42Nz=lbczn3-L*wR*)ALeT_F53isgNXFqzt;)j_;_zgQDy!>{k~0< z3RBk>7p?#kndp&$`Jn1{NBuljd7f5VDd$NX5CWK4FfiNdt?ifH=bw4Oyl5Cu8r;la zx!pA0Q)$({eGNKyDyl{H{PuysECwF|!0zPhi-bBYhw0^yH{_+|x2~JyZ|8MXyGuk> zS7dS=WknM_wfgN3YwOEMzUu$(uPu|77@StfG?G_woYU8CooQHgp7uj={dQp~Lj3{L z@r^AEvvKsevGz*^r3m0pa|{UTo0DlDPj83gLS2jNsQXF{&*Xae zY5(n0bW=ywmH+w=*wb!T(8!tWK}p>>9&T0;?4DZb$XfMd3fd}V--xRCz1Uyjn(S}! z{xdfQa=TL0Bs^B50Ve?Rnd=mfIsMxH1L^&-iHP=7Z=aZcc-_ksM6dmFN{=V{=k?Um zPd%Km)7ib&SBz!yg)e`kim>ebeTu|uJ^VNldt(->uK9t}mjjQsv@CLgi_%y$CGg4% z55|*!k8nNV`Lk(F(r?ku0Yo`Ewl;cW;_$2DkayD9;2+Vfialy$_GQcvlC`fa5#XQ^ zY!Rmxn8A>;e&-(5qP?TbzzxJY^sC}fqdOhJ8c|qXx39r<<^$1H>f{E|d<9-2;Ua<- z`um_ghv*5IOQVMs<5Ei*m>PsZ30j`0g-MM>c1OHSYtH-QB;cIE z^XAHvEr8K9_pCvh%RY7rvi9?9TalGn?Z(Dmga{VO7eY#V;mrymTO+>B%ik5rSpS4`7t!U{32m>$b^(iDm4j4znoj(Z;FmXOOO!p97Z$fIg2Q}ZQW(?S zI?j9&+KU#anxOB~^Jgi6GFn3!0k-NFmNN25_A4YGV`w9sb`cBgR_V?u&Bl<;dYMqZ z{ZYI3Hg;QLcc_iW^{2}YZA^0gMF_r2GV0-wK;3#nc29zEt+`~wi&xI=5E8Xy74+6S zk;m0N*PECOv_ZiV5;qZzFN6H$W-vsXXULuTmT~ke4t5lx^H9q`PM1T?zbB_wfX%$1 z+rO^X+drp!(1g?92jfTVcmy6`&a!l)5$^~n)k_4WPxYRkRGVgWjVaml-?j!CR7cE; zisQ&K@A#^o=&}`gEKg=yzcCTNl9PfqGF!=Sf}n#;EfsvD1WFVI8&ca!HZT$e@ft<$ z?nlNY95JFh_AvZrKSr;a;l4ADVE*g}G><|IIQ#xfBK_FbQGk40h5?k*LOd zP8s^K5IWV?dSQlffP?MzEudyLw7$Lkr?=xb2ijWP3qM`)J4}7jhs6GesQRADi%z|{ z3R1m=GzrNjr>!8EPZ+1PS-;fsPr2VA*yCtjcjV9>7fElj^HNM=+Rd$vZfcbBv}YM{ zCkWL>JJ{e{6VHcx;bN70!DL$#uj*J6@8hSkoidf1-Ld452fNjc%N6&Ucugp$vFMBD z)Cs`O{$iaRTLKw>RvCLJ-_JtSmmizbGH)YA4k8%R#CH}$SX^{@{%l^^V?yOW$D#_C}cI=H_t<+ zag5w~IScnfy;AQ&t8HYit_Wkp56=zXC zsb)k_%{q&Y!rhlJf34+M(#=JX4W2>YZ0WIF*FKN&c^*z}!5hVaopqzi%_Tt<%M1Ze zl&5a(oMfIuM%rG}=GabmgKVcH_Q+DjB{h@e53#Y0@2XCl6C@X!=w*FX8coacM;1%F=1;skp~=sox~uRY##{wtYNp@Y>Rc zqjN(fZp_2CH#^6U>d8+yOM(`a_b5$OaBm(e0)*;y*$G2oQQr!K>M3ojSp%134JmYl zfD;z{PSw6?{Px$0QP)Pr?jo&k z4mx{3|KzEy7b(vy4alP@G7~gL{q!Z5Gsk2=C-2Xv`o%$I#1}_1EkqBl|1t7&wF5-S zFP->H4JW7fg)_ygotDCm52%B{I(MR~Xul8kv(axe`M8&@`@*0Zs9F2gw6@b3HJ5GS zs7=_53@|35gSnwfmgDh{V^Yo&_Y3E;qpj4>TfcqZlV<)Rl|9PzkYb2n+dOo$OT&RU zA4#lH`e`aMWRtVj563G%EtiM;=P=f#e7c|XouMc%Y5Pq4l`(->5LW{@c5+E3_vWWZ&EIAL2I38+pxMbnyRCmFa!|s)iWn zEEQI!L$=&plSa{{8)i8q5H>w{ZFI%%*<;Y2hTCqYk>o)Lksq_UYjwTyWwc-=%oMPy z#$EKq^wGern1~rF?la`8aFR&hx<6ctN*3ZCl8TP8+im`pUHfAwRq2qPpeM84C2s*7 zbP$_ftt-k^Ygfm1|L|xVTH>6h*+hLA84t64$C2$~_Op`QxUW(6qk_I*#WI1Mf=A>u z%Gw0E*eAo*Q}p%?o4dK~>i%3>!HVW{>VZ&~ow_=q59)7f;%_UVT2fh`?R1x3Vxr?` z^=?Yj)RM;y#Wz|6wtwL68xSqj+B8TTjZ@p3e^uUnTh$=&EZ3f=hmy~W)`Lm;S5_TX zfd*KR9(UDFGWD%@8OC?1nHudF#{VJ-3EXMs2y5gO_%>JDXk-4{`&N$!HKGeA%ScFj z#Hc`wjT+?VAZI`BejZ3VZHO?{N5Cz)`mz2jc@rNn(M3b>~KyD;fl+HouMuaa%BQ=0xq3 zOJH3;HHhy%TkEHF6UkHUl}vMVw35izxjD#UX9x%N2wf%VQU7I^9gxn9TD;RPTLd#> zi*#OoNy9iMheuEEWV4OPuVdmjKiIwRN5(1XpHj}_VOx_J=Ct{Mux5h4ysL!CtrN5c z((aBk$?~}<6MH3fcd`yL>qpob?OJK7D5B%?*r!3kAVge2^$qi%`z4=A#&z!TqX27t z%i>_f9reCq#?vnTWf*`)?5|I$S=(inV5!+{k9grOf9tiC(P8KWu!h^<{7PNx@k`+0 zy))Pj5OyD>r6Q$nt6eNl)eXz~zCrtZ9v*)Ee8W^P+k^q}mVPISqmoMGI6~kk5Oc_0B4Rx>_t<;c1=TGi z;6AiXd;+5~GC@$>+b0SK&gMaF^Ctnqa)Dt(Iw@@;ZiD zyr$nf=(EX)6s^3Bm_IQiAm>QVHufUAyC6_rEmJS?q zu_suI_Ceq$H~^Rlc3n6JNMHhC5h|YsWegpww%W-L(@UIvO6u zR{VR((z->rbhP6>1)Gyrb8sbGXSPMaD72)F9y5QNmwB$bUbD2c-qQTjxLjLZov41o z=d-m#UOfK5<#~%epJJ98HK4q%;yc*QyS(! zI=+o8@Y|$k>F2mt=WWI|HgdK7%G;Q4A7SC0WI!Yk5(*M35*iXZ5(W|`5*89R5)KkB z5*`vh5&;q+5)l$H5(yG15*gA9ByuDQBuXSIBx)oYBw8doBzhzUBt|4AB<7}0G8P;c zWYAvISQv{u>AxA043-N#WF{P~l%)x+6kPiMWBF*6-kQ=7008|>ZAah-4A}3kW0`HA zs=W`rTQAjggzpW|w}^jU&y>9$guLKN5w!QuJ<7fK2orHc4;PqNxG!OoUwU1roG{5m zSO24X(s6s%%F9djk*g3ZXy6US;)lrgNTP;@0Bfl+(GL96=9gcYtSvT+T z2JLKl=HS?6@^nZdY#OHk^n<#-^bJn0w^AXAE!-3J(X0nBob;b}hOk(!P{In13FV@! zlV$5wxxv){85gsX=#l<=?WWB z)o-5r&WW)l4+yPPwo#zPQ0A;P`mwA2utFrX0$kBMLK-=NorW+ybozk(*}pw;hXblO z9tipB*zOA7i|?_OfZc!gdn-z-+fW6^Hrh(cXpeyU2>XYm^84HKt#{#ixxk(;yxvlv z2S*cKmo2!;GaCNG6#Ip#0EiOTEt7&_GUvB>e6I6&<1~4Yyfy;-Tv|r~!*2rnpk=)~ z&TAV!A^})v+nuWps#q5X4_%(WOMSkZxpYoSr4P?x6MhD2!~A!!p<-d)E_}2`X!P8y z^p4@T=f(6sj}T4Wuc&xfPtGd-o|24I%|N9&DO#{2<~m;*IiQVYrFMyjXCrSPL<|L$ z%d6#WdJdUOUjhDV^y{W8zT0+|K$V&lay5lO#0Q5YH2ZeHzw_OuGBj>(2-Mydm8J5_ zqqYF1bn}tGyd@`@G#fWABTQ!u&%YJ*3zC;>QGuYUQnAIXKK}kY_@en#`o_)gCYPCl zB#56p!tZ6x&=Uwh1+|E|26$P}xBA{^LhSVO(cF}Cv?3IMbgme?!^N zAFrlBluV@GJ2;9_`Sf(BzY%hhJdh_%Dsc!oVpJhusp*_e7kTRpSk)3(BWe|gNs8z| zG7XgYp3y`Lm0@AN$B&^oUy1N@uRwC16h3zbN=~^U}7LzC8+N-y&mQ|Cc=~tW?#L?v zMrS&3b#_#6!;C{W1tN=;q3 ztw{opbt+~gkwUj+E)09Vr;Q1zGX=ete@XKD#JApI2lv*K|XeRZIMvcwhjNy;n zn-9VIT0VP99&OLvD$!b)Ip?lz>Ob(<=Ay^eGDgDNb{+*%H`np#>56--MerphzB0JC z7kc)b?>dXLHh0|n>wPgc#w{W+UpHK@aOuJJ`RPf~PH&8BffS1YHTBIDXyr^6@51bsU;P7^*-D-FHS@gKVFT3o|dcXO-}mBBN`z`0jeO}8i_ zt}+-hF$*X&8I*5`9g*c;ICd{QIB-**xIFqPy)nrg>Y|*_#^D-814GQ?WxWtLqrLFdY}G#oT4H6qPwT8qY?)m3yA?uvOE#YsuuA zm?)u^SsgBMy-w5|02cefj&4Q#Xe%pi>hZ0t-Hd_|Z+Ra!=K)b|U`dTqsfT9I3#g>E znk!3`GUz8|D6PzXKW{}q{@S`HY%FUIg_%4_HiKb5XqD7XIaABEnSMDWWi6*_^^w_xP2Y=1(8nAF&l@<;Ggb3| zv@Yf^Ofq$!{t7{H`Y^HZ29uTnX+c`I)S3vavaLRv)Gf=dT#4Vkk%)!|7}YV6y|NfY zQLtJ)I1tQ5@Wp8BlSfXsps2~ZE+2x!#bIpyYL>4{$)WhJt)}d~kGc@p5ut2KYpDad zo~rku_B=lC4j?*rcjtR__IHB`(qKS4Iya7%GdZy>Mx6o#t9RF3wHEH}%MbJw5}U9( zbKMn*UNi!q-Wu*XN$w@TRdLR?jNd?MY<0%WnzqtgxT;?g)>QxyAmCFDV>HCCzx!BV zd6w&(H$G1=B>(!$#rWRKJD}((d~x4OvH2MWKf4Eq{db*ixZfWz-~WWn|98Dzcr z3~&voRvOTkP&gfs^$m(=A`5&viG>3031sC!aZO@@k0&EbZO9TRE*ZWLWR(H! zrNTKutPKB7wHgT7cQg%d2V#`~S$&6>{+l)z!S_L|Z$M(ja8?vnI);De5I;UDwg7o< zWFP?G-+}+L6$Z5z!#|_2N}(i_u)vQ?St#M%D6F{u)91gBQ@#KI)_*!6)50LDL-+{_ MD>ZuA9T-{ue_+2u7ytkO diff --git a/docs/Reticulum Manual.pdf b/docs/Reticulum Manual.pdf index b3eae3c12bfa074ef6c68d6eda42cb0bc0412eb6..13af4863e21d285467ab9655ed7613e51d86a4cd 100644 GIT binary patch delta 68805 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 +cannot disrupt processing of incoming announces for other connected clients on the same +:ref:`TCP Server Interface`. All other clients on the same interface will still have new announces +processed without interruption. By default, Reticulum will handle this automatically, and ingress announce control will be enabled on interface where it is sensible to do so. It should diff --git a/docs/manual/index.html b/docs/manual/index.html index e51c951..b6c8ad4 100644 --- a/docs/manual/index.html +++ b/docs/manual/index.html @@ -344,7 +344,7 @@ to participate in the development of Reticulum itself.

  • Common Interface Options
  • Interface Modes
  • Announce Rate Control
  • -
  • Ingress Announce Control
  • +
  • New Destination Rate Limiting
  • Building Networks
      diff --git a/docs/manual/interfaces.html b/docs/manual/interfaces.html index dff93c1..539fc6a 100644 --- a/docs/manual/interfaces.html +++ b/docs/manual/interfaces.html @@ -937,14 +937,26 @@ conserve bandwidth, while very fast networks can support applications that need very frequent announces. Reticulum implements these mechanisms to ensure that a large span of network types can seamlessly co-exist and interconnect.

      -
      -

      Ingress Announce Control#

      +
      +

      New Destination Rate Limiting#

      On public interfaces, where anyone may connect and announce new destinations, -it can be useful to control the rate at which new announces ingress.

      +it can be useful to control the rate at which announces for new destinations are +processed.

      If a large influx of announces for newly created or previously unknown destinations -occur, Reticulum will place these announces on hold, so that announce traffic -for known and previously established destinations can continue to be processed -without interruptions.

      +occur within a short amount of time, Reticulum will place these announces on hold, +so that announce traffic for known and previously established destinations can +continue to be processed without interruptions.

      +

      After the burst subsides, and an additional waiting period has passed, the held +announces will be released at a slow rate, until the hold queue is cleared. This +also means, that should a node decide to connect to a public interface, announce +a large amount of bogus destinations, and then disconnect, these destination will +never make it into path tables and waste network bandwidth on retransmitted +announces.

      +

      It’s important to note that the ingress control works at the level of individual +sub-interfaces. As an example, this means that one client on a TCP Server Interface +cannot disrupt processing of incoming announces for other connected clients on the same +TCP Server Interface. All other clients on the same interface will still have new announces +processed without interruption.

      By default, Reticulum will handle this automatically, and ingress announce control will be enabled on interface where it is sensible to do so. It should generally not be neccessary to modify the ingress control configuration, @@ -1082,7 +1094,7 @@ to 30

    • Common Interface Options
    • Interface Modes
    • Announce Rate Control
    • -
    • Ingress Announce Control
    • +
    • New Destination Rate Limiting
  • diff --git a/docs/manual/objects.inv b/docs/manual/objects.inv index 2a11fc6f3b45eac6db22cb51d73701d359f660e7..69c4f782033e7af51303f24eaf4ab3997bd27532 100644 GIT binary patch delta 2149 zcmV-r2%7hp6Q2{1m4BGQ-eO=In9E!ij^iXo$BrR8)6;tqXoukv8eXc}ZFbruQ}j93ui zJt`6rNZAMpra0TU_H-YRG*Xz%#T<2#;|TgeXaN zDEt^BmIDv|+$6y$-B-@J)tpj`3kGX-a9$}+4w(&SQH!L33|v7cvv>cmxg;PV7}*s9 zTadZ~^(SnDYw^F&e{L54bsl!>zps;S0vraN1m^CvJ(G|EJ}`WugutY%#(RalZjq5B z%qbg{g!yJWeRy4LUY7IKHrOtf^SAeHu%7$D%iG#T==+oY0$37Z??A{9bnDQ&?J2V+ zWi%k!4wGmD9e+I;YXZZZ7A(ZKvS}73MRcq<&b8VX%>df5I6?IOL*|OGU7+Oq50Vng-%>TKT)uz6nvY3sgu3x8%)d*V4!v1uw zQ9Vq{^PmZC=s;{)-Wq9w8@ywn9bV;eA)E&)iLlv3!GGPks;^BTqqCFKPVLGFl48i$ zH<6u8xO~5DO_>C6G7%93W5z45X4R$YEoN7@p|>ctujH*MZVtFmky#RSFGdfr0lE8l zy3kSAI3yY^z;l{$d?URK*pV9cd)3#cpp~l?w1;!4VAi-6A4QN01hMsyW`zjeB~BFS z3fVIToPYcuJ2P#&xdthRiiEqfoI|c+11H!=NU3GPmU#C6QkcMvV=B`o~`qC&Y zx2qv{cUhY#FG~zOg(e_H1MXNVkRes~Y=2ity8h+fzu;e0JM&6`m(+-c9ilg*5%%W# zk-_)mgwC2ZhdxL&$5#7m4*AFv$-5?tn9rMfj^} zMDQkb=iWxW@SbGQ#)w5n#Bg1pdRDnBO^Zwi0e|;i z^h?9+aa=>7bX>p0dAfS!+Dy-mT48ad>_gfOz3UQX1q6yYOnH-EJ*{ld_T*47Iqijc zS0kI`Aa4SBa~3VJT8{91d5I3avH|IfcDDXoR79 zO9`*@X|7^-(2z6*SDc036t6ColN=A}tR<$`9W0YsXn^joBrB1{8SkodV-~Q z5HrBKM)M0cDnk}ivKH@&tKbosY0n26iWL9bR-7d|OQTaKc{#-eA5YjJh+POy!@!hl;UANW+o zjk@w2)>@YzDS6-V$plYHZ7FwmTd$hku1TqopH21~T=uF~;h{O+rXsaO&0)z;T;SBo1J#+k!J^1Jdg?yJ&X*e7(ztN(aY3VM zp3DW{UBTPu13#Y&yb;+R#PClr!rPS7SJb}U!t1-lMnm~Cx+WrX7C_uXnq8KF1PYa7 b3~|+{!_*TsjUVv82d|CBfA0PP37)ruNJK0m delta 2142 zcmV-k2%-0%6POc_m4Dd5-eO=Im`h(4j^iXo$BrS}+nc=zv_xA(BvC_Bop^rz7DbBI zmn~B6Qv&I|$6~QqtfJ+wHj{_qaKOyVPv64?aqj)gV;CObEX0#oq{%=2@b2$?1MJ}M zJA^a1$@J0ZEJj&|6Ca~!Sfhi#p!Smy;i9JT4YiPAByg}N5r1Jg6oh6d3HD~HDHbt} z27RMdn3#{k2%V7Gtt}+(}l>XpWgU*%MI|1u5nn9dQ7UqGXiC6T(Y3 zodQ7vj{(OU%}l;O!U#@K-JuV2sa?SOhsE zzqHF-=`rH*7|uCJ%FrPZ&IA$8!zUC)x0wIC){TP~Z(NOAsUi1m0MF1qAw0%W5TYd6 zqwr&lSPne+bCU$4^iVnHR&z=%E*PxU(RrmfIc7GTMJs8w0vraP1m^Cv1Cx*fJ}~@334uvjjrR(9-6A7N zm{T??3G>Z%`tZ8gye#LdZLnP|=Wn}hu%7$D%iG#T=*N@(0$38^;6TU_bnDQ&9VoLV zWi%k!9+PMT9e)EEYXZZZ7A(ZKvS}73MRc>df5I6?IOL*|OGU7+Oq50Vng-%zt0YYExfOSDF(b>sqr*>roNipQ> zo5)TkT)yA7rc44jnTQC2G2@k2v+7dy7PG6{&|8$+SMt^rHwRp($SeuE7o$hmfZTmN zUFfK591@Kd;5p4WzL8!A>_`p!z3S^z(8|>c+QYe2Fl$_kk0Qtgg4lXUvqA*#5+{mu zh3pvvPJjN!&P>~Gu0hJ7BH`{Vr;x1?IX=pA-kk_FPsRb}?i#|OeoJ#{F1Fkvf`mm< zq*gJev6Ja)^|o8h=D}=g+kl?Q%k9pY(_`kPu&#h@2_DlTiGl()FG=%+ghXFiI=N|5 zu1!uE^lTZlY<6DWRwN5A8|-8~-M&06R*%r=FMlmPb|&`>+3&G4uq{#h*`xaD$mRb0 zECibs_MV6xSv2Q?pl+lLe?fAf`8XCFhA`U$viptf%>PY(s!lf>U!k1b>mSUyh`uLi z5Bc~0BDA`cu)#*PpCE1U=GwsqEIVy0V2a4l@YD6e^Q(u71c^_!O?%nW*^Hw4b_Xca z)qjr-gP~9Dcm0Wi8%ckkU`0}q<78Y_0N8=6v}%JkIdTwcaZq{3) z3~kRSibBN2b>2e-GsNEQ(5C51*^qD;)9Z{mAPijIRaYnZb=p%6Y3Sx|?kaVmFO9-- zyBczLm$ixVvc$ksXaZ6+;EtsN8B%r6c7K(m>tF8u6aH1TGp`hQNsVaOA$l_!VQ;P< z8GKJp=&V_Tc%UpUQgCd2B=b-WHO&B@CrBqes0Yq9guHfqky!5mlkCXvjyNM(guj|b zR8N)QLjDU#AtXiJf*qbu8!s6!z1B-s3PU%gOC0|KB(uuip^N`F3$EK@yG z@P~pVk&Hf_r?}zt#BYNttA`G`X3l_}>l0M)S<_ro2G#9t)<&($whXHK^1C-_$Mrm3 zp~@iRnoBY`YLcX5XHKZmFA0Fjc8qJGbmVR(}U8QUc?193o%Fseq@7I~T67or) zM=}S{9mj};ag(T?DTi*<`+qf1@3e(=_v=R*tKZku)sr4i)QRU=)u;umIRlqwQMGh> z$i@pb@UDTqpmCvA?#jvS8RK*6Ut(GH5}v{)^d7N5B)On0zfwlWo?z)6#0;>m(fmTz zUrl*v%1C$ssQTW!(=qm{FXVX@6(t9X$Ooz6J=H~8qtv?B45gj@(tkTh{iEAeNxCe` z-SpZ{(3RhzU?Oh!1-)8TN%*7~Z8?e(8;hPLuEo`TJHa*r3j=PceBe_RH|n-?SZiH= zpXB|(Clfp+wWZwMZM|xCyC$VVeo?gon@@93$k5IbLLY)j+9oyP@@s&6uPe|H6M zpAYG?#{d8T diff --git a/docs/manual/searchindex.js b/docs/manual/searchindex.js index e38a86f..dca9b56 100644 --- a/docs/manual/searchindex.js +++ b/docs/manual/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["examples", "forhumans", "gettingstartedfast", "hardware", "index", "interfaces", "networks", "reference", "support", "understanding", "using", "whatis"], "filenames": ["examples.rst", "forhumans.rst", "gettingstartedfast.rst", "hardware.rst", "index.rst", "interfaces.rst", "networks.rst", "reference.rst", "support.rst", "understanding.rst", "using.rst", "whatis.rst"], "titles": ["Code Examples", "An Explanation of Reticulum for Human Beings", "Getting Started Fast", "Communications Hardware", "Reticulum Network Stack Manual", "Configuring Interfaces", "Building Networks", "API Reference", "Support Reticulum", "Understanding Reticulum", "Using Reticulum on Your System", "What is Reticulum?"], "terms": {"A": [0, 2, 5, 6, 7, 9, 11], "number": [0, 2, 5, 6, 7, 9, 10], "ar": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "includ": [0, 3, 4, 5, 7, 9], "sourc": [0, 2, 3, 6, 9, 11], "distribut": [0, 2, 6, 7, 9, 10], "reticulum": [0, 5, 6, 7], "you": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "can": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "us": [0, 3, 4, 5, 6, 7, 9], "learn": [0, 2, 8, 9], "how": [0, 2, 3, 5, 6, 9, 10, 11], "write": [0, 2, 5, 7, 9, 10], "your": [0, 2, 3, 4, 5, 6, 8, 9, 11], "own": [0, 2, 6, 7, 9, 10, 11], "program": [0, 3, 4, 5, 7, 9, 11], "The": [0, 2, 3, 4, 5, 6, 7, 11], "demonstr": [0, 5], "bare": 0, "minimum": [0, 5, 6, 9], "setup": [0, 2, 4, 5], "requir": [0, 2, 5, 6, 9, 10, 11], "connect": [0, 3, 4, 5, 6, 7, 9, 10, 11], "network": [0, 3, 5, 7, 9, 10, 11], "from": [0, 2, 3, 5, 6, 7, 9, 10, 11], "In": [0, 2, 3, 5, 6, 7, 9, 10, 11], "about": [0, 2, 3, 5, 6, 7, 9], "five": 0, "line": [0, 2, 4, 5, 6, 9, 10, 11], "have": [0, 2, 3, 5, 6, 7, 9, 10], "stack": [0, 2, 6, 7, 9, 10, 11], "initialis": [0, 7, 10], "readi": [0, 2, 3, 5, 6, 7, 11], "pass": [0, 3, 5, 6, 7, 9, 10], "traffic": [0, 2, 5, 6, 7, 9, 10], "thi": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "rn": [0, 2, 3, 7, 9, 10], "start": [0, 3, 4, 5, 7, 9, 10], "up": [0, 2, 3, 5, 6, 9, 10, 11], "gener": [0, 2, 3, 5, 6, 7, 9, 10, 11], "new": [0, 5, 6, 7, 9, 10], "destin": [0, 2, 4, 5, 6, 7, 10], "let": [0, 2, 5, 6, 9, 10], "user": [0, 2, 5, 6, 9, 10, 11], "send": [0, 5, 7, 9, 10], "an": [0, 2, 3, 5, 6, 7, 9, 10, 11], "import": [0, 2, 3, 5, 6, 7, 8, 9], "argpars": 0, "": [0, 2, 5, 6, 9, 10, 11], "defin": [0, 5, 7, 9, 10], "app": [0, 2, 7, 9], "name": [0, 4, 5, 6, 7], "we": [0, 2, 3, 5, 8, 9], "ll": [0, 2, 11], "all": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "creat": [0, 4, 5, 6, 7, 9, 10, 11], "sinc": [0, 2, 5, 6, 7, 9], "basic": [0, 2, 4, 7, 10], "i": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "part": [0, 5, 6, 7, 9, 10], "rang": [0, 2, 3, 5, 6, 9, 10, 11], "util": [0, 3, 4, 5, 9], "put": [0, 3, 5, 10], "them": [0, 2, 3, 5, 6, 8, 9, 10, 11], "within": [0, 2, 5, 6, 7, 9], "namespac": 0, "example_util": 0, "app_nam": [0, 7], "execut": [0, 2, 5, 7, 10], "when": [0, 2, 3, 5, 6, 7, 9, 10], "def": 0, "program_setup": 0, "configpath": 0, "must": [0, 2, 5, 6, 7, 9], "first": [0, 2, 5, 7, 9, 10], "randomli": [0, 9], "ident": [0, 2, 4, 7, 10, 11], "our": [0, 9], "just": [0, 2, 3, 5, 6, 9, 11], "endpoint": [0, 6, 7, 9], "address": [0, 2, 5, 6, 7, 9, 11], "commun": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11], "also": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "exist": [0, 2, 3, 5, 9, 10, 11], "which": [0, 2, 5, 6, 7, 9, 10], "know": [0, 2, 3, 6, 7, 9, 11], "thei": [0, 2, 5, 6, 7, 9, 10], "reachabl": [0, 2, 5, 6, 7, 9, 10], "autoomat": 0, "path": [0, 2, 3, 5, 7, 9, 10], "anywher": [0, 5], "els": [0, 2, 6, 9], "IN": [0, 7], "singl": [0, 5, 7, 9, 10, 11], "minimalsampl": 0, "configur": [0, 2, 3, 4, 6, 7, 9, 11], "automat": [0, 2, 3, 5, 6, 7, 9, 10, 11], "prove": [0, 9], "packet": [0, 2, 4, 5, 6, 7, 10, 11], "adress": [0, 7, 9], "By": [0, 2, 5, 7, 9, 10], "do": [0, 2, 3, 5, 7, 9, 11], "proof": [0, 7, 9, 10], "each": [0, 2, 5, 6, 9, 10], "incom": [0, 5, 7, 10], "transmit": [0, 5, 9], "back": [0, 5, 9, 11], "sender": [0, 2, 6, 9, 10], "anyon": [0, 2, 3, 5, 6, 7, 9, 10], "tri": 0, "whether": [0, 5, 7, 9], "wa": [0, 3, 5, 6, 7, 9, 10, 11], "receiv": [0, 2, 5, 7, 9, 10], "correctli": 0, "set_proof_strategi": [0, 7], "prove_al": [0, 7], "everyth": [0, 6, 9], "hand": 0, "over": [0, 3, 4, 5, 7, 9, 10, 11], "control": [0, 2, 3, 4, 6, 7, 9, 11], "loop": 0, "announceloop": 0, "log": [0, 5, 10], "prettyhexrep": 0, "hash": [0, 2, 7, 9, 10], "run": [0, 2, 3, 5, 6, 7, 9, 10, 11], "hit": 0, "enter": [0, 10], "manual": [0, 2, 5, 6, 7, 10], "ctrl": 0, "c": [0, 6, 10], "quit": 0, "until": [0, 2, 5, 7], "exit": [0, 2, 7, 10], "If": [0, 2, 3, 5, 6, 7, 9, 10, 11], "server": [0, 2, 3, 4, 7, 10], "client": [0, 2, 3, 4, 7], "messag": [0, 2, 7, 9, 10], "direct": [0, 2, 3, 6, 7, 9, 10], "toward": [0, 5, 9], "while": [0, 2, 3, 5, 6, 7, 9, 11], "true": [0, 2, 5, 7, 10], "input": [0, 10], "sent": [0, 2, 7, 9, 10], "startup": [0, 10], "get": [0, 3, 4, 5, 7, 11], "pars": 0, "desir": [0, 3, 5, 9], "mode": [0, 2, 3, 4, 9, 10, 11], "__name__": 0, "__main__": 0, "try": [0, 4, 5], "parser": 0, "argumentpars": 0, "descript": [0, 10], "add_argu": 0, "config": [0, 2, 6, 10], "action": 0, "store": [0, 3, 9, 10], "default": [0, 2, 3, 5, 6, 7, 9, 10], "none": [0, 2, 5, 7, 9, 10], "help": [0, 6, 8, 9, 10, 11], "altern": [0, 2, 5, 10], "directori": [0, 10], "type": [0, 2, 4, 5, 6, 7, 10], "str": 0, "arg": 0, "parse_arg": 0, "configarg": 0, "except": [0, 5, 7], "keyboardinterrupt": 0, "print": [0, 5, 10], "found": [0, 2, 5, 6, 9, 10], "http": [0, 2, 8], "github": [0, 2, 8], "com": [0, 2, 8], "markqvist": [0, 2, 8], "blob": [0, 9], "master": [0, 7], "py": [0, 2, 9, 10], "build": [0, 2, 3, 4, 5, 9, 11], "upon": [0, 9], "previou": 0, "explor": [0, 9, 11], "notif": [0, 7], "relev": [0, 3, 5, 7, 9, 10], "set": [0, 2, 3, 5, 6, 7, 9, 10, 11], "callback": [0, 7], "applic": [0, 5, 6, 7, 9, 10, 11], "arriv": [0, 9], "random": [0, 7, 9], "two": [0, 2, 3, 5, 6, 7, 9], "list": [0, 2, 3, 5, 7, 9, 11], "string": [0, 7], "app_data": [0, 7], "fruit": 0, "peach": 0, "quinc": 0, "date": [0, 2], "tangerin": 0, "pomelo": 0, "carambola": 0, "grape": 0, "noble_gas": 0, "helium": 0, "neon": 0, "argon": 0, "krypton": 0, "xenon": 0, "radon": 0, "oganesson": 0, "announcesampl": 0, "space": [0, 2, 3, 6, 9, 11], "destination_1": 0, "destination_2": 0, "handler": [0, 7], "onli": [0, 2, 3, 5, 6, 7, 9, 10, 11], "ask": [0, 2, 3, 7], "chang": [0, 2, 5, 7, 9, 10, 11], "filter": [0, 6, 9, 10], "see": [0, 2, 5, 6, 7, 9, 10, 11], "what": [0, 2, 4, 7, 9], "happen": [0, 7, 9], "announce_handl": 0, "exampleannouncehandl": 0, "aspect_filt": [0, 7], "regist": [0, 7], "transport": [0, 2, 4, 5, 6, 7, 10, 11], "register_announce_handl": [0, 7], "select": [0, 5], "randint": 0, "0": [0, 2, 5, 7, 9, 10, 11], "len": 0, "1": [0, 2, 5, 7, 9, 10], "data": [0, 2, 3, 4, 5, 6, 7, 9, 11], "encod": [0, 7], "utf": 0, "8": [0, 5, 10], "nobl": 0, "ga": 0, "noble_ga": 0, "need": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "class": [0, 6, 7, 11], "method": [0, 2, 5, 7, 9], "take": [0, 2, 5, 9, 10, 11], "option": [0, 2, 3, 4, 6, 7, 9, 10], "argument": [0, 7, 10], "instanc": [0, 4, 5, 7, 9, 10], "some": [0, 2, 3, 5, 6, 7, 9, 10], "want": [0, 2, 5, 6, 9, 10, 11], "aspect": [0, 3, 5, 7, 9, 10], "__init__": [0, 7], "self": [0, 6, 11], "call": [0, 6, 7, 9, 11], "system": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11], "match": [0, 5, 9, 10], "specif": [0, 3, 4, 5, 7, 10, 11], "cannot": [0, 2, 11], "wildcard": 0, "received_announc": [0, 7], "destination_hash": [0, 7, 10], "announced_ident": [0, 7], "contain": [0, 6, 7, 9, 10], "follow": [0, 2, 3, 5, 7, 8, 9, 10, 11], "decod": 0, "plaintext": [0, 7], "unencrypt": [0, 7, 9], "inform": [0, 2, 4, 5, 6, 7, 9, 10], "ani": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "listen": [0, 5, 9, 10], "sy": 0, "did": 0, "one": [0, 2, 3, 5, 6, 7, 9, 10, 11], "public_inform": 0, "ad": [0, 3, 4, 5, 6, 7, 9, 11], "so": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "differ": [0, 2, 3, 5, 6, 7, 9, 10, 11], "plain": [0, 3, 5, 7, 9], "uncencrypt": 0, "broadcast_destin": 0, "specifi": [0, 2, 3, 5, 6, 7, 10], "everi": [0, 5, 6, 7, 9], "time": [0, 2, 3, 5, 6, 7, 9, 10], "set_packet_callback": [0, 7], "packet_callback": 0, "main": 0, "broadcastloop": 0, "simpli": [0, 2, 3, 5, 6, 9, 10], "out": [0, 2, 3, 5, 6, 7, 9, 10, 11], "r": [0, 5, 9, 10], "n": [0, 9, 10], "end": [0, 5, 6, 7, 9, 11], "stdout": [0, 5, 10], "flush": 0, "text": [0, 2, 6, 9], "prompt": 0, "channelarg": 0, "between": [0, 5, 6, 7, 9], "interfac": [0, 3, 4, 6, 7, 10], "simpl": [0, 3, 7, 9, 10, 11], "respond": [0, 7, 10], "receipt": [0, 7, 9], "choos": [0, 2, 5, 9], "global": [0, 2, 5, 6, 9, 11], "server_ident": 0, "queri": [0, 2, 7], "abl": [0, 2, 5, 6, 7, 9, 10], "verifi": [0, 7, 9, 10, 11], "repli": [0, 10], "encrypt": [0, 2, 6, 7, 9, 10, 11], "wai": [0, 2, 5, 6, 7, 9], "certain": [0, 5, 6, 8, 9], "than": [0, 2, 5, 6, 7, 9, 10], "read": [0, 2, 5, 7, 9, 10], "echo_destin": 0, "tell": [0, 5], "function": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "server_callback": 0, "wait": [0, 5, 9], "go": [0, 2, 5, 9], "handl": [0, 3, 5, 6, 7, 9, 10, 11], "reception_stat": 0, "is_connected_to_shared_inst": 0, "reception_rssi": 0, "get_packet_rssi": 0, "packet_hash": 0, "reception_snr": 0, "get_packet_snr": 0, "rssi": [0, 10], "dbm": [0, 5, 10], "snr": [0, 10], "db": [0, 10], "destination_hexhash": 0, "timeout": [0, 7, 10], "binari": [0, 2, 7, 9], "represent": [0, 7], "command": [0, 2, 5, 10], "dest_len": 0, "truncated_hashlength": [0, 7], "2": [0, 5, 7, 9, 10], "rais": [0, 7], "valueerror": [0, 7], "length": [0, 5, 7, 9], "invalid": [0, 7], "hex": 0, "hexadecim": [0, 9, 10], "charact": 0, "byte": [0, 7, 9, 10, 11], "format": [0, 4, 10, 11], "fromhex": 0, "e": [0, 6, 10], "check": [0, 2, 7, 9, 10], "overrid": 0, "loglevel": [0, 7, 10], "provid": [0, 2, 3, 4, 5, 6, 7, 9, 11], "feedback": [0, 4], "log_info": 0, "doe": [0, 2, 3, 4, 5, 6, 7, 9, 10], "load": [0, 2, 7, 10], "has_path": [0, 7], "To": [0, 2, 3, 5, 6, 9, 10, 11], "public": [0, 4, 5, 7, 10], "kei": [0, 4, 6, 7, 10, 11], "done": [0, 2, 5, 6, 9, 10], "recal": [0, 7, 10], "modul": [0, 2, 3, 9, 10, 11], "known": [0, 5, 7, 9, 10], "return": [0, 7, 10], "outgo": [0, 5, 7, 9, 10], "got": 0, "correct": [0, 9], "convent": 0, "request_destin": 0, "add": [0, 2, 5, 6, 7, 10], "echo_request": 0, "get_random_hash": [0, 7], "successfulli": [0, 9], "packetreceipt": [0, 4, 7], "packet_receipt": [0, 7], "set_timeout": [0, 7], "set_timeout_callback": [0, 7], "packet_timed_out": 0, "deliveri": [0, 2, 7, 11], "set_delivery_callback": [0, 7], "packet_deliv": 0, "yet": [0, 5, 9, 11], "retri": [0, 7, 9], "onc": [0, 2, 3, 5, 6, 7, 9, 10, 11], "request_path": [0, 7], "statu": [0, 2, 4, 5, 7, 9, 10], "deliv": [0, 7], "rtt": [0, 7, 9], "get_rtt": [0, 7], "round": [0, 7, 10], "3": [0, 5, 9, 10, 11], "rttstring": 0, "second": [0, 5, 7, 9, 10, 11], "1000": 0, "millisecond": [0, 10], "proof_packet": 0, "valid": [0, 5, 7, 9, 10], "trip": [0, 7, 10], "fail": [0, 2, 7], "store_tru": 0, "t": [0, 2, 5, 6, 7, 10], "metavar": 0, "float": [0, 7], "narg": 0, "timeoutarg": 0, "print_help": 0, "establish": [0, 2, 5, 6, 7, 11], "remot": [0, 4, 7, 10], "forth": 0, "o": [0, 2, 9, 10, 11], "refer": [0, 2, 4], "latest": [0, 2, 5, 10], "latest_client_link": 0, "server_destin": 0, "linkexampl": 0, "set_link_established_callback": [0, 7], "client_connect": 0, "server_loop": 0, "set_link_closed_callback": [0, 7], "client_disconnect": 0, "server_packet_receiv": 0, "disconnect": 0, "activ": [0, 2, 5, 7, 9], "last": [0, 5, 7], "reply_text": 0, "reply_data": 0, "server_link": 0, "sleep": [0, 10], "begin": [0, 3, 7], "And": 0, "client_packet_receiv": 0, "close": [0, 6, 7, 10], "link_establish": 0, "link_clos": 0, "interact": [0, 2, 7, 9, 10], "client_loop": 0, "becom": [0, 2, 6, 9], "should_quit": 0, "fals": [0, 5, 7, 10], "should": [0, 2, 5, 6, 7, 9, 10, 11], "q": [0, 10], "teardown": [0, 7], "mdu": [0, 7], "size": [0, 2, 5, 7, 9, 10], "exce": [0, 5, 7], "log_error": 0, "error": [0, 2, 8, 10], "ha": [0, 2, 3, 5, 6, 7, 9, 11], "been": [0, 2, 3, 5, 6, 7, 9, 11], "later": [0, 2, 5, 10], "teardown_reason": 0, "now": [0, 2, 6, 9, 10], "elif": 0, "destination_clos": 0, "exit_handl": 0, "5": [0, 2, 5, 10], "_exit": 0, "identifi": [0, 5, 7, 9, 10], "intiat": 0, "initi": [0, 6, 7, 9, 11], "peer": [0, 2, 5, 7, 9, 10], "identifyexampl": 0, "set_remote_identified_callback": [0, 7], "remote_identifi": 0, "origin": [0, 6, 9], "displai": [0, 9, 10], "remote_p": 0, "unidentifi": 0, "get_remote_ident": [0, 7], "client_ident": 0, "sendig": 0, "perform": [0, 2, 5, 6, 9, 10], "random_text_gener": 0, "request_id": [0, 7], "link_id": [0, 7], "remote_ident": [0, 7], "requested_at": [0, 7], "look": [0, 2, 5, 9, 10], "On": [0, 2, 5, 10], "full": [0, 5, 7, 9, 10, 11], "moon": 0, "becki": 0, "upset": 0, "stai": [0, 9, 10], "awai": [0, 5, 6, 9, 10], "pet": 0, "shop": 0, "stock": 0, "requestexampl": 0, "register_request_handl": [0, 7], "response_gener": [0, 7], "allow": [0, 2, 3, 5, 6, 7, 9, 10, 11], "allow_al": [0, 7], "response_callback": [0, 7], "got_respons": 0, "failed_callback": [0, 7], "request_fail": 0, "request_receipt": [0, 7], "request_receiv": 0, "structur": [0, 7, 9, 11], "datetim": 0, "vendor": [0, 3], "umsgpack": 0, "share": [0, 2, 6, 7, 9, 10], "object": [0, 7], "subclass": [0, 7], "messagebas": [0, 4, 7], "ensur": [0, 5, 7, 9, 10, 11], "serial": [0, 2, 4, 9, 11], "deseri": 0, "multiplex": 0, "other": [0, 2, 3, 5, 6, 7, 9, 10], "both": [0, 2, 3, 5, 6, 7, 9, 10, 11], "same": [0, 2, 3, 5, 6, 7, 9, 10], "definit": [0, 9], "note": [0, 3, 4, 5, 7, 9, 10], "wish": [0, 9, 10], "make": [0, 2, 3, 5, 8, 9, 10], "stringmessag": 0, "convei": 0, "timestamp": 0, "msgtype": [0, 7], "variabl": [0, 7], "assign": [0, 9, 10], "integ": 0, "valu": [0, 5, 7, 9], "constructor": 0, "uniqu": [0, 5, 7, 9, 11], "across": [0, 3, 6], "0xf000": [0, 7], "reserv": [0, 7, 9], "0x0101": 0, "callabl": [0, 7], "paramet": [0, 3, 5, 6, 7, 9, 10], "empti": 0, "version": [0, 2, 9, 10], "unpack": [0, 7], "final": [0, 7, 9], "implement": [0, 5, 6, 7, 8, 9, 11], "pack": [0, 7], "raw": [0, 3, 7], "payload": [0, 7, 9, 10], "packag": [0, 2, 5, 9], "bundl": 0, "could": [0, 2, 5, 6, 7, 9, 11], "struct": 0, "python": [0, 4, 7, 9, 10, 11], "more": [0, 2, 3, 5, 6, 7, 9, 10, 11], "fit": 0, "entir": [0, 6, 7, 9, 10], "avail": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "properti": [0, 6, 7], "slightli": [0, 2], "less": [0, 5, 7, 9, 11], "due": [0, 6], "header": [0, 7, 9], "content": [0, 2, 6, 10], "stream": [0, 7, 9], "packb": 0, "unpackb": 0, "channelexampl": 0, "get_channel": [0, 7], "register_message_typ": [0, 7], "add_message_handl": [0, 7], "server_message_receiv": 0, "param": 0, "deserializ": 0, "unless": [0, 2, 5, 7, 9], "preced": 0, "indic": 0, "isinst": 0, "reply_messag": 0, "order": [0, 7, 10], "were": [0, 6], "consid": [0, 5, 7, 9, 11], "subsequ": [0, 9], "skip": 0, "packed_s": 0, "is_ready_to_send": [0, 7], "pleas": [0, 2, 5, 7, 10, 11], "pend": 0, "complet": [0, 2, 3, 5, 6, 7, 9, 10, 11], "client_message_receiv": 0, "reader": [0, 7], "writer": [0, 7], "__future__": 0, "annot": 0, "latest_buff": 0, "bufferexampl": 0, "old": [0, 3, 8, 9], "stream_id": [0, 7], "bit": [0, 2, 5, 7, 9, 10, 11], "like": [0, 2, 3, 5, 6, 7, 9, 10, 11], "file": [0, 2, 3, 5, 6, 7, 9, 10, 11], "descriptor": 0, "actual": [0, 2, 5, 9], "separ": [0, 2, 5, 6, 9, 10], "unidirect": 0, "flow": [0, 5, 6], "opposit": [0, 5], "create_bidirectional_buff": [0, 7], "server_buffer_readi": 0, "ready_byt": [0, 7], "int": [0, 7], "otherwis": [0, 7], "forc": [0, 10], "server_client_connect": 0, "detail": [0, 2, 4, 5, 7, 10, 11], "client_buffer_readi": 0, "termin": [0, 2, 7], "download": [0, 5, 10], "resourc": [0, 2, 4, 7, 8], "effici": [0, 2, 5, 9, 11], "serv": [0, 3, 5, 6, 9, 10], "larg": [0, 3, 5, 6, 7, 9, 11], "transfer": [0, 7, 9, 10, 11], "recommend": [0, 2, 9], "compress": [0, 7, 9], "hashmap": 0, "sequenc": [0, 7, 9, 11], "long": [0, 2, 3, 5, 7, 9], "slow": [0, 5, 9], "cpu": [0, 9], "probabl": [0, 2, 6, 9, 10, 11], "result": [0, 9, 10], "befor": [0, 2, 5, 7, 9, 10], "prepar": [0, 6], "instead": [0, 2, 5, 9, 10], "slice": 0, "chunk": 0, "suitabl": [0, 2, 5, 6, 9, 11], "thread": 0, "app_timeout": 0, "45": [0, 9], "serve_path": 0, "here": [0, 2, 5, 9, 10], "conveni": 0, "list_fil": 0, "entri": [0, 2, 9], "listdir": 0, "isfil": 0, "join": [0, 2, 6, 8, 9], "host": [0, 2, 5, 9, 10], "still": [0, 2, 6, 9], "isdir": 0, "list_packet": 0, "list_receipt": 0, "list_deliv": 0, "list_timeout": 0, "too": [0, 6], "mani": [0, 2, 3, 5, 6, 7, 9, 10, 11], "split": 0, "filelist": 0, "multipl": [0, 5, 6, 9, 10], "hint": 0, "alreadi": [0, 2, 3, 6, 7, 9, 10], "support": [0, 2, 4, 5, 6, 9, 10, 11], "after": [0, 2, 5, 6, 7, 9, 10], "re": [0, 5, 7, 9], "keep": [0, 6, 7, 9, 10, 11], "open": [0, 3, 5, 6, 7, 8, 9, 10, 11], "client_request": 0, "longer": [0, 2, 6, 9, 10], "filenam": 0, "rb": 0, "file_resourc": 0, "resource_sending_conclud": 0, "somethign": 0, "went": 0, "wrong": [0, 5], "don": [0, 2, 6, 7, 10], "unknown": [0, 5, 7, 9, 10], "conclud": [0, 7], "hasattr": 0, "server_fil": 0, "current": [0, 2, 4, 5, 7, 9], "current_download": 0, "current_filenam": 0, "statist": [0, 5, 8], "download_start": 0, "download_finish": 0, "download_tim": 0, "transfer_s": 0, "file_s": 0, "expect": [0, 5, 7, 9, 10], "normal": [0, 2, 5, 7, 10], "accordingli": 0, "filelist_receiv": 0, "advertis": [0, 7], "set_resource_strategi": [0, 7], "accept_al": [0, 7], "set_resource_started_callback": [0, 7], "download_began": 0, "set_resource_concluded_callback": [0, 7], "download_conclud": 0, "menu": 0, "menu_mod": 0, "down": [0, 3, 5, 7], "request_packet": 0, "create_receipt": [0, 7], "print_menu": 0, "25": [0, 4, 11], "user_input": 0, "screen": 0, "variou": [0, 2, 5, 6, 9, 10], "state": 0, "It": [0, 2, 3, 5, 7, 9, 10, 11], "uninterest": 0, "won": 0, "clear_screen": 0, "print_filelist": 0, "percent": [0, 5], "get_progress": [0, 7], "100": [0, 5, 9], "rprogress": 0, "save_error": 0, "disk": [0, 7], "hour": [0, 5], "rem": 0, "divmod": 0, "3600": [0, 5], "minut": [0, 2, 5, 9], "60": [0, 5], "timestr": 0, "05": 0, "2f": 0, "ttime": 0, "taken": [0, 9], "tfile": 0, "size_str": 0, "tdata": 0, "teffect": 0, "rate": [0, 4, 7, 10], "suffix": 0, "b": [0, 6, 10], "ttransfer": 0, "press": 0, "index": [0, 2, 4], "enumer": 0, "filelist_data": 0, "extend": [0, 2, 7], "local": [0, 2, 5, 6, 7, 9, 10, 11], "append": [0, 9], "visibl": 0, "updat": [0, 2, 7, 9, 10], "small": [0, 5, 6, 9, 11], "job": 0, "potenti": [0, 5, 8, 9, 10, 11], "target": [0, 5, 10], "filelist_timeout_job": 0, "setdaemon": 0, "detect": 0, "shown": 0, "progress": [0, 7, 10, 11], "total_s": 0, "saved_filenam": 0, "counter": 0, "wb": 0, "human": [0, 7, 8, 9], "readabl": [0, 7, 9], "num": 0, "unit": [0, 2, 7, 10], "ki": 0, "mi": 0, "gi": 0, "ti": [0, 9], "pi": [0, 4, 6, 9, 10, 11], "ei": 0, "zi": 0, "last_unit": 0, "yi": 0, "k": 0, "m": [0, 2, 9, 10], "g": [0, 10], "p": [0, 10], "z": 0, "y": 0, "ab": 0, "1024": 0, "clear": [0, 5, 7, 9, 10], "cl": 0, "nt": 0, "dir": 0, "best": [2, 9, 11], "guid": [2, 3, 9], "outlin": [2, 3, 9], "sensibl": [2, 3, 5], "scenario": [2, 4, 9], "relat": 2, "easiest": [2, 3, 5, 9], "via": [2, 3, 5, 8, 9, 10, 11], "pip": [2, 3, 10], "manag": [2, 6, 7, 9, 10, 11], "sudo": [2, 10], "apt": 2, "python3": [2, 3], "pamac": 2, "similar": [2, 3, 5, 6, 7, 10, 11], "dowload": 2, "releas": [2, 5, 9], "wheel": 2, "channel": [2, 4, 5, 6, 7, 8, 9, 11], "offlin": 2, "py3": 2, "whl": 2, "mai": [2, 5, 7, 9, 10], "case": [2, 3, 5, 6, 9, 10], "usual": 2, "essenti": [2, 5, 9], "deriv": [2, 7, 9, 11], "arch": 2, "manjaro": 2, "devel": 2, "fedora": 2, "dnf": 2, "groupinstal": 2, "tool": [2, 3, 9, 10, 11], "librari": 2, "compil": 2, "miss": 2, "even": [2, 5, 6, 9, 10, 11], "pre": [2, 7, 9], "built": [2, 5, 9, 11], "few": [2, 3, 5, 6, 9, 10, 11], "extrem": [2, 9, 10, 11], "low": [2, 3, 5, 6, 9, 11], "bandwidth": [2, 5, 6, 7, 9, 10, 11], "These": [2, 5, 7, 9, 10], "feel": 2, "work": [2, 3, 5, 6, 9, 10, 11], "design": [2, 3, 6, 9, 11], "well": [2, 3, 5, 6, 7, 9, 10, 11], "lora": [2, 3, 4, 9, 11], "link": [2, 3, 4, 5, 6, 7, 10, 11], "wifi": [2, 4, 5, 6, 9, 10, 11], "wire": [2, 3, 4, 5, 11], "ethernet": [2, 4, 5, 6, 9, 11], "combin": [2, 4, 6, 9], "As": [2, 3, 5, 6, 7, 9, 11], "easi": [2, 3, 5, 9, 10, 11], "experi": [2, 9], "without": [2, 3, 5, 6, 9, 11], "transceiv": [2, 3, 5, 9, 11], "infrastructur": [2, 3, 5, 6, 9, 10], "launch": [2, 10], "devic": [2, 4, 5, 6, 7, 9, 10], "enough": [2, 3, 9], "physic": [2, 3, 5, 9, 10], "rnsh": [2, 10], "fulli": [2, 3, 9, 10, 11], "session": [2, 9], "pipe": [2, 4, 11], "ssh": 2, "veri": [2, 3, 5, 6, 7, 8, 9, 10, 11], "facilit": 2, "suit": [2, 3, 9, 10], "featur": [2, 8, 9, 11], "delai": [2, 5, 9, 10], "browser": 2, "page": [2, 4, 9], "dynam": [2, 10], "render": 2, "authent": [2, 5, 6, 7, 9, 11], "face": [2, 5], "protocol": [2, 3, 4, 5, 11], "lxmf": [2, 10], "anoth": [2, 7, 9, 10], "project": 2, "nomadnet": 2, "might": [2, 5, 6, 9, 10], "reboot": 2, "again": [2, 5, 9, 10], "would": [2, 5, 6, 7, 9], "rather": [2, 7], "graphic": 2, "linux": [2, 3, 9], "maco": 2, "peopl": [2, 9], "compat": [2, 3, 5, 7, 9], "i2p": [2, 4, 11], "qr": 2, "paper": 2, "anyth": [2, 3, 5, 9, 10, 11], "interoper": [2, 3, 6, 9, 11], "come": [2, 9], "easier": [2, 5, 6, 10], "rnsd": [2, 4], "background": [2, 5], "foreground": 2, "servic": [2, 4, 6], "rnstatu": [2, 4, 5, 9], "rnpath": [2, 4, 5], "rnprobe": [2, 4], "view": [2, 5, 9, 10], "chapter": [2, 3, 5, 6, 7, 9, 10, 11], "locat": [2, 3, 6, 9, 10], "exampl": [2, 3, 4, 5, 7, 9, 10, 11], "exampleconfig": [2, 10], "broadcast": [2, 4, 5, 7, 9], "domain": [2, 5], "further": [2, 4, 5], "tcp": [2, 3, 4, 6, 9, 11], "There": [2, 6, 9, 11], "subnet": [2, 6], "rout": [2, 3, 5, 6, 7, 9, 10, 11], "tabl": [2, 5, 6, 9, 10], "thing": 2, "discov": [2, 5], "topographi": [2, 6, 9], "situat": [2, 3, 5, 6, 9], "where": [2, 3, 4, 5, 6, 7, 9, 10], "utilis": [2, 5, 6, 7, 10, 11], "extern": [2, 5, 7, 11], "often": [2, 5, 6, 9, 10], "suffici": [2, 5, 9, 10], "act": [2, 7, 9, 10], "gatewai": [2, 5, 6, 9], "enabl": [2, 3, 5, 6, 7, 9, 10, 11], "wider": [2, 5, 9, 10], "autointerfac": [2, 3, 5, 10], "possibli": 2, "offer": [2, 4, 5, 7, 9], "carefulli": 2, "tcpserverinterfac": [2, 5], "access": [2, 4, 5, 6, 7, 10], "ip": [2, 3, 5, 9, 10, 11], "faster": [2, 5, 9], "lower": [2, 5, 10], "latenc": [2, 9, 11], "energi": 2, "i2pinterfac": [2, 5], "howev": [2, 6, 9], "leak": 2, "reveal": [2, 7, 9, 11], "who": [2, 9], "inspect": [2, 5, 6, 9, 10], "someon": [2, 5], "determin": [2, 7, 9], "adversari": 2, "record": [2, 9], "metadata": 2, "transmiss": [2, 5, 7, 9], "though": [2, 5, 9], "publicli": [2, 5], "most": [2, 3, 5, 6, 9, 10], "anymor": 2, "through": [2, 3, 5, 6, 7, 9, 10, 11], "invis": [2, 5], "daemon": [2, 5, 7, 10], "parallel": 2, "For": [2, 3, 5, 6, 7, 9, 10, 11], "alwai": [2, 5, 7, 9, 10], "node": [2, 4, 5, 6, 10, 11], "i2pd": [2, 5], "mix": [2, 5, 6, 10], "hide": 2, "relai": 2, "extra": [2, 5, 6, 10], "comput": [2, 9, 11], "power": [2, 3, 5, 9, 10], "attack": 2, "form": [2, 5, 6, 7, 9], "deep": 2, "much": [2, 5, 6, 9, 10], "difficult": [2, 3], "non": [2, 7, 9], "behind": [2, 9], "firewal": [2, 5], "nat": 2, "preserv": [2, 7], "anonym": [2, 6, 7, 9, 11], "care": [2, 7, 11], "experiment": [2, 11], "made": [2, 7, 9], "amsterdam": 2, "hub": [2, 5], "tcpclientinterfac": [2, 3, 5], "ye": [2, 5, 9, 10], "target_host": [2, 5], "target_port": [2, 5], "4965": [2, 10], "betweenthebord": 2, "4242": [2, 5], "g3br23bvx3lq5uddcsjii74xgmn6y5q325ovrkq2zw2wbzbqgbuq": 2, "b32": [2, 5], "point": [2, 3, 5, 6, 9, 10], "absolut": [2, 8, 11], "usag": [2, 4, 5, 7, 8, 10], "occasion": 2, "test": [2, 9, 10], "failur": [2, 5], "guarante": [2, 9], "hardwar": [2, 4, 5, 6, 7, 9, 10, 11], "wide": [2, 3, 5, 9, 11], "section": [2, 3, 5, 6, 9, 10], "easili": [2, 5, 6, 9, 10, 11], "cheapli": 2, "rnode": [2, 4, 9, 10, 11], "purpos": [2, 3, 5, 7, 9], "digit": [2, 3, 9, 11], "integr": [2, 6, 9], "yourself": [2, 9, 11], "custom": [2, 5, 7, 9, 11], "firmwar": [2, 3, 9, 10], "board": [2, 4, 9, 11], "auto": [2, 3, 4, 7, 9], "script": [2, 3], "prefer": [2, 9], "purchas": [2, 6, 9, 11], "supplier": 2, "addit": [2, 3, 5, 7, 9, 10, 11], "privat": [2, 5, 7, 8, 9, 10, 11], "secur": [2, 9, 11], "uncensor": 2, "mesh": [2, 5, 6, 11], "think": 2, "welcom": 2, "head": 2, "discuss": [2, 3, 9], "propos": 2, "abov": [2, 3, 5, 9, 10], "next": [2, 6, 7, 9], "step": [2, 3], "pyseri": 2, "api": [2, 4, 9, 11], "associ": [2, 7, 9], "recip": 2, "cryptographi": [2, 9, 11], "clone": 2, "repositori": [2, 8, 9], "git": 2, "move": [2, 5, 9, 10], "folder": 2, "symlink": [2, 10], "cd": 2, "ln": [2, 10], "echo": [2, 4], "ve": 2, "immedi": [2, 5, 10], "necessari": [2, 3, 5, 6, 7, 9], "nano": 2, "repeat": 2, "process": [2, 3, 5, 7, 9], "h": [2, 10], "ping": [2, 10], "replac": [2, 9, 10], "below": [2, 3, 5, 10], "174a64852a75682259ad8b921b8bf416": 2, "filetransf": [2, 4, 7], "understand": [2, 4, 7, 10], "submit": 2, "pull": 2, "request": [2, 4, 5, 7, 9, 10], "good": [2, 3, 6, 9, 10], "idea": [2, 9, 10], "introduc": [2, 9], "disucss": 2, "forum": 2, "maintain": [2, 9], "place": [2, 5, 6, 9, 10], "procedur": [2, 7, 9], "quirk": 2, "worth": 2, "being": [2, 5, 7, 9], "awar": [2, 9], "termux": 2, "f": [2, 10], "droid": 2, "emul": 2, "environ": [2, 6, 9], "abil": [2, 3], "pkg": 2, "sure": [2, 3, 10], "upgrad": [2, 9], "Then": 2, "reason": [2, 5, 9], "attempt": [2, 3, 7], "openssl": [2, 9], "libffi": 2, "rust": 2, "export": 2, "cargo_build_target": 2, "aarch64": 2, "sever": [2, 6, 7, 10], "succe": 2, "softwar": [2, 3, 5, 9, 11], "possibl": [2, 3, 5, 6, 7, 9, 10, 11], "apk": 2, "tutori": 2, "code": [2, 3, 4, 5, 10], "startig": 2, "architectur": 2, "precompil": 2, "dev": [2, 5, 10], "64": [2, 9, 10], "32": [2, 9], "rasperri": 2, "os": [2, 5], "april": 2, "2023": [2, 10], "onto": [2, 9], "unfortun": 2, "pipx": 2, "isol": [2, 5, 10], "neg": 2, "affect": [2, 5], "ensurepath": 2, "restor": [2, 5], "behaviour": [2, 5, 10], "edit": [2, 10], "conf": 2, "break": [2, 7, 9, 11], "somewhat": 2, "mislead": 2, "choic": 2, "word": 2, "cours": [2, 5, 9], "rare": [2, 5], "lead": [2, 9], "conflict": 2, "pose": [2, 9], "problem": [2, 9], "_could_": 2, "obscur": 2, "rnspure": 2, "No": [2, 5, 9, 10, 11], "matter": [2, 5], "perfectli": 2, "pyca": [2, 9], "cryptograph": [2, 4, 6, 10, 11], "primit": [2, 4], "One": [3, 7], "truli": [3, 9], "valuabl": [3, 8], "almost": [3, 5, 9, 10], "conceiv": 3, "kind": [3, 5, 6, 9], "medium": [3, 5, 6, 7, 9, 11], "flexibl": [3, 5, 11], "cover": [3, 9, 11], "wireless": [3, 6], "decad": 3, "modern": [3, 9], "millimet": 3, "wave": 3, "backhaul": [3, 6], "oper": [3, 5, 6, 7, 9, 10, 11], "chanc": 3, "box": 3, "glue": 3, "littl": [3, 9], "effort": 3, "pipeinterfac": [3, 5], "kiss": [3, 4, 10, 11], "simplyequip": 3, "broad": 3, "abund": 3, "sometim": 3, "especi": [3, 5], "scratch": 3, "real": [3, 6, 11], "world": [3, 6, 11], "minim": [3, 4, 9], "cost": [3, 9, 11], "fundament": [3, 9], "categori": 3, "addition": [3, 5, 9], "common": [3, 4, 6, 9, 10, 11], "briefli": [3, 9], "describ": [3, 5, 7, 9], "emploi": [3, 9], "pattern": [3, 9], "high": [3, 5, 9, 11], "capac": [3, 5, 7, 9], "gain": [3, 7, 9], "antenna": 3, "backbon": 3, "area": [3, 5, 6, 9, 11], "reliabl": [3, 5, 6, 7, 9, 11], "commonli": 3, "either": [3, 5, 6, 7, 9, 10], "expens": 3, "hard": 3, "hungri": 3, "allevi": 3, "particular": 3, "plaform": 3, "depend": [3, 4, 6, 7, 9, 10], "its": [3, 5, 7, 9], "compon": [3, 8, 9], "frequenc": [3, 5, 9, 10], "band": [3, 9], "scheme": 3, "limit": [3, 5, 6, 9], "ism": [3, 9], "avoid": [3, 9, 10], "confus": [3, 9], "layer": [3, 5, 6, 9, 11], "noth": [3, 11], "lorawan": [3, 9], "standard": [3, 9], "central": [3, 6, 9], "iot": 3, "overhead": [3, 5, 9], "level": [3, 5, 9, 10], "directli": [3, 5, 7, 9, 10, 11], "replic": [3, 9], "togeth": [3, 9, 10], "exact": [3, 5, 9], "explain": [3, 7], "approach": [3, 9, 10], "develop": [3, 4, 7, 8, 9, 11], "boil": 3, "obtain": [3, 7, 9], "autom": [3, 8, 9], "provis": [3, 10], "rnodeinterfac": [3, 5, 10], "ic": 3, "semtech": 3, "sx1276": 3, "platform": [3, 4, 9], "esp32": 3, "manufactur": 3, "io": 3, "avr": 3, "atmega1284p": 3, "rnodeconf": [3, 4], "autoinstal": [3, 10], "seri": 3, "question": [3, 5], "port": [3, 4, 5, 6, 9, 11], "air": [3, 11], "id": [3, 5, 7, 9, 10], "itself": [3, 4, 9], "short": [3, 5, 9, 10], "bridg": [3, 4], "behav": 3, "mean": [3, 5, 6, 9, 10], "dhcp": [3, 5, 10], "dn": 3, "least": [3, 5, 9, 10, 11], "transpar": [3, 5, 9, 10], "distanc": [3, 9], "ubiqu": 3, "airmax": 3, "ltu": 3, "mikrotik": 3, "exhaust": [3, 9], "rel": [3, 9, 11], "cheap": [3, 9], "co": [3, 5, 11], "concurr": [3, 9, 10], "switch": [3, 5, 9, 10], "fiber": 3, "optic": [3, 11], "virtual": [3, 5, 6, 9, 10, 11], "adapt": [3, 6], "tun": 3, "tap": 3, "serialinterfac": [3, 5], "usb": [3, 6, 9, 10], "freedv": 3, "tnc": [3, 5, 7, 10, 11], "dire": 3, "wolf": 3, "aim": [4, 9], "particip": [4, 6, 9], "pdf": 4, "epub": 4, "caveat": 4, "emptor": 4, "fast": [4, 5, 7, 9], "standalon": 4, "instal": [4, 5, 6, 9, 10, 11], "resolv": [4, 5, 10], "issu": [4, 6, 8], "base": [4, 5, 6, 7, 9, 10, 11], "shell": [4, 10], "nomad": 4, "sideband": 4, "With": [4, 5, 6, 9, 10], "internet": [4, 5, 9, 11], "testnet": [4, 10], "radio": [4, 5, 6, 7, 9, 10, 11], "android": 4, "arm64": 4, "raspberri": [4, 6, 9, 10, 11], "debian": [4, 9, 10], "bookworm": 4, "ubuntu": [4, 10], "lunar": 4, "pure": [4, 9], "rnid": 4, "rncp": 4, "rnx": 4, "improv": [4, 5, 8], "fix": [4, 9], "motiv": 4, "goal": [4, 5], "introduct": 4, "announc": [4, 7, 10], "mechan": [4, 5], "reach": [4, 5, 6], "prioritis": [4, 5, 6, 7], "propag": [4, 5, 7], "rule": [4, 5], "modem": [4, 5, 6, 7, 9, 11], "udp": [4, 6, 9, 10, 11], "ax": [4, 11], "ingress": 4, "concept": [4, 9, 10], "overview": [4, 5, 9], "interconnect": [4, 5, 9], "site": [4, 5], "growth": 4, "converg": [4, 9], "identif": [4, 5, 11], "respons": [4, 7, 9], "buffer": [4, 5, 7], "donat": 4, "contribut": 4, "requestreceipt": [4, 7], "rawchannelread": [4, 7], "rawchannelwrit": [4, 7], "search": 4, "distinct": [5, 9], "topologi": [5, 9], "endless": 5, "give": [5, 9, 10], "respect": [5, 11], "discover": 5, "autoconfigur": [5, 11], "ipv6": [5, 10], "router": [5, 10], "sort": [5, 9], "interface_en": [5, 10], "lan": 5, "group": [5, 7, 9], "group_id": 5, "kernel": [5, 10, 11], "wlan0": 5, "eth1": 5, "Or": [5, 10, 11], "ignor": [5, 7, 9], "ones": [5, 10], "ignored_devic": 5, "tun0": 5, "eth0": 5, "multicast": 5, "autodiscov": 5, "discoveri": [5, 9, 10], "scope": 5, "admin": 5, "organis": [5, 6, 8], "custom_network_nam": 5, "discovery_scop": 5, "discovery_port": 5, "48555": 5, "data_port": 5, "49555": 5, "frequent": 5, "block": 5, "inbound": [5, 7], "portabl": [5, 9], "persist": [5, 10], "achiev": [5, 7, 9], "geti2p": 5, "net": 5, "websit": 5, "base32": 5, "comma": 5, "5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq": 5, "output": [5, 10], "event": 5, "simplest": [5, 9], "tunnel": [5, 9, 11], "interchang": 5, "degre": 5, "retain": 5, "eas": [5, 9], "simpler": 5, "listen_ip": 5, "listen_port": 5, "bind": 5, "10": [5, 9, 10], "88": 5, "i2p_tunnel": 5, "127": 5, "5001": 5, "dedic": [5, 9], "natur": 5, "toler": 5, "intermitt": 5, "gracefulli": 5, "reappear": 5, "hostnam": 5, "expos": [5, 7], "soundmodem": 5, "kiss_fram": 5, "8001": 5, "caution": 5, "frame": 5, "conjunct": 5, "never": [5, 7, 9], "disabl": [5, 9, 10], "intern": [5, 7, 9], "recoveri": 5, "greatli": 5, "unreli": 5, "implic": 5, "better": 5, "udpinterfac": 5, "forward_ip": 5, "255": [5, 10], "forward_port": 5, "assum": [5, 9], "55": 5, "72": 5, "24": 5, "equival": 5, "forward": [5, 7, 9, 11], "segment": [5, 6, 7, 9, 11], "15": 5, "16": [5, 9, 10], "ttyusb0": [5, 10], "867": 5, "mhz": [5, 9], "867200000": 5, "125": 5, "khz": 5, "125000": 5, "tx": [5, 10], "7": [5, 9, 10], "mw": 5, "txpower": 5, "spread": [5, 10], "factor": [5, 7, 10], "12": [5, 10], "fastest": [5, 9], "longest": 5, "spreadingfactor": 5, "throough": 5, "codingr": 5, "interv": [5, 7, 10], "id_callsign": 5, "mycal": 5, "id_interv": 5, "600": 5, "homebrew": 5, "amount": [5, 6, 7, 9, 11], "ram": 5, "flow_control": 5, "airtim": 5, "term": [5, 6, 9], "appli": [5, 7, 9], "window": 5, "approxim": 5, "enforc": 5, "roll": 5, "airtime_limit_long": 5, "airtime_limit_short": 5, "33": 5, "pair": [5, 7, 9, 10], "laser": 5, "baud": [5, 10], "speed": [5, 9, 10], "115200": [5, 10], "databit": [5, 10], "pariti": [5, 10], "stopbit": [5, 10], "stdin": [5, 10], "netcat": 5, "l": [5, 10], "5757": 5, "respawn": 5, "respawn_delai": 5, "continu": [5, 7, 8, 11], "scan": 5, "eof": 5, "respawn_interv": 5, "varieti": [5, 9, 10, 11], "openmodem": [5, 11], "period": [5, 7, 9], "beacon": 5, "station": 5, "kissinterfac": [5, 10], "ttyusb1": 5, "preambl": [5, 10], "150": [5, 10], "tail": 5, "txtail": [5, 10], "cdma": 5, "200": [5, 10], "slottim": [5, 10], "20": [5, 9, 10], "elaps": 5, "comment": [5, 10], "amateur": [5, 11], "spectrum": [5, 9], "encapsul": [5, 11], "callsign": 5, "ssid": 5, "realli": [5, 7], "doesn": 5, "incur": 5, "ax25kissinterfac": 5, "no1cll": 5, "ttyusb2": 5, "150m": 5, "increas": [5, 10], "squelch": 5, "rx": 5, "turnaround": 5, "kept": [5, 6, 7, 9], "wast": 5, "bring": 5, "brought": [5, 10], "access_point": 5, "shorthand": [5, 10], "ap": 5, "shorter": 5, "expiri": 5, "mostli": [5, 6, 9], "quiet": [5, 10], "momentarili": 5, "disappear": [5, 10], "network_nam": 5, "passphras": [5, 9], "alon": 5, "ifac_s": 5, "customis": 5, "carri": [5, 7, 9, 10], "512": [5, 7, 9], "announce_cap": [5, 7], "maximum": [5, 7, 9], "alloc": [5, 7, 9, 10], "given": [5, 6, 7, 9, 10], "upkeep": 5, "cap": 5, "queue": [5, 9], "nearbi": 5, "overwhelm": [5, 7], "rapidli": 5, "spam": 5, "effect": 5, "excess": 5, "benefici": [5, 10], "balanc": 5, "necesarri": 5, "bitrat": 5, "report": [5, 8, 10], "guess": 5, "per": [5, 7, 9, 10, 11], "strictli": [5, 9], "complex": [5, 9], "left": [5, 7, 9, 10], "gw": 5, "behalf": 5, "resid": 5, "requestor": 5, "chain": 5, "along": [5, 6, 7, 9, 10], "boundari": 5, "remain": [5, 7, 9], "roam": 5, "mobil": [5, 9], "seen": [5, 9], "perspect": [5, 7, 9, 11], "vehicl": 5, "equip": [5, 6, 9], "side": [5, 11], "expir": 5, "significantli": 5, "impact": [5, 9], "announce_rate_target": 5, "announce_rate_grac": 5, "announce_rate_penalti": 5, "basi": [5, 7, 9, 10, 11], "moder": 5, "violat": 5, "penalti": 5, "7200": 5, "annouce_cap": 5, "mention": [5, 9], "strategi": [5, 7], "decis": [5, 9], "slower": [5, 7, 9], "hop": [5, 6, 7, 9, 10, 11], "right": [5, 6], "tend": 5, "conserv": 5, "span": [5, 9], "seamlessli": 5, "influx": 5, "annonuc": [], "newli": [5, 6, 7, 9], "previous": [5, 6, 7, 9], "occur": [5, 10, 11], "hold": [5, 7, 9], "interrupt": 5, "neccessari": 5, "modifi": [5, 9, 10], "ingress_control": 5, "ic_new_tim": 5, "spawn": 5, "sub": 5, "ic_burst_freq_new": 5, "ic_burst_freq": 5, "burst": 5, "temporarili": 5, "held": 5, "ic_max_held_announc": 5, "drop": [5, 7, 9, 10], "256": [5, 7, 9, 10], "ic_burst_hold": 5, "threshold": 5, "ic_burst_penalti": 5, "ic_held_release_interv": 5, "30": [5, 10], "knowledg": [6, 9], "tradit": [6, 9], "worri": 6, "coordin": [6, 7, 9, 11], "evolv": 6, "futur": [6, 9], "mind": [6, 11], "autonom": [6, 9], "terminologi": [6, 9], "rest": [6, 11], "billion": [6, 9], "larger": [6, 9, 10], "higher": [6, 11], "discrimin": 6, "ephemer": [6, 7, 9, 11], "ellipt": [6, 7, 9, 11], "curv": [6, 7, 9, 11], "diffi": [6, 9, 11], "hellman": [6, 9, 11], "exchang": [6, 7, 9, 11], "curve25519": [6, 7, 9, 11], "throttl": 6, "thu": [6, 7, 9], "agnost": [6, 9], "equal": [6, 7, 9], "keystor": 6, "degrad": 6, "stationari": [6, 10], "candid": 6, "optim": 6, "intend": [6, 9], "trustless": [6, 9, 11], "leav": [6, 9], "free": [6, 8, 11], "unorganis": 6, "manner": 6, "far": [6, 9], "unexplor": 6, "dissolv": 6, "organ": 6, "restrict": 6, "legaci": 6, "unifi": 6, "underli": [6, 11], "carrier": [6, 11], "involv": 6, "hardlin": 6, "decid": [6, 7, 9], "illustr": [6, 9], "plan": [6, 9], "member": 6, "mainli": 6, "three": [6, 9], "hill": 6, "top": [6, 9], "chosen": [6, 9], "sight": 6, "becaus": [6, 9], "four": 6, "At": [6, 9], "cabl": 6, "suppli": [6, 7, 9], "grow": 6, "core": [6, 9, 10, 11], "those": [6, 9], "d": [6, 10], "island": 6, "investig": 6, "dori": 6, "willing": 6, "she": 6, "her": 6, "home": 6, "everyon": [6, 9], "vice": [6, 11], "versa": [6, 11], "vhf": [6, 9, 11], "outli": 6, "geograph": 6, "coverag": 6, "dai": 6, "find": [6, 9], "poorli": 6, "outlier": 6, "signatur": [7, 9, 10, 11], "configdir": 7, "logdest": 7, "verbos": [7, 10], "exactli": [7, 9], "independ": [7, 9, 11], "inter": 7, "soon": 7, "kill": [7, 9], "forcibli": [7, 10], "advantag": 7, "demand": 7, "mtu": [7, 9, 11], "500": [7, 9, 11], "adher": 7, "507": 7, "prerequisit": 7, "percentag": 7, "schedul": 7, "queu": [7, 10], "fewer": 7, "distant": 7, "smaller": 7, "eventu": 7, "individu": [7, 9, 11], "static": 7, "should_use_implicit_proof": 7, "explicit": 7, "implicit": [7, 9], "transport_en": 7, "create_kei": 7, "decrypt": [7, 9, 10], "verif": [7, 9, 10], "sign": [7, 9, 10], "dh": 7, "keysiz": 7, "x25519": [7, 9, 11], "concaten": 7, "128": [7, 9, 11], "constant": 7, "truncat": [7, 9], "recall_app_data": 7, "heard": [7, 9], "full_hash": 7, "sha": [7, 9], "truncated_hash": 7, "from_byt": 7, "prv_byte": 7, "save": [7, 9], "hazard": 7, "feed": 7, "from_fil": 7, "to_fil": 7, "Be": [7, 10], "get_private_kei": 7, "get_public_kei": 7, "load_private_kei": 7, "load_public_kei": 7, "pub_byt": 7, "ciphertext": 7, "token": [7, 9], "keyerror": 7, "ciphertext_token": 7, "presenc": 7, "ingo": 7, "zero": [7, 11], "expand_nam": 7, "app_and_aspects_from_nam": 7, "full_nam": [7, 10], "tupl": 7, "hash_from_name_and_ident": 7, "path_respons": 7, "attached_interfac": 7, "tag": 7, "flag": [7, 9], "accepts_link": 7, "accept": [7, 8, 9, 10], "set_proof_requested_callback": 7, "proof_strategi": 7, "prove_non": 7, "prove_app": 7, "proof_requested_callback": 7, "allow_non": 7, "allowed_list": 7, "whatev": [7, 9], "funcion": 7, "allow_list": 7, "deregister_request_handl": 7, "deregist": 7, "symmetr": [7, 9], "typeerror": 7, "incompat": [7, 9], "set_default_app_data": 7, "clear_default_app_data": 7, "ae": [7, 9, 11], "secreci": [7, 9, 11], "instanti": 7, "encrypted_mdu": 7, "383": 7, "plain_mdu": 7, "464": 7, "resend": 7, "get_statu": 7, "cull": 7, "successful": 7, "proven": [7, 9], "established_callback": 7, "closed_callback": 7, "establishment_timeout_per_hop": 7, "6": [7, 10], "keepalive_timeout_factor": 7, "4": [7, 9, 10], "calcul": [7, 9, 10], "stale_grac": 7, "grace": 7, "keepal": [7, 9], "360": 7, "aliv": [7, 9], "stale_tim": 7, "720": 7, "mark": [7, 9], "stale": 7, "torn": 7, "progress_callback": 7, "info": [7, 9, 10], "get_establishment_r": 7, "ocur": 7, "no_inbound_for": 7, "no_outbound_for": 7, "outbound": [7, 9], "inactive_for": 7, "purg": 7, "set_resource_callback": 7, "get_transfer_s": 7, "get_data_s": 7, "get_part": 7, "is_compress": 7, "begun": 7, "resource_strategi": 7, "accept_non": 7, "accept_app": 7, "resource_callback": 7, "unsupport": 7, "get_request_id": 7, "get_respons": 7, "get_response_tim": 7, "auto_compress": 7, "arbitrari": [7, 9, 10, 11], "checksum": [7, 11], "Will": 7, "whenev": [7, 9], "cancel": 7, "total": [7, 9, 11], "get_seg": 7, "divid": 7, "get_hash": 7, "bi": [7, 9], "neither": [7, 9], "constrain": 7, "message_class": 7, "recept": 7, "messagecallbacktyp": 7, "bool": 7, "stop": [7, 11], "remove_message_handl": 7, "remov": [7, 10], "envelop": 7, "thrown": 7, "consum": 7, "adjust": 7, "accommod": [7, 9], "abstract": [7, 9], "greater": [7, 9], "popul": 7, "bufferedread": 7, "bufferedwrit": 7, "bufferedrwpair": 7, "create_read": 7, "ready_callback": 7, "document": [7, 9], "create_writ": 7, "receive_stream_id": 7, "send_stream_id": 7, "rawiobas": 7, "add_ready_callback": 7, "cb": [7, 9], "remove_ready_callback": 7, "pathfinder_m": 7, "attribut": 7, "deregister_announce_handl": 7, "hops_to": 7, "next_hop": 7, "next_hop_interfac": 7, "on_interfac": 7, "recurs": 7, "gratefulli": 8, "monero": 8, "84fpy1qbxhcgdseepynmhthcrgmx4nffbytz2gkytoqhvvhjp8eaw1z1eedrnkd19b3b8nilcgvxzkv17ummmeescrpya5w": 8, "ethereum": 8, "0x81f7b979fea6134ba9fd5c701b3501a2e61e897a": 8, "bitcoin": 8, "3cpmacgm34qyvr6xwlvejmi2ane3pzquuq": 8, "ko": 8, "fi": 8, "roadmap": 8, "realiti": 8, "quickli": [8, 9, 11], "sponsor": [8, 11], "dysfunct": 8, "analyt": 8, "telemetri": 8, "collect": 8, "under": [8, 10, 11], "circumst": [8, 9], "reli": [8, 9], "fashion": 8, "u": [8, 9, 10], "suggest": 8, "overal": 9, "principl": [9, 11], "author": 9, "That": 9, "said": 9, "pretti": 9, "sentiment": 9, "philosophi": 9, "seek": 9, "solv": 9, "solut": [9, 10], "primari": 9, "lack": 9, "my": 9, "belief": 9, "highli": 9, "machin": 9, "censorship": [9, 11], "barrier": 9, "todai": 9, "centralis": 9, "trust": [9, 10], "approv": 9, "gatekeep": 9, "inevit": 9, "govern": 9, "alter": 9, "censor": 9, "persecut": 9, "unwant": 9, "actor": 9, "imposs": 9, "freeli": 9, "deploi": 9, "enhanc": 9, "agenc": 9, "freedom": 9, "permissionless": 9, "pick": 9, "ghz": 9, "off": [9, 10, 11], "shelf": [9, 11], "ultim": 9, "vast": 9, "myriad": 9, "thousand": 9, "surveil": 9, "disassoci": 9, "oversight": 9, "beings": 9, "usabl": 9, "useabl": 9, "critic": [9, 10], "agnostic": 9, "shall": 9, "handheld": 9, "interest": 9, "strong": 9, "oneself": 9, "unlicens": 9, "licens": 9, "condit": [9, 11], "pmr": 9, "written": 9, "programm": 9, "orient": 9, "multipoint": 9, "recipi": 9, "singular": 9, "_represented_": 9, "characterist": 9, "13425ec15b621c1d928589718000d814": 9, "trade": 9, "simultan": 9, "unlik": 9, "nears": 9, "congest": 9, "galact": 9, "scale": [9, 11], "obvious": 9, "ridicul": 9, "multi": [9, 10, 11], "special": [9, 10], "ecdh": [9, 11], "creator": 9, "correspond": 9, "possess": 9, "although": [9, 11], "capabl": 9, "dot": [9, 10], "notat": [9, 10], "repres": 9, "plenti": 9, "environment": 9, "monitor": 9, "measur": 9, "environmentlogg": 9, "remotesensor": 9, "temperatur": 9, "4faf1b2e0a077e6a9d92fa051f256038": 9, "advis": 9, "expand": 9, "recap": 9, "indirectli": 9, "ledger": 9, "therefor": [9, 11], "messeng": 9, "nicknam": 9, "ed25519": [9, 11], "reconstruct": 9, "notic": [9, 10], "piec": 9, "intention": 9, "infer": 9, "throughout": 9, "accord": 9, "around": 9, "topic": 9, "necessarili": 9, "person": 9, "entiti": 9, "robot": 9, "sensor": 9, "someth": 9, "agent": 9, "manipul": [9, 11], "multilater": 9, "creation": [9, 11], "great": 9, "suffic": 9, "cluster": 9, "hear": 9, "But": 9, "lot": 9, "surviv": 9, "overcom": 9, "challeng": 9, "asymmetr": [9, 10, 11], "closer": 9, "distinguish": 9, "contend": 9, "enable_transport": [9, 10], "retransmit": 9, "randomis": 9, "prioriti": 9, "invers": 9, "proport": 9, "count": 9, "insert": 9, "closest": 9, "newer": 9, "newest": 9, "discard": 9, "contact": 9, "shortest": 9, "predict": 9, "constantli": 9, "earlier": 9, "opt": 9, "against": 9, "bidirect": 9, "travers": 9, "rememb": 9, "ten": 9, "advanc": 9, "confirm": [9, 11], "insid": 9, "intermediari": 9, "moment": [9, 11], "methodologi": [9, 10], "answer": [9, 10], "malici": 9, "pretend": 9, "recreat": 9, "rotat": 9, "memori": 9, "thereaft": 9, "297": [9, 11], "practic": [9, 11], "neglig": 9, "1200": 9, "96": 9, "keypair": 9, "simplic": 9, "explan": [9, 10], "lki": 9, "laid": 9, "had": 9, "construct": [9, 11], "lkr": 9, "chose": 9, "direction": 9, "unequivoc": 9, "retransmiss": 9, "reassembl": 9, "programmat": 9, "satisfi": 9, "half": [9, 11], "duplex": [9, 11], "averag": 9, "throughput": [9, 11], "x": [9, 10], "runtim": 9, "consist": 9, "whereupon": 9, "stabl": [9, 11], "stage": 9, "year": 9, "microcontrol": 9, "430": 9, "868": 9, "900": 9, "recent": 9, "mac": 9, "tailor": 9, "treat": 9, "regard": 9, "preshar": 9, "ifac": [9, 10], "compos": 9, "field": 9, "context": 9, "465": 9, "vari": [9, 10], "00": [9, 10], "01": 9, "11": 9, "_______": 9, "________________": 9, "________": 9, "______": 9, "__": 9, "_": 9, "01010000": 9, "00000100": 9, "hash1": 9, "hash2": 9, "header_2": 9, "00000000": 9, "00000111": 9, "header_1": 9, "10000000": 9, "exclud": 9, "51": 9, "167": 9, "83": [9, 10], "115": 9, "99": 9, "conceptu": 9, "hkdf": 9, "fernet": [9, 11], "cbc": [9, 11], "hmac": [9, 11], "hashlib": 9, "pkcs7": [9, 11], "pad": [9, 11], "trivial": [9, 11], "consequ": 9, "backend": 9, "loss": 9, "scrutini": 9, "review": [9, 11], "risk": 9, "driver": [10, 11], "privileg": 10, "light": 10, "weight": 10, "etc": 10, "boot": 10, "ie": 10, "breviti": 10, "socket": 10, "turn": 10, "share_inst": 10, "shared_instance_port": 10, "37428": 10, "instance_control_port": 10, "37429": 10, "panic": 10, "unrecover": 10, "panic_on_interface_error": 10, "probe": 10, "respond_to_prob": 10, "warn": 10, "debug": 10, "unus": 10, "teach": 10, "task": 10, "08": 10, "18": 10, "17": 10, "59": 10, "56": 10, "v": 10, "show": 10, "ifconfig": 10, "gbp": 10, "13": 10, "kb": 10, "86": 10, "mbp": 10, "63": 10, "23": 10, "80": 10, "tcpinterfac": 10, "dublin": 10, "187": 10, "27": 10, "74": 10, "uhf": [10, 11], "kbp": 10, "e702c42ba8": 10, "49": 10, "9": 10, "5245a8efe1788c6a1cd36144a270e13b": 10, "j": 10, "posit": 10, "json": 10, "new_ident": 10, "984b74a3f768bef236af4371e6f248cd": 10, "new_id": 10, "0f4259fef4521ab75a3409e353fe9073eb10783b4912a6a9937c57bf44a62c1": 10, "hidden": 10, "8dd57a738226809646089335a6b03695": 10, "my_fil": 10, "txt": 10, "bc7291552be7a58f361522990465165c": 10, "rfe": 10, "fetch": 10, "30602def3b3506a28ed33db6f60cc6c9": 10, "2b489d06eaf7c543808c76a5332a447d": 10, "my_ident": 10, "2225fdeecaf6e2db4556c3c2d7637294": 10, "w": 10, "decreas": 10, "overwrit": 10, "c89b4da064bf66d280f0e4d8abfd9806": 10, "f53a1c4278e0726bb73fcc623d6ce763": 10, "rnstransport": 10, "2d03725b327348980d570f739a3a5708": 10, "38": 10, "469": 10, "781": 10, "e7536ee90bd4a440e130490b87a25124": 10, "809": 10, "73": 10, "1726dbad538775b5bf9b0ea25a4079c8": 10, "c50cc4e4f7838b6c31f60ab9032cbc62": 10, "allowed_ident": 10, "copi": 10, "tgz": 10, "73cbd378bb0286ed11a707c13447bb1": 10, "allowed_hash": 10, "silent": 10, "auth": 10, "941bed5e228775e5a8079fc38b1ccf3f": 10, "1b03013c25f1c2ca068a4f080b844a10": 10, "7a55144adf826958a9529a3bcf08b149": 10, "cat": 10, "proc": 10, "cpuinfo": 10, "pseudo": 10, "stderr": 10, "noauth": 10, "noid": 10, "mirror": 10, "max": 10, "fw": 10, "nocheck": 10, "flash": 10, "baud_flash": 10, "freq": 10, "hz": 10, "bw": 10, "txp": 10, "sf": 10, "cr": 10, "eeprom": 10, "backup": 10, "dump": 10, "wipe": 10, "hexbyt": 10, "attach": 10, "older": 10, "onlin": 10, "extract": 10, "cach": 10, "921600": 10, "bluetooth": 10, "intens": 10, "consol": 10, "unlock": 10, "perman": 10, "administr": 10, "ftdi_ft230x_basic_uart_43891ckm": 10, "if00": 10, "port0": 10, "plug": 10, "unplug": 10, "systemd": 10, "usr": 10, "bin": 10, "execstartpr": 10, "restart": 10, "restartsec": 10, "usernameher": 10, "execstart": 10, "wantedbi": 10, "systemctl": 10, "readili": 11, "advers": 11, "unforg": 11, "acknowledg": 11, "empow": 11, "autonomi": 11, "sovereignti": 11, "subject": 11, "outsid": 11, "planetari": 11, "hierarch": 11, "beaureucrat": 11, "resili": 11, "userland": 11, "beta": 11, "bug": 11, "warrant": 11, "sha256": 11, "iv": 11, "urandom": 11, "intuit": 11, "friendli": 11, "44": 11, "gigabyt": 11, "scalabl": 11, "hoc": 11, "transform": 11, "fact": 11, "strength": 11, "generalis": 11, "fibr": 11, "popular": 11, "ideal": 11, "stdio": 11, "hack": 11, "foremost": 11, "audit": 11, "privaci": 11, "thorough": 11, "research": 11, "touch": 11}, "objects": {"RNS": [[7, 0, 1, "", "Buffer"], [7, 0, 1, "", "Destination"], [7, 0, 1, "", "Identity"], [7, 0, 1, "", "Link"], [7, 0, 1, "", "MessageBase"], [7, 0, 1, "", "Packet"], [7, 0, 1, "", "PacketReceipt"], [7, 0, 1, "", "RawChannelReader"], [7, 0, 1, "", "RawChannelWriter"], [7, 0, 1, "", "RequestReceipt"], [7, 0, 1, "", "Resource"], [7, 0, 1, "", "Reticulum"], [7, 0, 1, "", "Transport"]], "RNS.Buffer": [[7, 1, 1, "", "create_bidirectional_buffer"], [7, 1, 1, "", "create_reader"], [7, 1, 1, "", "create_writer"]], "RNS.Channel": [[7, 0, 1, "", "Channel"]], "RNS.Channel.Channel": [[7, 2, 1, "", "MDU"], [7, 1, 1, "", "add_message_handler"], [7, 1, 1, "", "is_ready_to_send"], [7, 1, 1, "", "register_message_type"], [7, 1, 1, "", "remove_message_handler"], [7, 1, 1, "", "send"]], "RNS.Destination": [[7, 1, 1, "", "accepts_links"], [7, 1, 1, "", "announce"], [7, 1, 1, "", "app_and_aspects_from_name"], [7, 1, 1, "", "clear_default_app_data"], [7, 1, 1, "", "create_keys"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "deregister_request_handler"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "expand_name"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "hash"], [7, 1, 1, "", "hash_from_name_and_identity"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "register_request_handler"], [7, 1, 1, "", "set_default_app_data"], [7, 1, 1, "", "set_link_established_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_proof_requested_callback"], [7, 1, 1, "", "set_proof_strategy"], [7, 1, 1, "", "sign"]], "RNS.Identity": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "KEYSIZE"], [7, 3, 1, "", "TRUNCATED_HASHLENGTH"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "from_bytes"], [7, 1, 1, "", "from_file"], [7, 1, 1, "", "full_hash"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "get_public_key"], [7, 1, 1, "", "get_random_hash"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "load_public_key"], [7, 1, 1, "", "recall"], [7, 1, 1, "", "recall_app_data"], [7, 1, 1, "", "sign"], [7, 1, 1, "", "to_file"], [7, 1, 1, "", "truncated_hash"], [7, 1, 1, "", "validate"]], "RNS.Link": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "ESTABLISHMENT_TIMEOUT_PER_HOP"], [7, 3, 1, "", "KEEPALIVE"], [7, 3, 1, "", "KEEPALIVE_TIMEOUT_FACTOR"], [7, 3, 1, "", "STALE_GRACE"], [7, 3, 1, "", "STALE_TIME"], [7, 1, 1, "", "get_channel"], [7, 1, 1, "", "get_establishment_rate"], [7, 1, 1, "", "get_remote_identity"], [7, 1, 1, "", "identify"], [7, 1, 1, "", "inactive_for"], [7, 1, 1, "", "no_inbound_for"], [7, 1, 1, "", "no_outbound_for"], [7, 1, 1, "", "request"], [7, 1, 1, "", "set_link_closed_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_remote_identified_callback"], [7, 1, 1, "", "set_resource_callback"], [7, 1, 1, "", "set_resource_concluded_callback"], [7, 1, 1, "", "set_resource_started_callback"], [7, 1, 1, "", "set_resource_strategy"], [7, 1, 1, "", "teardown"]], "RNS.MessageBase": [[7, 3, 1, "", "MSGTYPE"], [7, 1, 1, "", "pack"], [7, 1, 1, "", "unpack"]], "RNS.Packet": [[7, 3, 1, "", "ENCRYPTED_MDU"], [7, 3, 1, "", "PLAIN_MDU"], [7, 1, 1, "", "resend"], [7, 1, 1, "", "send"]], "RNS.PacketReceipt": [[7, 1, 1, "", "get_rtt"], [7, 1, 1, "", "get_status"], [7, 1, 1, "", "set_delivery_callback"], [7, 1, 1, "", "set_timeout"], [7, 1, 1, "", "set_timeout_callback"]], "RNS.RawChannelReader": [[7, 1, 1, "", "__init__"], [7, 1, 1, "", "add_ready_callback"], [7, 1, 1, "", "remove_ready_callback"]], "RNS.RawChannelWriter": [[7, 1, 1, "", "__init__"]], "RNS.RequestReceipt": [[7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_request_id"], [7, 1, 1, "", "get_response"], [7, 1, 1, "", "get_response_time"], [7, 1, 1, "", "get_status"]], "RNS.Resource": [[7, 1, 1, "", "advertise"], [7, 1, 1, "", "cancel"], [7, 1, 1, "", "get_data_size"], [7, 1, 1, "", "get_hash"], [7, 1, 1, "", "get_parts"], [7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_segments"], [7, 1, 1, "", "get_transfer_size"], [7, 1, 1, "", "is_compressed"]], "RNS.Reticulum": [[7, 3, 1, "", "ANNOUNCE_CAP"], [7, 3, 1, "", "MTU"], [7, 1, 1, "", "should_use_implicit_proof"], [7, 1, 1, "", "transport_enabled"]], "RNS.Transport": [[7, 3, 1, "", "PATHFINDER_M"], [7, 1, 1, "", "deregister_announce_handler"], [7, 1, 1, "", "has_path"], [7, 1, 1, "", "hops_to"], [7, 1, 1, "", "next_hop"], [7, 1, 1, "", "next_hop_interface"], [7, 1, 1, "", "register_announce_handler"], [7, 1, 1, "", "request_path"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:property", "3": "py:attribute"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "property", "Python property"], "3": ["py", "attribute", "Python attribute"]}, "titleterms": {"code": [0, 8, 9], "exampl": [0, 6], "minim": 0, "announc": [0, 5, 9], "broadcast": 0, "echo": 0, "link": [0, 9], "identif": 0, "request": 0, "respons": 0, "channel": 0, "buffer": 0, "filetransf": 0, "an": 1, "explan": 1, "reticulum": [1, 2, 3, 4, 8, 9, 10, 11], "human": 1, "Beings": 1, "get": [2, 9], "start": 2, "fast": 2, "standalon": 2, "instal": [2, 3], "resolv": 2, "depend": 2, "issu": 2, "try": 2, "us": [2, 10, 11], "base": [2, 3], "program": [2, 10], "remot": 2, "shell": 2, "nomad": 2, "network": [2, 4, 6], "sideband": 2, "includ": [2, 10], "util": [2, 10], "creat": [2, 3], "With": 2, "connect": 2, "instanc": 2, "over": [2, 6], "internet": [2, 6], "public": [2, 9], "testnet": 2, "ad": 2, "radio": [2, 3], "interfac": [2, 5, 9, 11], "develop": 2, "particip": 2, "platform": 2, "specif": [2, 9], "note": 2, "android": 2, "arm64": 2, "raspberri": 2, "pi": 2, "debian": 2, "bookworm": 2, "ubuntu": 2, "lunar": 2, "pure": 2, "python": 2, "commun": 3, "hardwar": 3, "combin": 3, "type": [3, 9, 11], "rnode": [3, 5], "support": [3, 8], "board": 3, "lilygo": 3, "lora32": 3, "v2": 3, "1": 3, "0": 3, "t": 3, "beam": 3, "heltec": 3, "unsign": 3, "x": 3, "v1": 3, "usag": 3, "wifi": 3, "ethernet": 3, "serial": [3, 5, 10], "line": 3, "devic": [3, 11], "packet": [3, 9], "modem": 3, "stack": 4, "manual": 4, "tabl": 4, "Of": 4, "content": 4, "indic": 4, "configur": [5, 10], "auto": 5, "i2p": 5, "tcp": 5, "server": 5, "client": 5, "udp": 5, "lora": [5, 6], "pipe": 5, "kiss": 5, "ax": 5, "25": 5, "common": 5, "option": 5, "mode": 5, "rate": 5, "control": 5, "ingress": 5, "build": 6, "concept": 6, "overview": 6, "scenario": 6, "interconnect": 6, "site": 6, "bridg": 6, "growth": 6, "converg": 6, "api": 7, "refer": [7, 9], "donat": 8, "provid": 8, "feedback": 8, "contribut": 8, "understand": 9, "motiv": 9, "goal": 9, "introduct": 9, "basic": 9, "function": 9, "destin": 9, "name": [9, 10], "kei": 9, "ident": 9, "further": 9, "transport": 9, "node": 9, "The": [9, 10], "mechan": 9, "detail": 9, "reach": 9, "establish": 9, "resourc": 9, "setup": 9, "protocol": 9, "prioritis": 9, "access": 9, "wire": 9, "format": 9, "propag": 9, "rule": 9, "cryptograph": 9, "primit": 9, "your": 10, "system": 10, "data": 10, "rnsd": 10, "rnstatu": 10, "rnid": 10, "rnpath": 10, "rnprobe": 10, "rncp": 10, "rnx": 10, "rnodeconf": 10, "improv": 10, "fix": 10, "port": 10, "servic": 10, "what": 11, "i": 11, "current": 11, "statu": 11, "doe": 11, "offer": 11, "where": 11, "can": 11, "caveat": 11, "emptor": 11}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "alltitles": {"Code Examples": [[0, "code-examples"]], "Minimal": [[0, "minimal"]], "Announce": [[0, "announce"]], "Broadcast": [[0, "broadcast"]], "Echo": [[0, "echo"]], "Link": [[0, "link"]], "Identification": [[0, "example-identify"]], "Requests & Responses": [[0, "requests-responses"]], "Channel": [[0, "channel"]], "Buffer": [[0, "buffer"]], "Filetransfer": [[0, "filetransfer"]], "An Explanation of Reticulum for Human Beings": [[1, "an-explanation-of-reticulum-for-human-beings"]], "Getting Started Fast": [[2, "getting-started-fast"]], "Standalone Reticulum Installation": [[2, "standalone-reticulum-installation"]], "Resolving Dependency & Installation Issues": [[2, "resolving-dependency-installation-issues"]], "Try Using a Reticulum-based Program": [[2, "try-using-a-reticulum-based-program"]], "Remote Shell": [[2, "remote-shell"]], "Nomad Network": [[2, "nomad-network"]], "Sideband": [[2, "sideband"]], "Using the Included Utilities": [[2, "using-the-included-utilities"]], "Creating a Network With Reticulum": [[2, "creating-a-network-with-reticulum"]], "Connecting Reticulum Instances Over the Internet": [[2, "connecting-reticulum-instances-over-the-internet"]], "Connect to the Public Testnet": [[2, "connect-to-the-public-testnet"]], "Adding Radio Interfaces": [[2, "adding-radio-interfaces"]], "Develop a Program with Reticulum": [[2, "develop-a-program-with-reticulum"]], "Participate in Reticulum Development": [[2, "participate-in-reticulum-development"]], "Platform-Specific Install Notes": [[2, "platform-specific-install-notes"]], "Android": [[2, "android"]], "ARM64": [[2, "arm64"]], "Raspberry Pi": [[2, "raspberry-pi"]], "Debian Bookworm": [[2, "debian-bookworm"]], "Ubuntu Lunar": [[2, "ubuntu-lunar"]], "Pure-Python Reticulum": [[2, "pure-python-reticulum"]], "Communications Hardware": [[3, "communications-hardware"]], "Combining Hardware Types": [[3, "combining-hardware-types"]], "RNode": [[3, "rnode"]], "Creating RNodes": [[3, "creating-rnodes"]], "Supported Boards": [[3, "supported-boards"]], "LilyGO LoRa32 v2.1": [[3, "lilygo-lora32-v2-1"]], "LilyGO LoRa32 v2.0": [[3, "lilygo-lora32-v2-0"]], "LilyGO T-Beam": [[3, "lilygo-t-beam"]], "Heltec LoRa32 v2.0": [[3, "heltec-lora32-v2-0"]], "Unsigned RNode v2.x": [[3, "unsigned-rnode-v2-x"]], "Unsigned RNode v1.x": [[3, "unsigned-rnode-v1-x"]], "Installation": [[3, "installation"]], "Usage with Reticulum": [[3, "usage-with-reticulum"]], "WiFi-based Hardware": [[3, "wifi-based-hardware"]], "Ethernet-based Hardware": [[3, "ethernet-based-hardware"]], "Serial Lines & Devices": [[3, "serial-lines-devices"]], "Packet Radio Modems": [[3, "packet-radio-modems"]], "Reticulum Network Stack Manual": [[4, "reticulum-network-stack-manual"]], "Table Of Contents": [[4, "table-of-contents"]], "Indices and Tables": [[4, "indices-and-tables"]], "Building Networks": [[6, "building-networks"]], "Concepts & Overview": [[6, "concepts-overview"]], "Example Scenarios": [[6, "example-scenarios"]], "Interconnected LoRa Sites": [[6, "interconnected-lora-sites"]], "Bridging Over the Internet": [[6, "bridging-over-the-internet"]], "Growth and Convergence": [[6, "growth-and-convergence"]], "API Reference": [[7, "api-reference"]], "Support Reticulum": [[8, "support-reticulum"]], "Donations": [[8, "donations"]], "Provide Feedback": [[8, "provide-feedback"]], "Contribute Code": [[8, "contribute-code"]], "Understanding Reticulum": [[9, "understanding-reticulum"]], "Motivation": [[9, "motivation"]], "Goals": [[9, "goals"]], "Introduction & Basic Functionality": [[9, "introduction-basic-functionality"]], "Destinations": [[9, "destinations"]], "Destination Naming": [[9, "destination-naming"]], "Public Key Announcements": [[9, "public-key-announcements"]], "Identities": [[9, "understanding-identities"]], "Getting Further": [[9, "getting-further"]], "Reticulum Transport": [[9, "reticulum-transport"]], "Node Types": [[9, "node-types"]], "The Announce Mechanism in Detail": [[9, "the-announce-mechanism-in-detail"]], "Reaching the Destination": [[9, "reaching-the-destination"]], "Link Establishment in Detail": [[9, "link-establishment-in-detail"]], "Resources": [[9, "resources"]], "Reference Setup": [[9, "reference-setup"]], "Protocol Specifics": [[9, "protocol-specifics"]], "Packet Prioritisation": [[9, "packet-prioritisation"]], "Interface Access Codes": [[9, "interface-access-codes"]], "Wire Format": [[9, "wire-format"]], "Announce Propagation Rules": [[9, "announce-propagation-rules"]], "Cryptographic Primitives": [[9, "cryptographic-primitives"]], "Using Reticulum on Your System": [[10, "using-reticulum-on-your-system"]], "Configuration & Data": [[10, "configuration-data"]], "Included Utility Programs": [[10, "included-utility-programs"]], "The rnsd Utility": [[10, "the-rnsd-utility"]], "The rnstatus Utility": [[10, "the-rnstatus-utility"]], "The rnid Utility": [[10, "the-rnid-utility"]], "The rnpath Utility": [[10, "the-rnpath-utility"]], "The rnprobe Utility": [[10, "the-rnprobe-utility"]], "The rncp Utility": [[10, "the-rncp-utility"]], "The rnx Utility": [[10, "the-rnx-utility"]], "The rnodeconf Utility": [[10, "the-rnodeconf-utility"]], "Improving System Configuration": [[10, "improving-system-configuration"]], "Fixed Serial Port Names": [[10, "fixed-serial-port-names"]], "Reticulum as a System Service": [[10, "reticulum-as-a-system-service"]], "What is Reticulum?": [[11, "what-is-reticulum"]], "Current Status": [[11, "current-status"]], "What does Reticulum Offer?": [[11, "what-does-reticulum-offer"]], "Where can Reticulum be Used?": [[11, "where-can-reticulum-be-used"]], "Interface Types and Devices": [[11, "interface-types-and-devices"]], "Caveat Emptor": [[11, "caveat-emptor"]], "Configuring Interfaces": [[5, "configuring-interfaces"]], "Auto Interface": [[5, "auto-interface"]], "I2P Interface": [[5, "i2p-interface"]], "TCP Server Interface": [[5, "tcp-server-interface"]], "TCP Client Interface": [[5, "tcp-client-interface"]], "UDP Interface": [[5, "udp-interface"]], "RNode LoRa Interface": [[5, "rnode-lora-interface"]], "Serial Interface": [[5, "serial-interface"]], "Pipe Interface": [[5, "pipe-interface"]], "KISS Interface": [[5, "kiss-interface"]], "AX.25 KISS Interface": [[5, "ax-25-kiss-interface"]], "Common Interface Options": [[5, "common-interface-options"]], "Interface Modes": [[5, "interface-modes"]], "Announce Rate Control": [[5, "announce-rate-control"]], "Ingress Announce Control": [[5, "ingress-announce-control"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["examples", "forhumans", "gettingstartedfast", "hardware", "index", "interfaces", "networks", "reference", "support", "understanding", "using", "whatis"], "filenames": ["examples.rst", "forhumans.rst", "gettingstartedfast.rst", "hardware.rst", "index.rst", "interfaces.rst", "networks.rst", "reference.rst", "support.rst", "understanding.rst", "using.rst", "whatis.rst"], "titles": ["Code Examples", "An Explanation of Reticulum for Human Beings", "Getting Started Fast", "Communications Hardware", "Reticulum Network Stack Manual", "Configuring Interfaces", "Building Networks", "API Reference", "Support Reticulum", "Understanding Reticulum", "Using Reticulum on Your System", "What is Reticulum?"], "terms": {"A": [0, 2, 5, 6, 7, 9, 11], "number": [0, 2, 5, 6, 7, 9, 10], "ar": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "includ": [0, 3, 4, 5, 7, 9], "sourc": [0, 2, 3, 6, 9, 11], "distribut": [0, 2, 6, 7, 9, 10], "reticulum": [0, 5, 6, 7], "you": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "can": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "us": [0, 3, 4, 5, 6, 7, 9], "learn": [0, 2, 8, 9], "how": [0, 2, 3, 5, 6, 9, 10, 11], "write": [0, 2, 5, 7, 9, 10], "your": [0, 2, 3, 4, 5, 6, 8, 9, 11], "own": [0, 2, 6, 7, 9, 10, 11], "program": [0, 3, 4, 5, 7, 9, 11], "The": [0, 2, 3, 4, 5, 6, 7, 11], "demonstr": [0, 5], "bare": 0, "minimum": [0, 5, 6, 9], "setup": [0, 2, 4, 5], "requir": [0, 2, 5, 6, 9, 10, 11], "connect": [0, 3, 4, 5, 6, 7, 9, 10, 11], "network": [0, 3, 5, 7, 9, 10, 11], "from": [0, 2, 3, 5, 6, 7, 9, 10, 11], "In": [0, 2, 3, 5, 6, 7, 9, 10, 11], "about": [0, 2, 3, 5, 6, 7, 9], "five": 0, "line": [0, 2, 4, 5, 6, 9, 10, 11], "have": [0, 2, 3, 5, 6, 7, 9, 10], "stack": [0, 2, 6, 7, 9, 10, 11], "initialis": [0, 7, 10], "readi": [0, 2, 3, 5, 6, 7, 11], "pass": [0, 3, 5, 6, 7, 9, 10], "traffic": [0, 2, 5, 6, 7, 9, 10], "thi": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "rn": [0, 2, 3, 7, 9, 10], "start": [0, 3, 4, 5, 7, 9, 10], "up": [0, 2, 3, 5, 6, 9, 10, 11], "gener": [0, 2, 3, 5, 6, 7, 9, 10, 11], "new": [0, 4, 6, 7, 9, 10], "destin": [0, 2, 4, 6, 7, 10], "let": [0, 2, 5, 6, 9, 10], "user": [0, 2, 5, 6, 9, 10, 11], "send": [0, 5, 7, 9, 10], "an": [0, 2, 3, 5, 6, 7, 9, 10, 11], "import": [0, 2, 3, 5, 6, 7, 8, 9], "argpars": 0, "": [0, 2, 5, 6, 9, 10, 11], "defin": [0, 5, 7, 9, 10], "app": [0, 2, 7, 9], "name": [0, 4, 5, 6, 7], "we": [0, 2, 3, 5, 8, 9], "ll": [0, 2, 11], "all": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "creat": [0, 4, 5, 6, 7, 9, 10, 11], "sinc": [0, 2, 5, 6, 7, 9], "basic": [0, 2, 4, 7, 10], "i": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "part": [0, 5, 6, 7, 9, 10], "rang": [0, 2, 3, 5, 6, 9, 10, 11], "util": [0, 3, 4, 5, 9], "put": [0, 3, 5, 10], "them": [0, 2, 3, 5, 6, 8, 9, 10, 11], "within": [0, 2, 5, 6, 7, 9], "namespac": 0, "example_util": 0, "app_nam": [0, 7], "execut": [0, 2, 5, 7, 10], "when": [0, 2, 3, 5, 6, 7, 9, 10], "def": 0, "program_setup": 0, "configpath": 0, "must": [0, 2, 5, 6, 7, 9], "first": [0, 2, 5, 7, 9, 10], "randomli": [0, 9], "ident": [0, 2, 4, 7, 10, 11], "our": [0, 9], "just": [0, 2, 3, 5, 6, 9, 11], "endpoint": [0, 6, 7, 9], "address": [0, 2, 5, 6, 7, 9, 11], "commun": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11], "also": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "exist": [0, 2, 3, 5, 9, 10, 11], "which": [0, 2, 5, 6, 7, 9, 10], "know": [0, 2, 3, 6, 7, 9, 11], "thei": [0, 2, 5, 6, 7, 9, 10], "reachabl": [0, 2, 5, 6, 7, 9, 10], "autoomat": 0, "path": [0, 2, 3, 5, 7, 9, 10], "anywher": [0, 5], "els": [0, 2, 6, 9], "IN": [0, 7], "singl": [0, 5, 7, 9, 10, 11], "minimalsampl": 0, "configur": [0, 2, 3, 4, 6, 7, 9, 11], "automat": [0, 2, 3, 5, 6, 7, 9, 10, 11], "prove": [0, 9], "packet": [0, 2, 4, 5, 6, 7, 10, 11], "adress": [0, 7, 9], "By": [0, 2, 5, 7, 9, 10], "do": [0, 2, 3, 5, 7, 9, 11], "proof": [0, 7, 9, 10], "each": [0, 2, 5, 6, 9, 10], "incom": [0, 5, 7, 10], "transmit": [0, 5, 9], "back": [0, 5, 9, 11], "sender": [0, 2, 6, 9, 10], "anyon": [0, 2, 3, 5, 6, 7, 9, 10], "tri": 0, "whether": [0, 5, 7, 9], "wa": [0, 3, 5, 6, 7, 9, 10, 11], "receiv": [0, 2, 5, 7, 9, 10], "correctli": 0, "set_proof_strategi": [0, 7], "prove_al": [0, 7], "everyth": [0, 6, 9], "hand": 0, "over": [0, 3, 4, 5, 7, 9, 10, 11], "control": [0, 2, 3, 4, 6, 7, 9, 11], "loop": 0, "announceloop": 0, "log": [0, 5, 10], "prettyhexrep": 0, "hash": [0, 2, 7, 9, 10], "run": [0, 2, 3, 5, 6, 7, 9, 10, 11], "hit": 0, "enter": [0, 10], "manual": [0, 2, 5, 6, 7, 10], "ctrl": 0, "c": [0, 6, 10], "quit": 0, "until": [0, 2, 5, 7], "exit": [0, 2, 7, 10], "If": [0, 2, 3, 5, 6, 7, 9, 10, 11], "server": [0, 2, 3, 4, 7, 10], "client": [0, 2, 3, 4, 7], "messag": [0, 2, 7, 9, 10], "direct": [0, 2, 3, 6, 7, 9, 10], "toward": [0, 5, 9], "while": [0, 2, 3, 5, 6, 7, 9, 11], "true": [0, 2, 5, 7, 10], "input": [0, 10], "sent": [0, 2, 7, 9, 10], "startup": [0, 10], "get": [0, 3, 4, 5, 7, 11], "pars": 0, "desir": [0, 3, 5, 9], "mode": [0, 2, 3, 4, 9, 10, 11], "__name__": 0, "__main__": 0, "try": [0, 4, 5], "parser": 0, "argumentpars": 0, "descript": [0, 10], "add_argu": 0, "config": [0, 2, 6, 10], "action": 0, "store": [0, 3, 9, 10], "default": [0, 2, 3, 5, 6, 7, 9, 10], "none": [0, 2, 5, 7, 9, 10], "help": [0, 6, 8, 9, 10, 11], "altern": [0, 2, 5, 10], "directori": [0, 10], "type": [0, 2, 4, 5, 6, 7, 10], "str": 0, "arg": 0, "parse_arg": 0, "configarg": 0, "except": [0, 5, 7], "keyboardinterrupt": 0, "print": [0, 5, 10], "found": [0, 2, 5, 6, 9, 10], "http": [0, 2, 8], "github": [0, 2, 8], "com": [0, 2, 8], "markqvist": [0, 2, 8], "blob": [0, 9], "master": [0, 7], "py": [0, 2, 9, 10], "build": [0, 2, 3, 4, 5, 9, 11], "upon": [0, 9], "previou": 0, "explor": [0, 9, 11], "notif": [0, 7], "relev": [0, 3, 5, 7, 9, 10], "set": [0, 2, 3, 5, 6, 7, 9, 10, 11], "callback": [0, 7], "applic": [0, 5, 6, 7, 9, 10, 11], "arriv": [0, 9], "random": [0, 7, 9], "two": [0, 2, 3, 5, 6, 7, 9], "list": [0, 2, 3, 5, 7, 9, 11], "string": [0, 7], "app_data": [0, 7], "fruit": 0, "peach": 0, "quinc": 0, "date": [0, 2], "tangerin": 0, "pomelo": 0, "carambola": 0, "grape": 0, "noble_gas": 0, "helium": 0, "neon": 0, "argon": 0, "krypton": 0, "xenon": 0, "radon": 0, "oganesson": 0, "announcesampl": 0, "space": [0, 2, 3, 6, 9, 11], "destination_1": 0, "destination_2": 0, "handler": [0, 7], "onli": [0, 2, 3, 5, 6, 7, 9, 10, 11], "ask": [0, 2, 3, 7], "chang": [0, 2, 5, 7, 9, 10, 11], "filter": [0, 6, 9, 10], "see": [0, 2, 5, 6, 7, 9, 10, 11], "what": [0, 2, 4, 7, 9], "happen": [0, 7, 9], "announce_handl": 0, "exampleannouncehandl": 0, "aspect_filt": [0, 7], "regist": [0, 7], "transport": [0, 2, 4, 5, 6, 7, 10, 11], "register_announce_handl": [0, 7], "select": [0, 5], "randint": 0, "0": [0, 2, 5, 7, 9, 10, 11], "len": 0, "1": [0, 2, 5, 7, 9, 10], "data": [0, 2, 3, 4, 5, 6, 7, 9, 11], "encod": [0, 7], "utf": 0, "8": [0, 5, 10], "nobl": 0, "ga": 0, "noble_ga": 0, "need": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "class": [0, 6, 7, 11], "method": [0, 2, 5, 7, 9], "take": [0, 2, 5, 9, 10, 11], "option": [0, 2, 3, 4, 6, 7, 9, 10], "argument": [0, 7, 10], "instanc": [0, 4, 5, 7, 9, 10], "some": [0, 2, 3, 5, 6, 7, 9, 10], "want": [0, 2, 5, 6, 9, 10, 11], "aspect": [0, 3, 5, 7, 9, 10], "__init__": [0, 7], "self": [0, 6, 11], "call": [0, 6, 7, 9, 11], "system": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11], "match": [0, 5, 9, 10], "specif": [0, 3, 4, 5, 7, 10, 11], "cannot": [0, 2, 5, 11], "wildcard": 0, "received_announc": [0, 7], "destination_hash": [0, 7, 10], "announced_ident": [0, 7], "contain": [0, 6, 7, 9, 10], "follow": [0, 2, 3, 5, 7, 8, 9, 10, 11], "decod": 0, "plaintext": [0, 7], "unencrypt": [0, 7, 9], "inform": [0, 2, 4, 5, 6, 7, 9, 10], "ani": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "listen": [0, 5, 9, 10], "sy": 0, "did": 0, "one": [0, 2, 3, 5, 6, 7, 9, 10, 11], "public_inform": 0, "ad": [0, 3, 4, 5, 6, 7, 9, 11], "so": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "differ": [0, 2, 3, 5, 6, 7, 9, 10, 11], "plain": [0, 3, 5, 7, 9], "uncencrypt": 0, "broadcast_destin": 0, "specifi": [0, 2, 3, 5, 6, 7, 10], "everi": [0, 5, 6, 7, 9], "time": [0, 2, 3, 5, 6, 7, 9, 10], "set_packet_callback": [0, 7], "packet_callback": 0, "main": 0, "broadcastloop": 0, "simpli": [0, 2, 3, 5, 6, 9, 10], "out": [0, 2, 3, 5, 6, 7, 9, 10, 11], "r": [0, 5, 9, 10], "n": [0, 9, 10], "end": [0, 5, 6, 7, 9, 11], "stdout": [0, 5, 10], "flush": 0, "text": [0, 2, 6, 9], "prompt": 0, "channelarg": 0, "between": [0, 5, 6, 7, 9], "interfac": [0, 3, 4, 6, 7, 10], "simpl": [0, 3, 7, 9, 10, 11], "respond": [0, 7, 10], "receipt": [0, 7, 9], "choos": [0, 2, 5, 9], "global": [0, 2, 5, 6, 9, 11], "server_ident": 0, "queri": [0, 2, 7], "abl": [0, 2, 5, 6, 7, 9, 10], "verifi": [0, 7, 9, 10, 11], "repli": [0, 10], "encrypt": [0, 2, 6, 7, 9, 10, 11], "wai": [0, 2, 5, 6, 7, 9], "certain": [0, 5, 6, 8, 9], "than": [0, 2, 5, 6, 7, 9, 10], "read": [0, 2, 5, 7, 9, 10], "echo_destin": 0, "tell": [0, 5], "function": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "server_callback": 0, "wait": [0, 5, 9], "go": [0, 2, 5, 9], "handl": [0, 3, 5, 6, 7, 9, 10, 11], "reception_stat": 0, "is_connected_to_shared_inst": 0, "reception_rssi": 0, "get_packet_rssi": 0, "packet_hash": 0, "reception_snr": 0, "get_packet_snr": 0, "rssi": [0, 10], "dbm": [0, 5, 10], "snr": [0, 10], "db": [0, 10], "destination_hexhash": 0, "timeout": [0, 7, 10], "binari": [0, 2, 7, 9], "represent": [0, 7], "command": [0, 2, 5, 10], "dest_len": 0, "truncated_hashlength": [0, 7], "2": [0, 5, 7, 9, 10], "rais": [0, 7], "valueerror": [0, 7], "length": [0, 5, 7, 9], "invalid": [0, 7], "hex": 0, "hexadecim": [0, 9, 10], "charact": 0, "byte": [0, 7, 9, 10, 11], "format": [0, 4, 10, 11], "fromhex": 0, "e": [0, 6, 10], "check": [0, 2, 7, 9, 10], "overrid": 0, "loglevel": [0, 7, 10], "provid": [0, 2, 3, 4, 5, 6, 7, 9, 11], "feedback": [0, 4], "log_info": 0, "doe": [0, 2, 3, 4, 5, 6, 7, 9, 10], "load": [0, 2, 7, 10], "has_path": [0, 7], "To": [0, 2, 3, 5, 6, 9, 10, 11], "public": [0, 4, 5, 7, 10], "kei": [0, 4, 6, 7, 10, 11], "done": [0, 2, 5, 6, 9, 10], "recal": [0, 7, 10], "modul": [0, 2, 3, 9, 10, 11], "known": [0, 5, 7, 9, 10], "return": [0, 7, 10], "outgo": [0, 5, 7, 9, 10], "got": 0, "correct": [0, 9], "convent": 0, "request_destin": 0, "add": [0, 2, 5, 6, 7, 10], "echo_request": 0, "get_random_hash": [0, 7], "successfulli": [0, 9], "packetreceipt": [0, 4, 7], "packet_receipt": [0, 7], "set_timeout": [0, 7], "set_timeout_callback": [0, 7], "packet_timed_out": 0, "deliveri": [0, 2, 7, 11], "set_delivery_callback": [0, 7], "packet_deliv": 0, "yet": [0, 5, 9, 11], "retri": [0, 7, 9], "onc": [0, 2, 3, 5, 6, 7, 9, 10, 11], "request_path": [0, 7], "statu": [0, 2, 4, 5, 7, 9, 10], "deliv": [0, 7], "rtt": [0, 7, 9], "get_rtt": [0, 7], "round": [0, 7, 10], "3": [0, 5, 9, 10, 11], "rttstring": 0, "second": [0, 5, 7, 9, 10, 11], "1000": 0, "millisecond": [0, 10], "proof_packet": 0, "valid": [0, 5, 7, 9, 10], "trip": [0, 7, 10], "fail": [0, 2, 7], "store_tru": 0, "t": [0, 2, 5, 6, 7, 10], "metavar": 0, "float": [0, 7], "narg": 0, "timeoutarg": 0, "print_help": 0, "establish": [0, 2, 5, 6, 7, 11], "remot": [0, 4, 7, 10], "forth": 0, "o": [0, 2, 9, 10, 11], "refer": [0, 2, 4], "latest": [0, 2, 5, 10], "latest_client_link": 0, "server_destin": 0, "linkexampl": 0, "set_link_established_callback": [0, 7], "client_connect": 0, "server_loop": 0, "set_link_closed_callback": [0, 7], "client_disconnect": 0, "server_packet_receiv": 0, "disconnect": [0, 5], "activ": [0, 2, 5, 7, 9], "last": [0, 5, 7], "reply_text": 0, "reply_data": 0, "server_link": 0, "sleep": [0, 10], "begin": [0, 3, 7], "And": 0, "client_packet_receiv": 0, "close": [0, 6, 7, 10], "link_establish": 0, "link_clos": 0, "interact": [0, 2, 7, 9, 10], "client_loop": 0, "becom": [0, 2, 6, 9], "should_quit": 0, "fals": [0, 5, 7, 10], "should": [0, 2, 5, 6, 7, 9, 10, 11], "q": [0, 10], "teardown": [0, 7], "mdu": [0, 7], "size": [0, 2, 5, 7, 9, 10], "exce": [0, 5, 7], "log_error": 0, "error": [0, 2, 8, 10], "ha": [0, 2, 3, 5, 6, 7, 9, 11], "been": [0, 2, 3, 5, 6, 7, 9, 11], "later": [0, 2, 5, 10], "teardown_reason": 0, "now": [0, 2, 6, 9, 10], "elif": 0, "destination_clos": 0, "exit_handl": 0, "5": [0, 2, 5, 10], "_exit": 0, "identifi": [0, 5, 7, 9, 10], "intiat": 0, "initi": [0, 6, 7, 9, 11], "peer": [0, 2, 5, 7, 9, 10], "identifyexampl": 0, "set_remote_identified_callback": [0, 7], "remote_identifi": 0, "origin": [0, 6, 9], "displai": [0, 9, 10], "remote_p": 0, "unidentifi": 0, "get_remote_ident": [0, 7], "client_ident": 0, "sendig": 0, "perform": [0, 2, 5, 6, 9, 10], "random_text_gener": 0, "request_id": [0, 7], "link_id": [0, 7], "remote_ident": [0, 7], "requested_at": [0, 7], "look": [0, 2, 5, 9, 10], "On": [0, 2, 5, 10], "full": [0, 5, 7, 9, 10, 11], "moon": 0, "becki": 0, "upset": 0, "stai": [0, 9, 10], "awai": [0, 5, 6, 9, 10], "pet": 0, "shop": 0, "stock": 0, "requestexampl": 0, "register_request_handl": [0, 7], "response_gener": [0, 7], "allow": [0, 2, 3, 5, 6, 7, 9, 10, 11], "allow_al": [0, 7], "response_callback": [0, 7], "got_respons": 0, "failed_callback": [0, 7], "request_fail": 0, "request_receipt": [0, 7], "request_receiv": 0, "structur": [0, 7, 9, 11], "datetim": 0, "vendor": [0, 3], "umsgpack": 0, "share": [0, 2, 6, 7, 9, 10], "object": [0, 7], "subclass": [0, 7], "messagebas": [0, 4, 7], "ensur": [0, 5, 7, 9, 10, 11], "serial": [0, 2, 4, 9, 11], "deseri": 0, "multiplex": 0, "other": [0, 2, 3, 5, 6, 7, 9, 10], "both": [0, 2, 3, 5, 6, 7, 9, 10, 11], "same": [0, 2, 3, 5, 6, 7, 9, 10], "definit": [0, 9], "note": [0, 3, 4, 5, 7, 9, 10], "wish": [0, 9, 10], "make": [0, 2, 3, 5, 8, 9, 10], "stringmessag": 0, "convei": 0, "timestamp": 0, "msgtype": [0, 7], "variabl": [0, 7], "assign": [0, 9, 10], "integ": 0, "valu": [0, 5, 7, 9], "constructor": 0, "uniqu": [0, 5, 7, 9, 11], "across": [0, 3, 6], "0xf000": [0, 7], "reserv": [0, 7, 9], "0x0101": 0, "callabl": [0, 7], "paramet": [0, 3, 5, 6, 7, 9, 10], "empti": 0, "version": [0, 2, 9, 10], "unpack": [0, 7], "final": [0, 7, 9], "implement": [0, 5, 6, 7, 8, 9, 11], "pack": [0, 7], "raw": [0, 3, 7], "payload": [0, 7, 9, 10], "packag": [0, 2, 5, 9], "bundl": 0, "could": [0, 2, 5, 6, 7, 9, 11], "struct": 0, "python": [0, 4, 7, 9, 10, 11], "more": [0, 2, 3, 5, 6, 7, 9, 10, 11], "fit": 0, "entir": [0, 6, 7, 9, 10], "avail": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "properti": [0, 6, 7], "slightli": [0, 2], "less": [0, 5, 7, 9, 11], "due": [0, 6], "header": [0, 7, 9], "content": [0, 2, 6, 10], "stream": [0, 7, 9], "packb": 0, "unpackb": 0, "channelexampl": 0, "get_channel": [0, 7], "register_message_typ": [0, 7], "add_message_handl": [0, 7], "server_message_receiv": 0, "param": 0, "deserializ": 0, "unless": [0, 2, 5, 7, 9], "preced": 0, "indic": 0, "isinst": 0, "reply_messag": 0, "order": [0, 7, 10], "were": [0, 6], "consid": [0, 5, 7, 9, 11], "subsequ": [0, 9], "skip": 0, "packed_s": 0, "is_ready_to_send": [0, 7], "pleas": [0, 2, 5, 7, 10, 11], "pend": 0, "complet": [0, 2, 3, 5, 6, 7, 9, 10, 11], "client_message_receiv": 0, "reader": [0, 7], "writer": [0, 7], "__future__": 0, "annot": 0, "latest_buff": 0, "bufferexampl": 0, "old": [0, 3, 8, 9], "stream_id": [0, 7], "bit": [0, 2, 5, 7, 9, 10, 11], "like": [0, 2, 3, 5, 6, 7, 9, 10, 11], "file": [0, 2, 3, 5, 6, 7, 9, 10, 11], "descriptor": 0, "actual": [0, 2, 5, 9], "separ": [0, 2, 5, 6, 9, 10], "unidirect": 0, "flow": [0, 5, 6], "opposit": [0, 5], "create_bidirectional_buff": [0, 7], "server_buffer_readi": 0, "ready_byt": [0, 7], "int": [0, 7], "otherwis": [0, 7], "forc": [0, 10], "server_client_connect": 0, "detail": [0, 2, 4, 5, 7, 10, 11], "client_buffer_readi": 0, "termin": [0, 2, 7], "download": [0, 5, 10], "resourc": [0, 2, 4, 7, 8], "effici": [0, 2, 5, 9, 11], "serv": [0, 3, 5, 6, 9, 10], "larg": [0, 3, 5, 6, 7, 9, 11], "transfer": [0, 7, 9, 10, 11], "recommend": [0, 2, 9], "compress": [0, 7, 9], "hashmap": 0, "sequenc": [0, 7, 9, 11], "long": [0, 2, 3, 5, 7, 9], "slow": [0, 5, 9], "cpu": [0, 9], "probabl": [0, 2, 6, 9, 10, 11], "result": [0, 9, 10], "befor": [0, 2, 5, 7, 9, 10], "prepar": [0, 6], "instead": [0, 2, 5, 9, 10], "slice": 0, "chunk": 0, "suitabl": [0, 2, 5, 6, 9, 11], "thread": 0, "app_timeout": 0, "45": [0, 9], "serve_path": 0, "here": [0, 2, 5, 9, 10], "conveni": 0, "list_fil": 0, "entri": [0, 2, 9], "listdir": 0, "isfil": 0, "join": [0, 2, 6, 8, 9], "host": [0, 2, 5, 9, 10], "still": [0, 2, 5, 6, 9], "isdir": 0, "list_packet": 0, "list_receipt": 0, "list_deliv": 0, "list_timeout": 0, "too": [0, 6], "mani": [0, 2, 3, 5, 6, 7, 9, 10, 11], "split": 0, "filelist": 0, "multipl": [0, 5, 6, 9, 10], "hint": 0, "alreadi": [0, 2, 3, 6, 7, 9, 10], "support": [0, 2, 4, 5, 6, 9, 10, 11], "after": [0, 2, 5, 6, 7, 9, 10], "re": [0, 5, 7, 9], "keep": [0, 6, 7, 9, 10, 11], "open": [0, 3, 5, 6, 7, 8, 9, 10, 11], "client_request": 0, "longer": [0, 2, 6, 9, 10], "filenam": 0, "rb": 0, "file_resourc": 0, "resource_sending_conclud": 0, "somethign": 0, "went": 0, "wrong": [0, 5], "don": [0, 2, 6, 7, 10], "unknown": [0, 5, 7, 9, 10], "conclud": [0, 7], "hasattr": 0, "server_fil": 0, "current": [0, 2, 4, 5, 7, 9], "current_download": 0, "current_filenam": 0, "statist": [0, 5, 8], "download_start": 0, "download_finish": 0, "download_tim": 0, "transfer_s": 0, "file_s": 0, "expect": [0, 5, 7, 9, 10], "normal": [0, 2, 5, 7, 10], "accordingli": 0, "filelist_receiv": 0, "advertis": [0, 7], "set_resource_strategi": [0, 7], "accept_al": [0, 7], "set_resource_started_callback": [0, 7], "download_began": 0, "set_resource_concluded_callback": [0, 7], "download_conclud": 0, "menu": 0, "menu_mod": 0, "down": [0, 3, 5, 7], "request_packet": 0, "create_receipt": [0, 7], "print_menu": 0, "25": [0, 4, 11], "user_input": 0, "screen": 0, "variou": [0, 2, 5, 6, 9, 10], "state": 0, "It": [0, 2, 3, 5, 7, 9, 10, 11], "uninterest": 0, "won": 0, "clear_screen": 0, "print_filelist": 0, "percent": [0, 5], "get_progress": [0, 7], "100": [0, 5, 9], "rprogress": 0, "save_error": 0, "disk": [0, 7], "hour": [0, 5], "rem": 0, "divmod": 0, "3600": [0, 5], "minut": [0, 2, 5, 9], "60": [0, 5], "timestr": 0, "05": 0, "2f": 0, "ttime": 0, "taken": [0, 9], "tfile": 0, "size_str": 0, "tdata": 0, "teffect": 0, "rate": [0, 4, 7, 10], "suffix": 0, "b": [0, 6, 10], "ttransfer": 0, "press": 0, "index": [0, 2, 4], "enumer": 0, "filelist_data": 0, "extend": [0, 2, 7], "local": [0, 2, 5, 6, 7, 9, 10, 11], "append": [0, 9], "visibl": 0, "updat": [0, 2, 7, 9, 10], "small": [0, 5, 6, 9, 11], "job": 0, "potenti": [0, 5, 8, 9, 10, 11], "target": [0, 5, 10], "filelist_timeout_job": 0, "setdaemon": 0, "detect": 0, "shown": 0, "progress": [0, 7, 10, 11], "total_s": 0, "saved_filenam": 0, "counter": 0, "wb": 0, "human": [0, 7, 8, 9], "readabl": [0, 7, 9], "num": 0, "unit": [0, 2, 7, 10], "ki": 0, "mi": 0, "gi": 0, "ti": [0, 9], "pi": [0, 4, 6, 9, 10, 11], "ei": 0, "zi": 0, "last_unit": 0, "yi": 0, "k": 0, "m": [0, 2, 9, 10], "g": [0, 10], "p": [0, 10], "z": 0, "y": 0, "ab": 0, "1024": 0, "clear": [0, 5, 7, 9, 10], "cl": 0, "nt": 0, "dir": 0, "best": [2, 9, 11], "guid": [2, 3, 9], "outlin": [2, 3, 9], "sensibl": [2, 3, 5], "scenario": [2, 4, 9], "relat": 2, "easiest": [2, 3, 5, 9], "via": [2, 3, 5, 8, 9, 10, 11], "pip": [2, 3, 10], "manag": [2, 6, 7, 9, 10, 11], "sudo": [2, 10], "apt": 2, "python3": [2, 3], "pamac": 2, "similar": [2, 3, 5, 6, 7, 10, 11], "dowload": 2, "releas": [2, 5, 9], "wheel": 2, "channel": [2, 4, 5, 6, 7, 8, 9, 11], "offlin": 2, "py3": 2, "whl": 2, "mai": [2, 5, 7, 9, 10], "case": [2, 3, 5, 6, 9, 10], "usual": 2, "essenti": [2, 5, 9], "deriv": [2, 7, 9, 11], "arch": 2, "manjaro": 2, "devel": 2, "fedora": 2, "dnf": 2, "groupinstal": 2, "tool": [2, 3, 9, 10, 11], "librari": 2, "compil": 2, "miss": 2, "even": [2, 5, 6, 9, 10, 11], "pre": [2, 7, 9], "built": [2, 5, 9, 11], "few": [2, 3, 5, 6, 9, 10, 11], "extrem": [2, 9, 10, 11], "low": [2, 3, 5, 6, 9, 11], "bandwidth": [2, 5, 6, 7, 9, 10, 11], "These": [2, 5, 7, 9, 10], "feel": 2, "work": [2, 3, 5, 6, 9, 10, 11], "design": [2, 3, 6, 9, 11], "well": [2, 3, 5, 6, 7, 9, 10, 11], "lora": [2, 3, 4, 9, 11], "link": [2, 3, 4, 5, 6, 7, 10, 11], "wifi": [2, 4, 5, 6, 9, 10, 11], "wire": [2, 3, 4, 5, 11], "ethernet": [2, 4, 5, 6, 9, 11], "combin": [2, 4, 6, 9], "As": [2, 3, 5, 6, 7, 9, 11], "easi": [2, 3, 5, 9, 10, 11], "experi": [2, 9], "without": [2, 3, 5, 6, 9, 11], "transceiv": [2, 3, 5, 9, 11], "infrastructur": [2, 3, 5, 6, 9, 10], "launch": [2, 10], "devic": [2, 4, 5, 6, 7, 9, 10], "enough": [2, 3, 9], "physic": [2, 3, 5, 9, 10], "rnsh": [2, 10], "fulli": [2, 3, 9, 10, 11], "session": [2, 9], "pipe": [2, 4, 11], "ssh": 2, "veri": [2, 3, 5, 6, 7, 8, 9, 10, 11], "facilit": 2, "suit": [2, 3, 9, 10], "featur": [2, 8, 9, 11], "delai": [2, 5, 9, 10], "browser": 2, "page": [2, 4, 9], "dynam": [2, 10], "render": 2, "authent": [2, 5, 6, 7, 9, 11], "face": [2, 5], "protocol": [2, 3, 4, 5, 11], "lxmf": [2, 10], "anoth": [2, 7, 9, 10], "project": 2, "nomadnet": 2, "might": [2, 5, 6, 9, 10], "reboot": 2, "again": [2, 5, 9, 10], "would": [2, 5, 6, 7, 9], "rather": [2, 7], "graphic": 2, "linux": [2, 3, 9], "maco": 2, "peopl": [2, 9], "compat": [2, 3, 5, 7, 9], "i2p": [2, 4, 11], "qr": 2, "paper": 2, "anyth": [2, 3, 5, 9, 10, 11], "interoper": [2, 3, 6, 9, 11], "come": [2, 9], "easier": [2, 5, 6, 10], "rnsd": [2, 4], "background": [2, 5], "foreground": 2, "servic": [2, 4, 6], "rnstatu": [2, 4, 5, 9], "rnpath": [2, 4, 5], "rnprobe": [2, 4], "view": [2, 5, 9, 10], "chapter": [2, 3, 5, 6, 7, 9, 10, 11], "locat": [2, 3, 6, 9, 10], "exampl": [2, 3, 4, 5, 7, 9, 10, 11], "exampleconfig": [2, 10], "broadcast": [2, 4, 5, 7, 9], "domain": [2, 5], "further": [2, 4, 5], "tcp": [2, 3, 4, 6, 9, 11], "There": [2, 6, 9, 11], "subnet": [2, 6], "rout": [2, 3, 5, 6, 7, 9, 10, 11], "tabl": [2, 5, 6, 9, 10], "thing": 2, "discov": [2, 5], "topographi": [2, 6, 9], "situat": [2, 3, 5, 6, 9], "where": [2, 3, 4, 5, 6, 7, 9, 10], "utilis": [2, 5, 6, 7, 10, 11], "extern": [2, 5, 7, 11], "often": [2, 5, 6, 9, 10], "suffici": [2, 5, 9, 10], "act": [2, 7, 9, 10], "gatewai": [2, 5, 6, 9], "enabl": [2, 3, 5, 6, 7, 9, 10, 11], "wider": [2, 5, 9, 10], "autointerfac": [2, 3, 5, 10], "possibli": 2, "offer": [2, 4, 5, 7, 9], "carefulli": 2, "tcpserverinterfac": [2, 5], "access": [2, 4, 5, 6, 7, 10], "ip": [2, 3, 5, 9, 10, 11], "faster": [2, 5, 9], "lower": [2, 5, 10], "latenc": [2, 9, 11], "energi": 2, "i2pinterfac": [2, 5], "howev": [2, 6, 9], "leak": 2, "reveal": [2, 7, 9, 11], "who": [2, 9], "inspect": [2, 5, 6, 9, 10], "someon": [2, 5], "determin": [2, 7, 9], "adversari": 2, "record": [2, 9], "metadata": 2, "transmiss": [2, 5, 7, 9], "though": [2, 5, 9], "publicli": [2, 5], "most": [2, 3, 5, 6, 9, 10], "anymor": 2, "through": [2, 3, 5, 6, 7, 9, 10, 11], "invis": [2, 5], "daemon": [2, 5, 7, 10], "parallel": 2, "For": [2, 3, 5, 6, 7, 9, 10, 11], "alwai": [2, 5, 7, 9, 10], "node": [2, 4, 5, 6, 10, 11], "i2pd": [2, 5], "mix": [2, 5, 6, 10], "hide": 2, "relai": 2, "extra": [2, 5, 6, 10], "comput": [2, 9, 11], "power": [2, 3, 5, 9, 10], "attack": 2, "form": [2, 5, 6, 7, 9], "deep": 2, "much": [2, 5, 6, 9, 10], "difficult": [2, 3], "non": [2, 7, 9], "behind": [2, 9], "firewal": [2, 5], "nat": 2, "preserv": [2, 7], "anonym": [2, 6, 7, 9, 11], "care": [2, 7, 11], "experiment": [2, 11], "made": [2, 7, 9], "amsterdam": 2, "hub": [2, 5], "tcpclientinterfac": [2, 3, 5], "ye": [2, 5, 9, 10], "target_host": [2, 5], "target_port": [2, 5], "4965": [2, 10], "betweenthebord": 2, "4242": [2, 5], "g3br23bvx3lq5uddcsjii74xgmn6y5q325ovrkq2zw2wbzbqgbuq": 2, "b32": [2, 5], "point": [2, 3, 5, 6, 9, 10], "absolut": [2, 8, 11], "usag": [2, 4, 5, 7, 8, 10], "occasion": 2, "test": [2, 9, 10], "failur": [2, 5], "guarante": [2, 9], "hardwar": [2, 4, 5, 6, 7, 9, 10, 11], "wide": [2, 3, 5, 9, 11], "section": [2, 3, 5, 6, 9, 10], "easili": [2, 5, 6, 9, 10, 11], "cheapli": 2, "rnode": [2, 4, 9, 10, 11], "purpos": [2, 3, 5, 7, 9], "digit": [2, 3, 9, 11], "integr": [2, 6, 9], "yourself": [2, 9, 11], "custom": [2, 5, 7, 9, 11], "firmwar": [2, 3, 9, 10], "board": [2, 4, 9, 11], "auto": [2, 3, 4, 7, 9], "script": [2, 3], "prefer": [2, 9], "purchas": [2, 6, 9, 11], "supplier": 2, "addit": [2, 3, 5, 7, 9, 10, 11], "privat": [2, 5, 7, 8, 9, 10, 11], "secur": [2, 9, 11], "uncensor": 2, "mesh": [2, 5, 6, 11], "think": 2, "welcom": 2, "head": 2, "discuss": [2, 3, 9], "propos": 2, "abov": [2, 3, 5, 9, 10], "next": [2, 6, 7, 9], "step": [2, 3], "pyseri": 2, "api": [2, 4, 9, 11], "associ": [2, 7, 9], "recip": 2, "cryptographi": [2, 9, 11], "clone": 2, "repositori": [2, 8, 9], "git": 2, "move": [2, 5, 9, 10], "folder": 2, "symlink": [2, 10], "cd": 2, "ln": [2, 10], "echo": [2, 4], "ve": 2, "immedi": [2, 5, 10], "necessari": [2, 3, 5, 6, 7, 9], "nano": 2, "repeat": 2, "process": [2, 3, 5, 7, 9], "h": [2, 10], "ping": [2, 10], "replac": [2, 9, 10], "below": [2, 3, 5, 10], "174a64852a75682259ad8b921b8bf416": 2, "filetransf": [2, 4, 7], "understand": [2, 4, 7, 10], "submit": 2, "pull": 2, "request": [2, 4, 5, 7, 9, 10], "good": [2, 3, 6, 9, 10], "idea": [2, 9, 10], "introduc": [2, 9], "disucss": 2, "forum": 2, "maintain": [2, 9], "place": [2, 5, 6, 9, 10], "procedur": [2, 7, 9], "quirk": 2, "worth": 2, "being": [2, 5, 7, 9], "awar": [2, 9], "termux": 2, "f": [2, 10], "droid": 2, "emul": 2, "environ": [2, 6, 9], "abil": [2, 3], "pkg": 2, "sure": [2, 3, 10], "upgrad": [2, 9], "Then": 2, "reason": [2, 5, 9], "attempt": [2, 3, 7], "openssl": [2, 9], "libffi": 2, "rust": 2, "export": 2, "cargo_build_target": 2, "aarch64": 2, "sever": [2, 6, 7, 10], "succe": 2, "softwar": [2, 3, 5, 9, 11], "possibl": [2, 3, 5, 6, 7, 9, 10, 11], "apk": 2, "tutori": 2, "code": [2, 3, 4, 5, 10], "startig": 2, "architectur": 2, "precompil": 2, "dev": [2, 5, 10], "64": [2, 9, 10], "32": [2, 9], "rasperri": 2, "os": [2, 5], "april": 2, "2023": [2, 10], "onto": [2, 9], "unfortun": 2, "pipx": 2, "isol": [2, 5, 10], "neg": 2, "affect": [2, 5], "ensurepath": 2, "restor": [2, 5], "behaviour": [2, 5, 10], "edit": [2, 10], "conf": 2, "break": [2, 7, 9, 11], "somewhat": 2, "mislead": 2, "choic": 2, "word": 2, "cours": [2, 5, 9], "rare": [2, 5], "lead": [2, 9], "conflict": 2, "pose": [2, 9], "problem": [2, 9], "_could_": 2, "obscur": 2, "rnspure": 2, "No": [2, 5, 9, 10, 11], "matter": [2, 5], "perfectli": 2, "pyca": [2, 9], "cryptograph": [2, 4, 6, 10, 11], "primit": [2, 4], "One": [3, 7], "truli": [3, 9], "valuabl": [3, 8], "almost": [3, 5, 9, 10], "conceiv": 3, "kind": [3, 5, 6, 9], "medium": [3, 5, 6, 7, 9, 11], "flexibl": [3, 5, 11], "cover": [3, 9, 11], "wireless": [3, 6], "decad": 3, "modern": [3, 9], "millimet": 3, "wave": 3, "backhaul": [3, 6], "oper": [3, 5, 6, 7, 9, 10, 11], "chanc": 3, "box": 3, "glue": 3, "littl": [3, 9], "effort": 3, "pipeinterfac": [3, 5], "kiss": [3, 4, 10, 11], "simplyequip": 3, "broad": 3, "abund": 3, "sometim": 3, "especi": [3, 5], "scratch": 3, "real": [3, 6, 11], "world": [3, 6, 11], "minim": [3, 4, 9], "cost": [3, 9, 11], "fundament": [3, 9], "categori": 3, "addition": [3, 5, 9], "common": [3, 4, 6, 9, 10, 11], "briefli": [3, 9], "describ": [3, 5, 7, 9], "emploi": [3, 9], "pattern": [3, 9], "high": [3, 5, 9, 11], "capac": [3, 5, 7, 9], "gain": [3, 7, 9], "antenna": 3, "backbon": 3, "area": [3, 5, 6, 9, 11], "reliabl": [3, 5, 6, 7, 9, 11], "commonli": 3, "either": [3, 5, 6, 7, 9, 10], "expens": 3, "hard": 3, "hungri": 3, "allevi": 3, "particular": 3, "plaform": 3, "depend": [3, 4, 6, 7, 9, 10], "its": [3, 5, 7, 9], "compon": [3, 8, 9], "frequenc": [3, 5, 9, 10], "band": [3, 9], "scheme": 3, "limit": [3, 4, 6, 9], "ism": [3, 9], "avoid": [3, 9, 10], "confus": [3, 9], "layer": [3, 5, 6, 9, 11], "noth": [3, 11], "lorawan": [3, 9], "standard": [3, 9], "central": [3, 6, 9], "iot": 3, "overhead": [3, 5, 9], "level": [3, 5, 9, 10], "directli": [3, 5, 7, 9, 10, 11], "replic": [3, 9], "togeth": [3, 9, 10], "exact": [3, 5, 9], "explain": [3, 7], "approach": [3, 9, 10], "develop": [3, 4, 7, 8, 9, 11], "boil": 3, "obtain": [3, 7, 9], "autom": [3, 8, 9], "provis": [3, 10], "rnodeinterfac": [3, 5, 10], "ic": 3, "semtech": 3, "sx1276": 3, "platform": [3, 4, 9], "esp32": 3, "manufactur": 3, "io": 3, "avr": 3, "atmega1284p": 3, "rnodeconf": [3, 4], "autoinstal": [3, 10], "seri": 3, "question": [3, 5], "port": [3, 4, 5, 6, 9, 11], "air": [3, 11], "id": [3, 5, 7, 9, 10], "itself": [3, 4, 9], "short": [3, 5, 9, 10], "bridg": [3, 4], "behav": 3, "mean": [3, 5, 6, 9, 10], "dhcp": [3, 5, 10], "dn": 3, "least": [3, 5, 9, 10, 11], "transpar": [3, 5, 9, 10], "distanc": [3, 9], "ubiqu": 3, "airmax": 3, "ltu": 3, "mikrotik": 3, "exhaust": [3, 9], "rel": [3, 9, 11], "cheap": [3, 9], "co": [3, 5, 11], "concurr": [3, 9, 10], "switch": [3, 5, 9, 10], "fiber": 3, "optic": [3, 11], "virtual": [3, 5, 6, 9, 10, 11], "adapt": [3, 6], "tun": 3, "tap": 3, "serialinterfac": [3, 5], "usb": [3, 6, 9, 10], "freedv": 3, "tnc": [3, 5, 7, 10, 11], "dire": 3, "wolf": 3, "aim": [4, 9], "particip": [4, 6, 9], "pdf": 4, "epub": 4, "caveat": 4, "emptor": 4, "fast": [4, 5, 7, 9], "standalon": 4, "instal": [4, 5, 6, 9, 10, 11], "resolv": [4, 5, 10], "issu": [4, 6, 8], "base": [4, 5, 6, 7, 9, 10, 11], "shell": [4, 10], "nomad": 4, "sideband": 4, "With": [4, 5, 6, 9, 10], "internet": [4, 5, 9, 11], "testnet": [4, 10], "radio": [4, 5, 6, 7, 9, 10, 11], "android": 4, "arm64": 4, "raspberri": [4, 6, 9, 10, 11], "debian": [4, 9, 10], "bookworm": 4, "ubuntu": [4, 10], "lunar": 4, "pure": [4, 9], "rnid": 4, "rncp": 4, "rnx": 4, "improv": [4, 5, 8], "fix": [4, 9], "motiv": 4, "goal": [4, 5], "introduct": 4, "announc": [4, 7, 10], "mechan": [4, 5], "reach": [4, 5, 6], "prioritis": [4, 5, 6, 7], "propag": [4, 5, 7], "rule": [4, 5], "modem": [4, 5, 6, 7, 9, 11], "udp": [4, 6, 9, 10, 11], "ax": [4, 11], "ingress": 5, "concept": [4, 9, 10], "overview": [4, 5, 9], "interconnect": [4, 5, 9], "site": [4, 5], "growth": 4, "converg": [4, 9], "identif": [4, 5, 11], "respons": [4, 7, 9], "buffer": [4, 5, 7], "donat": 4, "contribut": 4, "requestreceipt": [4, 7], "rawchannelread": [4, 7], "rawchannelwrit": [4, 7], "search": 4, "distinct": [5, 9], "topologi": [5, 9], "endless": 5, "give": [5, 9, 10], "respect": [5, 11], "discover": 5, "autoconfigur": [5, 11], "ipv6": [5, 10], "router": [5, 10], "sort": [5, 9], "interface_en": [5, 10], "lan": 5, "group": [5, 7, 9], "group_id": 5, "kernel": [5, 10, 11], "wlan0": 5, "eth1": 5, "Or": [5, 10, 11], "ignor": [5, 7, 9], "ones": [5, 10], "ignored_devic": 5, "tun0": 5, "eth0": 5, "multicast": 5, "autodiscov": 5, "discoveri": [5, 9, 10], "scope": 5, "admin": 5, "organis": [5, 6, 8], "custom_network_nam": 5, "discovery_scop": 5, "discovery_port": 5, "48555": 5, "data_port": 5, "49555": 5, "frequent": 5, "block": 5, "inbound": [5, 7], "portabl": [5, 9], "persist": [5, 10], "achiev": [5, 7, 9], "geti2p": 5, "net": 5, "websit": 5, "base32": 5, "comma": 5, "5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq": 5, "output": [5, 10], "event": 5, "simplest": [5, 9], "tunnel": [5, 9, 11], "interchang": 5, "degre": 5, "retain": 5, "eas": [5, 9], "simpler": 5, "listen_ip": 5, "listen_port": 5, "bind": 5, "10": [5, 9, 10], "88": 5, "i2p_tunnel": 5, "127": 5, "5001": 5, "dedic": [5, 9], "natur": 5, "toler": 5, "intermitt": 5, "gracefulli": 5, "reappear": 5, "hostnam": 5, "expos": [5, 7], "soundmodem": 5, "kiss_fram": 5, "8001": 5, "caution": 5, "frame": 5, "conjunct": 5, "never": [5, 7, 9], "disabl": [5, 9, 10], "intern": [5, 7, 9], "recoveri": 5, "greatli": 5, "unreli": 5, "implic": 5, "better": 5, "udpinterfac": 5, "forward_ip": 5, "255": [5, 10], "forward_port": 5, "assum": [5, 9], "55": 5, "72": 5, "24": 5, "equival": 5, "forward": [5, 7, 9, 11], "segment": [5, 6, 7, 9, 11], "15": 5, "16": [5, 9, 10], "ttyusb0": [5, 10], "867": 5, "mhz": [5, 9], "867200000": 5, "125": 5, "khz": 5, "125000": 5, "tx": [5, 10], "7": [5, 9, 10], "mw": 5, "txpower": 5, "spread": [5, 10], "factor": [5, 7, 10], "12": [5, 10], "fastest": [5, 9], "longest": 5, "spreadingfactor": 5, "throough": 5, "codingr": 5, "interv": [5, 7, 10], "id_callsign": 5, "mycal": 5, "id_interv": 5, "600": 5, "homebrew": 5, "amount": [5, 6, 7, 9, 11], "ram": 5, "flow_control": 5, "airtim": 5, "term": [5, 6, 9], "appli": [5, 7, 9], "window": 5, "approxim": 5, "enforc": 5, "roll": 5, "airtime_limit_long": 5, "airtime_limit_short": 5, "33": 5, "pair": [5, 7, 9, 10], "laser": 5, "baud": [5, 10], "speed": [5, 9, 10], "115200": [5, 10], "databit": [5, 10], "pariti": [5, 10], "stopbit": [5, 10], "stdin": [5, 10], "netcat": 5, "l": [5, 10], "5757": 5, "respawn": 5, "respawn_delai": 5, "continu": [5, 7, 8, 11], "scan": 5, "eof": 5, "respawn_interv": 5, "varieti": [5, 9, 10, 11], "openmodem": [5, 11], "period": [5, 7, 9], "beacon": 5, "station": 5, "kissinterfac": [5, 10], "ttyusb1": 5, "preambl": [5, 10], "150": [5, 10], "tail": 5, "txtail": [5, 10], "cdma": 5, "200": [5, 10], "slottim": [5, 10], "20": [5, 9, 10], "elaps": 5, "comment": [5, 10], "amateur": [5, 11], "spectrum": [5, 9], "encapsul": [5, 11], "callsign": 5, "ssid": 5, "realli": [5, 7], "doesn": 5, "incur": 5, "ax25kissinterfac": 5, "no1cll": 5, "ttyusb2": 5, "150m": 5, "increas": [5, 10], "squelch": 5, "rx": 5, "turnaround": 5, "kept": [5, 6, 7, 9], "wast": 5, "bring": 5, "brought": [5, 10], "access_point": 5, "shorthand": [5, 10], "ap": 5, "shorter": 5, "expiri": 5, "mostli": [5, 6, 9], "quiet": [5, 10], "momentarili": 5, "disappear": [5, 10], "network_nam": 5, "passphras": [5, 9], "alon": 5, "ifac_s": 5, "customis": 5, "carri": [5, 7, 9, 10], "512": [5, 7, 9], "announce_cap": [5, 7], "maximum": [5, 7, 9], "alloc": [5, 7, 9, 10], "given": [5, 6, 7, 9, 10], "upkeep": 5, "cap": 5, "queue": [5, 9], "nearbi": 5, "overwhelm": [5, 7], "rapidli": 5, "spam": 5, "effect": 5, "excess": 5, "benefici": [5, 10], "balanc": 5, "necesarri": 5, "bitrat": 5, "report": [5, 8, 10], "guess": 5, "per": [5, 7, 9, 10, 11], "strictli": [5, 9], "complex": [5, 9], "left": [5, 7, 9, 10], "gw": 5, "behalf": 5, "resid": 5, "requestor": 5, "chain": 5, "along": [5, 6, 7, 9, 10], "boundari": 5, "remain": [5, 7, 9], "roam": 5, "mobil": [5, 9], "seen": [5, 9], "perspect": [5, 7, 9, 11], "vehicl": 5, "equip": [5, 6, 9], "side": [5, 11], "expir": 5, "significantli": 5, "impact": [5, 9], "announce_rate_target": 5, "announce_rate_grac": 5, "announce_rate_penalti": 5, "basi": [5, 7, 9, 10, 11], "moder": 5, "violat": 5, "penalti": 5, "7200": 5, "annouce_cap": 5, "mention": [5, 9], "strategi": [5, 7], "decis": [5, 9], "slower": [5, 7, 9], "hop": [5, 6, 7, 9, 10, 11], "right": [5, 6], "tend": 5, "conserv": 5, "span": [5, 9], "seamlessli": 5, "influx": 5, "annonuc": [], "newli": [5, 6, 7, 9], "previous": [5, 6, 7, 9], "occur": [5, 10, 11], "hold": [5, 7, 9], "interrupt": 5, "neccessari": 5, "modifi": [5, 9, 10], "ingress_control": 5, "ic_new_tim": 5, "spawn": 5, "sub": 5, "ic_burst_freq_new": 5, "ic_burst_freq": 5, "burst": 5, "temporarili": 5, "held": 5, "ic_max_held_announc": 5, "drop": [5, 7, 9, 10], "256": [5, 7, 9, 10], "ic_burst_hold": 5, "threshold": 5, "ic_burst_penalti": 5, "ic_held_release_interv": 5, "30": [5, 10], "knowledg": [6, 9], "tradit": [6, 9], "worri": 6, "coordin": [6, 7, 9, 11], "evolv": 6, "futur": [6, 9], "mind": [6, 11], "autonom": [6, 9], "terminologi": [6, 9], "rest": [6, 11], "billion": [6, 9], "larger": [6, 9, 10], "higher": [6, 11], "discrimin": 6, "ephemer": [6, 7, 9, 11], "ellipt": [6, 7, 9, 11], "curv": [6, 7, 9, 11], "diffi": [6, 9, 11], "hellman": [6, 9, 11], "exchang": [6, 7, 9, 11], "curve25519": [6, 7, 9, 11], "throttl": 6, "thu": [6, 7, 9], "agnost": [6, 9], "equal": [6, 7, 9], "keystor": 6, "degrad": 6, "stationari": [6, 10], "candid": 6, "optim": 6, "intend": [6, 9], "trustless": [6, 9, 11], "leav": [6, 9], "free": [6, 8, 11], "unorganis": 6, "manner": 6, "far": [6, 9], "unexplor": 6, "dissolv": 6, "organ": 6, "restrict": 6, "legaci": 6, "unifi": 6, "underli": [6, 11], "carrier": [6, 11], "involv": 6, "hardlin": 6, "decid": [5, 6, 7, 9], "illustr": [6, 9], "plan": [6, 9], "member": 6, "mainli": 6, "three": [6, 9], "hill": 6, "top": [6, 9], "chosen": [6, 9], "sight": 6, "becaus": [6, 9], "four": 6, "At": [6, 9], "cabl": 6, "suppli": [6, 7, 9], "grow": 6, "core": [6, 9, 10, 11], "those": [6, 9], "d": [6, 10], "island": 6, "investig": 6, "dori": 6, "willing": 6, "she": 6, "her": 6, "home": 6, "everyon": [6, 9], "vice": [6, 11], "versa": [6, 11], "vhf": [6, 9, 11], "outli": 6, "geograph": 6, "coverag": 6, "dai": 6, "find": [6, 9], "poorli": 6, "outlier": 6, "signatur": [7, 9, 10, 11], "configdir": 7, "logdest": 7, "verbos": [7, 10], "exactli": [7, 9], "independ": [7, 9, 11], "inter": 7, "soon": 7, "kill": [7, 9], "forcibli": [7, 10], "advantag": 7, "demand": 7, "mtu": [7, 9, 11], "500": [7, 9, 11], "adher": 7, "507": 7, "prerequisit": 7, "percentag": 7, "schedul": 7, "queu": [7, 10], "fewer": 7, "distant": 7, "smaller": 7, "eventu": 7, "individu": [5, 7, 9, 11], "static": 7, "should_use_implicit_proof": 7, "explicit": 7, "implicit": [7, 9], "transport_en": 7, "create_kei": 7, "decrypt": [7, 9, 10], "verif": [7, 9, 10], "sign": [7, 9, 10], "dh": 7, "keysiz": 7, "x25519": [7, 9, 11], "concaten": 7, "128": [7, 9, 11], "constant": 7, "truncat": [7, 9], "recall_app_data": 7, "heard": [7, 9], "full_hash": 7, "sha": [7, 9], "truncated_hash": 7, "from_byt": 7, "prv_byte": 7, "save": [7, 9], "hazard": 7, "feed": 7, "from_fil": 7, "to_fil": 7, "Be": [7, 10], "get_private_kei": 7, "get_public_kei": 7, "load_private_kei": 7, "load_public_kei": 7, "pub_byt": 7, "ciphertext": 7, "token": [7, 9], "keyerror": 7, "ciphertext_token": 7, "presenc": 7, "ingo": 7, "zero": [7, 11], "expand_nam": 7, "app_and_aspects_from_nam": 7, "full_nam": [7, 10], "tupl": 7, "hash_from_name_and_ident": 7, "path_respons": 7, "attached_interfac": 7, "tag": 7, "flag": [7, 9], "accepts_link": 7, "accept": [7, 8, 9, 10], "set_proof_requested_callback": 7, "proof_strategi": 7, "prove_non": 7, "prove_app": 7, "proof_requested_callback": 7, "allow_non": 7, "allowed_list": 7, "whatev": [7, 9], "funcion": 7, "allow_list": 7, "deregister_request_handl": 7, "deregist": 7, "symmetr": [7, 9], "typeerror": 7, "incompat": [7, 9], "set_default_app_data": 7, "clear_default_app_data": 7, "ae": [7, 9, 11], "secreci": [7, 9, 11], "instanti": 7, "encrypted_mdu": 7, "383": 7, "plain_mdu": 7, "464": 7, "resend": 7, "get_statu": 7, "cull": 7, "successful": 7, "proven": [7, 9], "established_callback": 7, "closed_callback": 7, "establishment_timeout_per_hop": 7, "6": [7, 10], "keepalive_timeout_factor": 7, "4": [7, 9, 10], "calcul": [7, 9, 10], "stale_grac": 7, "grace": 7, "keepal": [7, 9], "360": 7, "aliv": [7, 9], "stale_tim": 7, "720": 7, "mark": [7, 9], "stale": 7, "torn": 7, "progress_callback": 7, "info": [7, 9, 10], "get_establishment_r": 7, "ocur": 7, "no_inbound_for": 7, "no_outbound_for": 7, "outbound": [7, 9], "inactive_for": 7, "purg": 7, "set_resource_callback": 7, "get_transfer_s": 7, "get_data_s": 7, "get_part": 7, "is_compress": 7, "begun": 7, "resource_strategi": 7, "accept_non": 7, "accept_app": 7, "resource_callback": 7, "unsupport": 7, "get_request_id": 7, "get_respons": 7, "get_response_tim": 7, "auto_compress": 7, "arbitrari": [7, 9, 10, 11], "checksum": [7, 11], "Will": 7, "whenev": [7, 9], "cancel": 7, "total": [7, 9, 11], "get_seg": 7, "divid": 7, "get_hash": 7, "bi": [7, 9], "neither": [7, 9], "constrain": 7, "message_class": 7, "recept": 7, "messagecallbacktyp": 7, "bool": 7, "stop": [7, 11], "remove_message_handl": 7, "remov": [7, 10], "envelop": 7, "thrown": 7, "consum": 7, "adjust": 7, "accommod": [7, 9], "abstract": [7, 9], "greater": [7, 9], "popul": 7, "bufferedread": 7, "bufferedwrit": 7, "bufferedrwpair": 7, "create_read": 7, "ready_callback": 7, "document": [7, 9], "create_writ": 7, "receive_stream_id": 7, "send_stream_id": 7, "rawiobas": 7, "add_ready_callback": 7, "cb": [7, 9], "remove_ready_callback": 7, "pathfinder_m": 7, "attribut": 7, "deregister_announce_handl": 7, "hops_to": 7, "next_hop": 7, "next_hop_interfac": 7, "on_interfac": 7, "recurs": 7, "gratefulli": 8, "monero": 8, "84fpy1qbxhcgdseepynmhthcrgmx4nffbytz2gkytoqhvvhjp8eaw1z1eedrnkd19b3b8nilcgvxzkv17ummmeescrpya5w": 8, "ethereum": 8, "0x81f7b979fea6134ba9fd5c701b3501a2e61e897a": 8, "bitcoin": 8, "3cpmacgm34qyvr6xwlvejmi2ane3pzquuq": 8, "ko": 8, "fi": 8, "roadmap": 8, "realiti": 8, "quickli": [8, 9, 11], "sponsor": [8, 11], "dysfunct": 8, "analyt": 8, "telemetri": 8, "collect": 8, "under": [8, 10, 11], "circumst": [8, 9], "reli": [8, 9], "fashion": 8, "u": [8, 9, 10], "suggest": 8, "overal": 9, "principl": [9, 11], "author": 9, "That": 9, "said": 9, "pretti": 9, "sentiment": 9, "philosophi": 9, "seek": 9, "solv": 9, "solut": [9, 10], "primari": 9, "lack": 9, "my": 9, "belief": 9, "highli": 9, "machin": 9, "censorship": [9, 11], "barrier": 9, "todai": 9, "centralis": 9, "trust": [9, 10], "approv": 9, "gatekeep": 9, "inevit": 9, "govern": 9, "alter": 9, "censor": 9, "persecut": 9, "unwant": 9, "actor": 9, "imposs": 9, "freeli": 9, "deploi": 9, "enhanc": 9, "agenc": 9, "freedom": 9, "permissionless": 9, "pick": 9, "ghz": 9, "off": [9, 10, 11], "shelf": [9, 11], "ultim": 9, "vast": 9, "myriad": 9, "thousand": 9, "surveil": 9, "disassoci": 9, "oversight": 9, "beings": 9, "usabl": 9, "useabl": 9, "critic": [9, 10], "agnostic": 9, "shall": 9, "handheld": 9, "interest": 9, "strong": 9, "oneself": 9, "unlicens": 9, "licens": 9, "condit": [9, 11], "pmr": 9, "written": 9, "programm": 9, "orient": 9, "multipoint": 9, "recipi": 9, "singular": 9, "_represented_": 9, "characterist": 9, "13425ec15b621c1d928589718000d814": 9, "trade": 9, "simultan": 9, "unlik": 9, "nears": 9, "congest": 9, "galact": 9, "scale": [9, 11], "obvious": 9, "ridicul": 9, "multi": [9, 10, 11], "special": [9, 10], "ecdh": [9, 11], "creator": 9, "correspond": 9, "possess": 9, "although": [9, 11], "capabl": 9, "dot": [9, 10], "notat": [9, 10], "repres": 9, "plenti": 9, "environment": 9, "monitor": 9, "measur": 9, "environmentlogg": 9, "remotesensor": 9, "temperatur": 9, "4faf1b2e0a077e6a9d92fa051f256038": 9, "advis": 9, "expand": 9, "recap": 9, "indirectli": 9, "ledger": 9, "therefor": [9, 11], "messeng": 9, "nicknam": 9, "ed25519": [9, 11], "reconstruct": 9, "notic": [9, 10], "piec": 9, "intention": 9, "infer": 9, "throughout": 9, "accord": 9, "around": 9, "topic": 9, "necessarili": 9, "person": 9, "entiti": 9, "robot": 9, "sensor": 9, "someth": 9, "agent": 9, "manipul": [9, 11], "multilater": 9, "creation": [9, 11], "great": 9, "suffic": 9, "cluster": 9, "hear": 9, "But": 9, "lot": 9, "surviv": 9, "overcom": 9, "challeng": 9, "asymmetr": [9, 10, 11], "closer": 9, "distinguish": 9, "contend": 9, "enable_transport": [9, 10], "retransmit": [5, 9], "randomis": 9, "prioriti": 9, "invers": 9, "proport": 9, "count": 9, "insert": 9, "closest": 9, "newer": 9, "newest": 9, "discard": 9, "contact": 9, "shortest": 9, "predict": 9, "constantli": 9, "earlier": 9, "opt": 9, "against": 9, "bidirect": 9, "travers": 9, "rememb": 9, "ten": 9, "advanc": 9, "confirm": [9, 11], "insid": 9, "intermediari": 9, "moment": [9, 11], "methodologi": [9, 10], "answer": [9, 10], "malici": 9, "pretend": 9, "recreat": 9, "rotat": 9, "memori": 9, "thereaft": 9, "297": [9, 11], "practic": [9, 11], "neglig": 9, "1200": 9, "96": 9, "keypair": 9, "simplic": 9, "explan": [9, 10], "lki": 9, "laid": 9, "had": 9, "construct": [9, 11], "lkr": 9, "chose": 9, "direction": 9, "unequivoc": 9, "retransmiss": 9, "reassembl": 9, "programmat": 9, "satisfi": 9, "half": [9, 11], "duplex": [9, 11], "averag": 9, "throughput": [9, 11], "x": [9, 10], "runtim": 9, "consist": 9, "whereupon": 9, "stabl": [9, 11], "stage": 9, "year": 9, "microcontrol": 9, "430": 9, "868": 9, "900": 9, "recent": 9, "mac": 9, "tailor": 9, "treat": 9, "regard": 9, "preshar": 9, "ifac": [9, 10], "compos": 9, "field": 9, "context": 9, "465": 9, "vari": [9, 10], "00": [9, 10], "01": 9, "11": 9, "_______": 9, "________________": 9, "________": 9, "______": 9, "__": 9, "_": 9, "01010000": 9, "00000100": 9, "hash1": 9, "hash2": 9, "header_2": 9, "00000000": 9, "00000111": 9, "header_1": 9, "10000000": 9, "exclud": 9, "51": 9, "167": 9, "83": [9, 10], "115": 9, "99": 9, "conceptu": 9, "hkdf": 9, "fernet": [9, 11], "cbc": [9, 11], "hmac": [9, 11], "hashlib": 9, "pkcs7": [9, 11], "pad": [9, 11], "trivial": [9, 11], "consequ": 9, "backend": 9, "loss": 9, "scrutini": 9, "review": [9, 11], "risk": 9, "driver": [10, 11], "privileg": 10, "light": 10, "weight": 10, "etc": 10, "boot": 10, "ie": 10, "breviti": 10, "socket": 10, "turn": 10, "share_inst": 10, "shared_instance_port": 10, "37428": 10, "instance_control_port": 10, "37429": 10, "panic": 10, "unrecover": 10, "panic_on_interface_error": 10, "probe": 10, "respond_to_prob": 10, "warn": 10, "debug": 10, "unus": 10, "teach": 10, "task": 10, "08": 10, "18": 10, "17": 10, "59": 10, "56": 10, "v": 10, "show": 10, "ifconfig": 10, "gbp": 10, "13": 10, "kb": 10, "86": 10, "mbp": 10, "63": 10, "23": 10, "80": 10, "tcpinterfac": 10, "dublin": 10, "187": 10, "27": 10, "74": 10, "uhf": [10, 11], "kbp": 10, "e702c42ba8": 10, "49": 10, "9": 10, "5245a8efe1788c6a1cd36144a270e13b": 10, "j": 10, "posit": 10, "json": 10, "new_ident": 10, "984b74a3f768bef236af4371e6f248cd": 10, "new_id": 10, "0f4259fef4521ab75a3409e353fe9073eb10783b4912a6a9937c57bf44a62c1": 10, "hidden": 10, "8dd57a738226809646089335a6b03695": 10, "my_fil": 10, "txt": 10, "bc7291552be7a58f361522990465165c": 10, "rfe": 10, "fetch": 10, "30602def3b3506a28ed33db6f60cc6c9": 10, "2b489d06eaf7c543808c76a5332a447d": 10, "my_ident": 10, "2225fdeecaf6e2db4556c3c2d7637294": 10, "w": 10, "decreas": 10, "overwrit": 10, "c89b4da064bf66d280f0e4d8abfd9806": 10, "f53a1c4278e0726bb73fcc623d6ce763": 10, "rnstransport": 10, "2d03725b327348980d570f739a3a5708": 10, "38": 10, "469": 10, "781": 10, "e7536ee90bd4a440e130490b87a25124": 10, "809": 10, "73": 10, "1726dbad538775b5bf9b0ea25a4079c8": 10, "c50cc4e4f7838b6c31f60ab9032cbc62": 10, "allowed_ident": 10, "copi": 10, "tgz": 10, "73cbd378bb0286ed11a707c13447bb1": 10, "allowed_hash": 10, "silent": 10, "auth": 10, "941bed5e228775e5a8079fc38b1ccf3f": 10, "1b03013c25f1c2ca068a4f080b844a10": 10, "7a55144adf826958a9529a3bcf08b149": 10, "cat": 10, "proc": 10, "cpuinfo": 10, "pseudo": 10, "stderr": 10, "noauth": 10, "noid": 10, "mirror": 10, "max": 10, "fw": 10, "nocheck": 10, "flash": 10, "baud_flash": 10, "freq": 10, "hz": 10, "bw": 10, "txp": 10, "sf": 10, "cr": 10, "eeprom": 10, "backup": 10, "dump": 10, "wipe": 10, "hexbyt": 10, "attach": 10, "older": 10, "onlin": 10, "extract": 10, "cach": 10, "921600": 10, "bluetooth": 10, "intens": 10, "consol": 10, "unlock": 10, "perman": 10, "administr": 10, "ftdi_ft230x_basic_uart_43891ckm": 10, "if00": 10, "port0": 10, "plug": 10, "unplug": 10, "systemd": 10, "usr": 10, "bin": 10, "execstartpr": 10, "restart": 10, "restartsec": 10, "usernameher": 10, "execstart": 10, "wantedbi": 10, "systemctl": 10, "readili": 11, "advers": 11, "unforg": 11, "acknowledg": 11, "empow": 11, "autonomi": 11, "sovereignti": 11, "subject": 11, "outsid": 11, "planetari": 11, "hierarch": 11, "beaureucrat": 11, "resili": 11, "userland": 11, "beta": 11, "bug": 11, "warrant": 11, "sha256": 11, "iv": 11, "urandom": 11, "intuit": 11, "friendli": 11, "44": 11, "gigabyt": 11, "scalabl": 11, "hoc": 11, "transform": 11, "fact": 11, "strength": 11, "generalis": 11, "fibr": 11, "popular": 11, "ideal": 11, "stdio": 11, "hack": 11, "foremost": 11, "audit": 11, "privaci": 11, "thorough": 11, "research": 11, "touch": 11, "ref": [], "disrupt": 5, "subsid": 5, "bogu": 5}, "objects": {"RNS": [[7, 0, 1, "", "Buffer"], [7, 0, 1, "", "Destination"], [7, 0, 1, "", "Identity"], [7, 0, 1, "", "Link"], [7, 0, 1, "", "MessageBase"], [7, 0, 1, "", "Packet"], [7, 0, 1, "", "PacketReceipt"], [7, 0, 1, "", "RawChannelReader"], [7, 0, 1, "", "RawChannelWriter"], [7, 0, 1, "", "RequestReceipt"], [7, 0, 1, "", "Resource"], [7, 0, 1, "", "Reticulum"], [7, 0, 1, "", "Transport"]], "RNS.Buffer": [[7, 1, 1, "", "create_bidirectional_buffer"], [7, 1, 1, "", "create_reader"], [7, 1, 1, "", "create_writer"]], "RNS.Channel": [[7, 0, 1, "", "Channel"]], "RNS.Channel.Channel": [[7, 2, 1, "", "MDU"], [7, 1, 1, "", "add_message_handler"], [7, 1, 1, "", "is_ready_to_send"], [7, 1, 1, "", "register_message_type"], [7, 1, 1, "", "remove_message_handler"], [7, 1, 1, "", "send"]], "RNS.Destination": [[7, 1, 1, "", "accepts_links"], [7, 1, 1, "", "announce"], [7, 1, 1, "", "app_and_aspects_from_name"], [7, 1, 1, "", "clear_default_app_data"], [7, 1, 1, "", "create_keys"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "deregister_request_handler"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "expand_name"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "hash"], [7, 1, 1, "", "hash_from_name_and_identity"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "register_request_handler"], [7, 1, 1, "", "set_default_app_data"], [7, 1, 1, "", "set_link_established_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_proof_requested_callback"], [7, 1, 1, "", "set_proof_strategy"], [7, 1, 1, "", "sign"]], "RNS.Identity": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "KEYSIZE"], [7, 3, 1, "", "TRUNCATED_HASHLENGTH"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "from_bytes"], [7, 1, 1, "", "from_file"], [7, 1, 1, "", "full_hash"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "get_public_key"], [7, 1, 1, "", "get_random_hash"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "load_public_key"], [7, 1, 1, "", "recall"], [7, 1, 1, "", "recall_app_data"], [7, 1, 1, "", "sign"], [7, 1, 1, "", "to_file"], [7, 1, 1, "", "truncated_hash"], [7, 1, 1, "", "validate"]], "RNS.Link": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "ESTABLISHMENT_TIMEOUT_PER_HOP"], [7, 3, 1, "", "KEEPALIVE"], [7, 3, 1, "", "KEEPALIVE_TIMEOUT_FACTOR"], [7, 3, 1, "", "STALE_GRACE"], [7, 3, 1, "", "STALE_TIME"], [7, 1, 1, "", "get_channel"], [7, 1, 1, "", "get_establishment_rate"], [7, 1, 1, "", "get_remote_identity"], [7, 1, 1, "", "identify"], [7, 1, 1, "", "inactive_for"], [7, 1, 1, "", "no_inbound_for"], [7, 1, 1, "", "no_outbound_for"], [7, 1, 1, "", "request"], [7, 1, 1, "", "set_link_closed_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_remote_identified_callback"], [7, 1, 1, "", "set_resource_callback"], [7, 1, 1, "", "set_resource_concluded_callback"], [7, 1, 1, "", "set_resource_started_callback"], [7, 1, 1, "", "set_resource_strategy"], [7, 1, 1, "", "teardown"]], "RNS.MessageBase": [[7, 3, 1, "", "MSGTYPE"], [7, 1, 1, "", "pack"], [7, 1, 1, "", "unpack"]], "RNS.Packet": [[7, 3, 1, "", "ENCRYPTED_MDU"], [7, 3, 1, "", "PLAIN_MDU"], [7, 1, 1, "", "resend"], [7, 1, 1, "", "send"]], "RNS.PacketReceipt": [[7, 1, 1, "", "get_rtt"], [7, 1, 1, "", "get_status"], [7, 1, 1, "", "set_delivery_callback"], [7, 1, 1, "", "set_timeout"], [7, 1, 1, "", "set_timeout_callback"]], "RNS.RawChannelReader": [[7, 1, 1, "", "__init__"], [7, 1, 1, "", "add_ready_callback"], [7, 1, 1, "", "remove_ready_callback"]], "RNS.RawChannelWriter": [[7, 1, 1, "", "__init__"]], "RNS.RequestReceipt": [[7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_request_id"], [7, 1, 1, "", "get_response"], [7, 1, 1, "", "get_response_time"], [7, 1, 1, "", "get_status"]], "RNS.Resource": [[7, 1, 1, "", "advertise"], [7, 1, 1, "", "cancel"], [7, 1, 1, "", "get_data_size"], [7, 1, 1, "", "get_hash"], [7, 1, 1, "", "get_parts"], [7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_segments"], [7, 1, 1, "", "get_transfer_size"], [7, 1, 1, "", "is_compressed"]], "RNS.Reticulum": [[7, 3, 1, "", "ANNOUNCE_CAP"], [7, 3, 1, "", "MTU"], [7, 1, 1, "", "should_use_implicit_proof"], [7, 1, 1, "", "transport_enabled"]], "RNS.Transport": [[7, 3, 1, "", "PATHFINDER_M"], [7, 1, 1, "", "deregister_announce_handler"], [7, 1, 1, "", "has_path"], [7, 1, 1, "", "hops_to"], [7, 1, 1, "", "next_hop"], [7, 1, 1, "", "next_hop_interface"], [7, 1, 1, "", "register_announce_handler"], [7, 1, 1, "", "request_path"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:property", "3": "py:attribute"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "property", "Python property"], "3": ["py", "attribute", "Python attribute"]}, "titleterms": {"code": [0, 8, 9], "exampl": [0, 6], "minim": 0, "announc": [0, 5, 9], "broadcast": 0, "echo": 0, "link": [0, 9], "identif": 0, "request": 0, "respons": 0, "channel": 0, "buffer": 0, "filetransf": 0, "an": 1, "explan": 1, "reticulum": [1, 2, 3, 4, 8, 9, 10, 11], "human": 1, "Beings": 1, "get": [2, 9], "start": 2, "fast": 2, "standalon": 2, "instal": [2, 3], "resolv": 2, "depend": 2, "issu": 2, "try": 2, "us": [2, 10, 11], "base": [2, 3], "program": [2, 10], "remot": 2, "shell": 2, "nomad": 2, "network": [2, 4, 6], "sideband": 2, "includ": [2, 10], "util": [2, 10], "creat": [2, 3], "With": 2, "connect": 2, "instanc": 2, "over": [2, 6], "internet": [2, 6], "public": [2, 9], "testnet": 2, "ad": 2, "radio": [2, 3], "interfac": [2, 5, 9, 11], "develop": 2, "particip": 2, "platform": 2, "specif": [2, 9], "note": 2, "android": 2, "arm64": 2, "raspberri": 2, "pi": 2, "debian": 2, "bookworm": 2, "ubuntu": 2, "lunar": 2, "pure": 2, "python": 2, "commun": 3, "hardwar": 3, "combin": 3, "type": [3, 9, 11], "rnode": [3, 5], "support": [3, 8], "board": 3, "lilygo": 3, "lora32": 3, "v2": 3, "1": 3, "0": 3, "t": 3, "beam": 3, "heltec": 3, "unsign": 3, "x": 3, "v1": 3, "usag": 3, "wifi": 3, "ethernet": 3, "serial": [3, 5, 10], "line": 3, "devic": [3, 11], "packet": [3, 9], "modem": 3, "stack": 4, "manual": 4, "tabl": 4, "Of": 4, "content": 4, "indic": 4, "configur": [5, 10], "auto": 5, "i2p": 5, "tcp": 5, "server": 5, "client": 5, "udp": 5, "lora": [5, 6], "pipe": 5, "kiss": 5, "ax": 5, "25": 5, "common": 5, "option": 5, "mode": 5, "rate": 5, "control": 5, "ingress": [], "build": 6, "concept": 6, "overview": 6, "scenario": 6, "interconnect": 6, "site": 6, "bridg": 6, "growth": 6, "converg": 6, "api": 7, "refer": [7, 9], "donat": 8, "provid": 8, "feedback": 8, "contribut": 8, "understand": 9, "motiv": 9, "goal": 9, "introduct": 9, "basic": 9, "function": 9, "destin": [5, 9], "name": [9, 10], "kei": 9, "ident": 9, "further": 9, "transport": 9, "node": 9, "The": [9, 10], "mechan": 9, "detail": 9, "reach": 9, "establish": 9, "resourc": 9, "setup": 9, "protocol": 9, "prioritis": 9, "access": 9, "wire": 9, "format": 9, "propag": 9, "rule": 9, "cryptograph": 9, "primit": 9, "your": 10, "system": 10, "data": 10, "rnsd": 10, "rnstatu": 10, "rnid": 10, "rnpath": 10, "rnprobe": 10, "rncp": 10, "rnx": 10, "rnodeconf": 10, "improv": 10, "fix": 10, "port": 10, "servic": 10, "what": 11, "i": 11, "current": 11, "statu": 11, "doe": 11, "offer": 11, "where": 11, "can": 11, "caveat": 11, "emptor": 11, "outgo": [], "incom": [], "new": 5, "limit": 5}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "alltitles": {"Code Examples": [[0, "code-examples"]], "Minimal": [[0, "minimal"]], "Announce": [[0, "announce"]], "Broadcast": [[0, "broadcast"]], "Echo": [[0, "echo"]], "Link": [[0, "link"]], "Identification": [[0, "example-identify"]], "Requests & Responses": [[0, "requests-responses"]], "Channel": [[0, "channel"]], "Buffer": [[0, "buffer"]], "Filetransfer": [[0, "filetransfer"]], "An Explanation of Reticulum for Human Beings": [[1, "an-explanation-of-reticulum-for-human-beings"]], "Getting Started Fast": [[2, "getting-started-fast"]], "Standalone Reticulum Installation": [[2, "standalone-reticulum-installation"]], "Resolving Dependency & Installation Issues": [[2, "resolving-dependency-installation-issues"]], "Try Using a Reticulum-based Program": [[2, "try-using-a-reticulum-based-program"]], "Remote Shell": [[2, "remote-shell"]], "Nomad Network": [[2, "nomad-network"]], "Sideband": [[2, "sideband"]], "Using the Included Utilities": [[2, "using-the-included-utilities"]], "Creating a Network With Reticulum": [[2, "creating-a-network-with-reticulum"]], "Connecting Reticulum Instances Over the Internet": [[2, "connecting-reticulum-instances-over-the-internet"]], "Connect to the Public Testnet": [[2, "connect-to-the-public-testnet"]], "Adding Radio Interfaces": [[2, "adding-radio-interfaces"]], "Develop a Program with Reticulum": [[2, "develop-a-program-with-reticulum"]], "Participate in Reticulum Development": [[2, "participate-in-reticulum-development"]], "Platform-Specific Install Notes": [[2, "platform-specific-install-notes"]], "Android": [[2, "android"]], "ARM64": [[2, "arm64"]], "Raspberry Pi": [[2, "raspberry-pi"]], "Debian Bookworm": [[2, "debian-bookworm"]], "Ubuntu Lunar": [[2, "ubuntu-lunar"]], "Pure-Python Reticulum": [[2, "pure-python-reticulum"]], "Communications Hardware": [[3, "communications-hardware"]], "Combining Hardware Types": [[3, "combining-hardware-types"]], "RNode": [[3, "rnode"]], "Creating RNodes": [[3, "creating-rnodes"]], "Supported Boards": [[3, "supported-boards"]], "LilyGO LoRa32 v2.1": [[3, "lilygo-lora32-v2-1"]], "LilyGO LoRa32 v2.0": [[3, "lilygo-lora32-v2-0"]], "LilyGO T-Beam": [[3, "lilygo-t-beam"]], "Heltec LoRa32 v2.0": [[3, "heltec-lora32-v2-0"]], "Unsigned RNode v2.x": [[3, "unsigned-rnode-v2-x"]], "Unsigned RNode v1.x": [[3, "unsigned-rnode-v1-x"]], "Installation": [[3, "installation"]], "Usage with Reticulum": [[3, "usage-with-reticulum"]], "WiFi-based Hardware": [[3, "wifi-based-hardware"]], "Ethernet-based Hardware": [[3, "ethernet-based-hardware"]], "Serial Lines & Devices": [[3, "serial-lines-devices"]], "Packet Radio Modems": [[3, "packet-radio-modems"]], "Reticulum Network Stack Manual": [[4, "reticulum-network-stack-manual"]], "Table Of Contents": [[4, "table-of-contents"]], "Indices and Tables": [[4, "indices-and-tables"]], "Building Networks": [[6, "building-networks"]], "Concepts & Overview": [[6, "concepts-overview"]], "Example Scenarios": [[6, "example-scenarios"]], "Interconnected LoRa Sites": [[6, "interconnected-lora-sites"]], "Bridging Over the Internet": [[6, "bridging-over-the-internet"]], "Growth and Convergence": [[6, "growth-and-convergence"]], "API Reference": [[7, "api-reference"]], "Support Reticulum": [[8, "support-reticulum"]], "Donations": [[8, "donations"]], "Provide Feedback": [[8, "provide-feedback"]], "Contribute Code": [[8, "contribute-code"]], "Understanding Reticulum": [[9, "understanding-reticulum"]], "Motivation": [[9, "motivation"]], "Goals": [[9, "goals"]], "Introduction & Basic Functionality": [[9, "introduction-basic-functionality"]], "Destinations": [[9, "destinations"]], "Destination Naming": [[9, "destination-naming"]], "Public Key Announcements": [[9, "public-key-announcements"]], "Identities": [[9, "understanding-identities"]], "Getting Further": [[9, "getting-further"]], "Reticulum Transport": [[9, "reticulum-transport"]], "Node Types": [[9, "node-types"]], "The Announce Mechanism in Detail": [[9, "the-announce-mechanism-in-detail"]], "Reaching the Destination": [[9, "reaching-the-destination"]], "Link Establishment in Detail": [[9, "link-establishment-in-detail"]], "Resources": [[9, "resources"]], "Reference Setup": [[9, "reference-setup"]], "Protocol Specifics": [[9, "protocol-specifics"]], "Packet Prioritisation": [[9, "packet-prioritisation"]], "Interface Access Codes": [[9, "interface-access-codes"]], "Wire Format": [[9, "wire-format"]], "Announce Propagation Rules": [[9, "announce-propagation-rules"]], "Cryptographic Primitives": [[9, "cryptographic-primitives"]], "Using Reticulum on Your System": [[10, "using-reticulum-on-your-system"]], "Configuration & Data": [[10, "configuration-data"]], "Included Utility Programs": [[10, "included-utility-programs"]], "The rnsd Utility": [[10, "the-rnsd-utility"]], "The rnstatus Utility": [[10, "the-rnstatus-utility"]], "The rnid Utility": [[10, "the-rnid-utility"]], "The rnpath Utility": [[10, "the-rnpath-utility"]], "The rnprobe Utility": [[10, "the-rnprobe-utility"]], "The rncp Utility": [[10, "the-rncp-utility"]], "The rnx Utility": [[10, "the-rnx-utility"]], "The rnodeconf Utility": [[10, "the-rnodeconf-utility"]], "Improving System Configuration": [[10, "improving-system-configuration"]], "Fixed Serial Port Names": [[10, "fixed-serial-port-names"]], "Reticulum as a System Service": [[10, "reticulum-as-a-system-service"]], "What is Reticulum?": [[11, "what-is-reticulum"]], "Current Status": [[11, "current-status"]], "What does Reticulum Offer?": [[11, "what-does-reticulum-offer"]], "Where can Reticulum be Used?": [[11, "where-can-reticulum-be-used"]], "Interface Types and Devices": [[11, "interface-types-and-devices"]], "Caveat Emptor": [[11, "caveat-emptor"]], "Configuring Interfaces": [[5, "configuring-interfaces"]], "Auto Interface": [[5, "auto-interface"]], "I2P Interface": [[5, "i2p-interface"]], "TCP Server Interface": [[5, "tcp-server-interface"]], "TCP Client Interface": [[5, "tcp-client-interface"]], "UDP Interface": [[5, "udp-interface"]], "RNode LoRa Interface": [[5, "rnode-lora-interface"]], "Serial Interface": [[5, "serial-interface"]], "Pipe Interface": [[5, "pipe-interface"]], "KISS Interface": [[5, "kiss-interface"]], "AX.25 KISS Interface": [[5, "ax-25-kiss-interface"]], "Common Interface Options": [[5, "common-interface-options"]], "Interface Modes": [[5, "interface-modes"]], "Announce Rate Control": [[5, "announce-rate-control"]], "New Destination Rate Limiting": [[5, "new-destination-rate-limiting"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/docs/source/interfaces.rst b/docs/source/interfaces.rst index caeb440..d24aac1 100644 --- a/docs/source/interfaces.rst +++ b/docs/source/interfaces.rst @@ -763,16 +763,30 @@ that a large span of network types can seamlessly *co-exist* and interconnect. .. _interfaces-ingress-control: -Ingress Announce Control -======================== +New Destination Rate Limiting +============================= On public interfaces, where anyone may connect and announce new destinations, -it can be useful to control the rate at which new announces ingress. +it can be useful to control the rate at which announces for *new* destinations are +processed. If a large influx of announces for newly created or previously unknown destinations -occur, Reticulum will place these announces on hold, so that announce traffic -for known and previously established destinations can continue to be processed -without interruptions. +occur within a short amount of time, Reticulum will place these announces on hold, +so that announce traffic for known and previously established destinations can +continue to be processed without interruptions. + +After the burst subsides, and an additional waiting period has passed, the held +announces will be released at a slow rate, until the hold queue is cleared. This +also means, that should a node decide to connect to a public interface, announce +a large amount of bogus destinations, and then disconnect, these destination will +never make it into path tables and waste network bandwidth on retransmitted +announces. + +**It's important to note** that the ingress control works at the level of *individual +sub-interfaces*. As an example, this means that one client on a :ref:`TCP Server Interface` +cannot disrupt processing of incoming announces for other connected clients on the same +:ref:`TCP Server Interface`. All other clients on the same interface will still have new announces +processed without interruption. By default, Reticulum will handle this automatically, and ingress announce control will be enabled on interface where it is sensible to do so. It should