pub enum ContextEvent {
+ContextEvent in gosling::context - Rust
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
+ T: Any,
fn fmt_binary(self) -> FmtBinary<Self>where
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
diff --git a/crates/gosling/context/enum.Error.html b/crates/gosling/context/enum.Error.html
index b11d4bd1..cefc2342 100644
--- a/crates/gosling/context/enum.Error.html
+++ b/crates/gosling/context/enum.Error.html
@@ -1,4 +1,4 @@
-Error in gosling::context - Rust pub enum Error {
+Error in gosling::context - Rust pub enum Error {
InvalidArgument(String),
TorNotConnected(),
HandshakeHandleNotFound(HandshakeHandle),
@@ -36,13 +36,17 @@
T: ?Sized,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/gosling/context/struct.Context.html b/crates/gosling/context/struct.Context.html
index 2c3697e4..dc264e76 100644
--- a/crates/gosling/context/struct.Context.html
+++ b/crates/gosling/context/struct.Context.html
@@ -1,4 +1,4 @@
-Context in gosling::context - Rust pub struct Context { /* private fields */ }
Expand description
The gosling protocol implementation.
+Context in gosling::context - Rust pub struct Context { /* private fields */ }
Expand description
The gosling protocol implementation.
The Context
object provides various methods for starting and progressing identity and endpoint handshakes. The general usage pattern developers will follow is to construct a Context
object, connect to the Tor Network using Context::bootstrap()
, optionally start an identity or endpoint servers, and listen for and handle incoming identity and endpoint clients using Context::update()
and the various associated methods. Depending on the application’s requirements, the developer can also initiate identity and endpoint handshakes as necessary.
The Gosling Protocol specification can be found here:
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
diff --git a/crates/search-index.js b/crates/search-index.js
index 3247f111..a1242d8e 100644
--- a/crates/search-index.js
+++ b/crates/search-index.js
@@ -1,4 +1,4 @@
-var searchIndex = new Map(JSON.parse('[["gosling",{"t":"CFGPPPPPPPPPPGIPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","n":["context","Context","ContextEvent","EndpointClientError","EndpointClientHandshakeCompleted","EndpointClientHandshakeFailed","EndpointServerChannelRequestReceived","EndpointServerError","EndpointServerHandshakeCompleted","EndpointServerHandshakeFailed","EndpointServerHandshakeRejected","EndpointServerHandshakeStarted","EndpointServerPublished","Error","HandshakeHandle","HandshakeHandleNotFound","HonkRpc","IdentityClientChallengeReceived","IdentityClientError","IdentityClientHandshakeCompleted","IdentityClientHandshakeFailed","IdentityServerChallengeResponseReceived","IdentityServerEndpointRequestReceived","IdentityServerError","IdentityServerHandshakeCompleted","IdentityServerHandshakeFailed","IdentityServerHandshakeRejected","IdentityServerHandshakeStarted","IdentityServerPublished","IncorrectUsage","InvalidArgument","Io","TorBootstrapCompleted","TorBootstrapStatusReceived","TorCrypto","TorLogReceived","TorNotConnected","TorProvider","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","connect","endpoint_client_abort_handshake","endpoint_client_begin_handshake","endpoint_server_handle_channel_request_received","endpoint_server_start","endpoint_server_stop","fmt","","","from","","","","","","","generate_circuit_token","identity_client_abort_handshake","identity_client_begin_handshake","identity_client_handle_challenge_received","identity_server_handle_challenge_response_received","identity_server_handle_endpoint_request_received","identity_server_start","identity_server_stop","into","","","into_any","","","into_any_arc","","into_any_rc","","","new","release_circuit_token","report","source","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","vzip","","","challenge_response","challenge_response_valid","channel_name","","client_allowed","","client_auth_private_key","client_auth_public_key","client_auth_signature_valid","client_proof_signature_valid","","client_requested_channel_valid","client_requested_endpoint_valid","client_service_id","","","","endpoint_challenge","endpoint_name","","","endpoint_private_key","endpoint_service_id","","","","handle","","","","","","","","","","","","","","","","identity_service_id","line","progress","reason","","","","requested_channel","requested_endpoint","stream","","summary","tag"],"q":[[0,"gosling"],[1,"gosling::context"],[108,"gosling::context::ContextEvent"],[163,"core::any"],[164,"core::result"],[165,"tor_interface::tor_provider"],[166,"core::option"],[167,"tor_interface::tor_crypto"],[168,"alloc::string"],[169,"core::fmt"],[170,"honk_rpc::honk_rpc"],[171,"std::io::error"],[172,"bson::document"],[173,"alloc::boxed"],[174,"alloc::sync"],[175,"alloc::rc"],[176,"core::time"],[177,"tor_error::report"],[178,"core::error"],[179,"tor_persist::slug"],[180,"alloc::collections::vec_deque"]],"i":"```lBj00100000``11010000100000111001011h210210021021000000221022222100000000021021210210022202102120210210021EbEdEfEh2EjElEn55225F`1Fb5Fd43Ff4580715FhFj5<6;Fl;FnG`7<;Gb;GdGf7542:;EfEh22","f":"``````````````````````````````````````{b{{b{d}}}}00{{{b{f}}}{{b{fd}}}}00{{{b{fh}}}{{n{jl}}}}{b{{b{c}}}{}}00{{{b{f}}}{{b{fc}}}{}}00{{{b{fh}}A`{Ad{Ab}}}{{n{Afl}}}}{{{b{fh}}Ah}{{n{jl}}}}{{{b{fh}}AjAlAn}{{n{Ahl}}}}{{{b{fh}}AhB`}{{n{jl}}}}{{{b{fh}}BbAnAjBd}{{n{jl}}}}{{{b{fh}}Aj}{{n{jl}}}}{{{b{l}}{b{fBf}}}Bh}0{{{b{Bj}}{b{fBf}}}Bh}{cc{}}{Bll}{Bnl}2{C`l}{Cbl}4{{{b{fh}}}Ab}<{{{b{fh}}AjAn}{{n{Ahl}}}}{{{b{fh}}AhCd}{{n{jl}}}}<{{{b{fh}}AhB`B`Cd}{{n{jl}}}}{{{b{fh}}}{{n{jl}}}}0{{}c{}}00{{{Cf{c}}}{{Cf{d}}}{}}00{{{Ch{c}}}{{Ch{d}}}{}}0{{{Cj{c}}}{{Cj{d}}}{}}00{{{Cf{Cl}}CnCnD`Db{Ad{D`}}Bb}{{n{hl}}}}{{{b{fh}}Ab}j}{b{{Df{Dd}}}}{{{b{l}}}{{Ad{{b{Dh}}}}}}{bAn}{c{{n{e}}}{}{}}00{{}{{n{c}}}{}}00{b{{n{DjDl}}}}{{}{{n{c}}}{}}00{bDn}00{{{b{fh}}}{{n{{E`{Bj}}l}}}}{{}c{}}00```````````````````````````````````````````````````````","D":"Nl","p":[[1,"reference",null,null,1],[10,"Any",163],[0,"mut"],[5,"Context",1],[1,"unit"],[6,"Error",1],[6,"Result",164,null,1],[6,"TargetAddr",165],[8,"CircuitToken",165],[6,"Option",166,null,1],[5,"OnionStream",165],[8,"HandshakeHandle",1],[5,"V3OnionServiceId",167],[5,"X25519PrivateKey",167],[5,"String",168],[1,"bool"],[5,"Ed25519PrivateKey",167],[5,"X25519PublicKey",167],[5,"Formatter",169],[8,"Result",169],[6,"ContextEvent",1],[6,"Error",165],[6,"Error",167],[6,"Error",170],[5,"Error",171],[5,"Document",172],[5,"Box",173,null,1],[5,"Arc",174,null,1],[5,"Rc",175,null,1],[10,"TorProvider",165],[1,"u16"],[5,"Duration",176],[1,"i32"],[5,"ReportHelper",177],[5,"Report",177],[10,"Error",178],[5,"Slug",179],[6,"BadSlug",179],[5,"TypeId",163],[5,"VecDeque",180],[15,"IdentityServerChallengeResponseReceived",108],[15,"IdentityServerHandshakeRejected",108],[15,"EndpointClientHandshakeCompleted",108],[15,"EndpointServerHandshakeCompleted",108],[15,"EndpointServerHandshakeRejected",108],[15,"IdentityClientHandshakeCompleted",108],[15,"IdentityServerHandshakeCompleted",108],[15,"IdentityServerEndpointRequestReceived",108],[15,"EndpointServerChannelRequestReceived",108],[15,"IdentityClientChallengeReceived",108],[15,"EndpointServerPublished",108],[15,"IdentityClientHandshakeFailed",108],[15,"IdentityServerHandshakeStarted",108],[15,"IdentityServerHandshakeFailed",108],[15,"EndpointClientHandshakeFailed",108],[15,"EndpointServerHandshakeStarted",108],[15,"EndpointServerHandshakeFailed",108],[15,"TorLogReceived",108],[15,"TorBootstrapStatusReceived",108]],"r":[],"b":[[57,"impl-Debug-for-Error"],[58,"impl-Display-for-Error"],[61,"impl-From%3CError%3E-for-Error"],[62,"impl-From%3CError%3E-for-Error"],[64,"impl-From%3CError%3E-for-Error"],[65,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAC0ACAAnAAUALgAFADoAAgA+AAEAQQABAE8ABwBZAA8AagACAA==","P":[[45,"T"],[51,""],[60,"T"],[61,""],[63,"T"],[64,""],[66,"T"],[67,""],[75,"U"],[78,"T"],[86,""],[91,"U,T"],[94,"U"],[97,""],[98,"Target"],[101,""],[105,"V"]]}],["honk_rpc",{"t":"CKPPPPPSSGPGPPPPPPPPIPPPPGPPPPPPFPPPPPNNNNNNNNNNNNNNNMNNNNNNNNNHNNHHHNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNOOOOO","n":["honk_rpc","ApiSet","BsonDocumentParseFailed","BsonDocumentSizeTooLarge","BsonDocumentSizeTooSmall","BsonParseFailed","BsonWriteFailed","DEFAULT_MAX_MESSAGE_SIZE","DEFAULT_MAX_WAIT_TIME","Error","","ErrorCode","InvalidMaxMesageSize","MessageConversionFailed","MessageParseFailed","MessageReadTimedOut","MessageTooBig","MessageVersionIncompatible","Pending","ReaderReadFailed","RequestCookie","RequestCookieInvalid","RequestFunctionInvalid","RequestNamespaceInvalid","RequestVersionInvalid","Response","ResponseCookieInvalid","ResponseStateInvalid","Runtime","SectionIdUnknown","SectionParseFailed","SectionTooLarge","Session","Success","Unknown","UnknownErrorSectionReceived","WriterFlushFailed","WriterWriteFailed","borrow","","","","borrow_mut","","","","client_call","client_drain_responses","client_next_response","eq","equivalent","","","exec_function","fmt","","","","from","","","","","get_error_section_size","get_max_message_size","get_max_wait_time","get_message_overhead","get_request_section_size","get_response_section_size","into","","","","into_stream","namespace","new","next_result","set_max_message_size","set_max_wait_time","source","to_string","","try_from","","","","try_into","","","","type_id","","","","update","","vzip","","","","cookie","","","error_code","result"],"q":[[0,"honk_rpc"],[1,"honk_rpc::honk_rpc"],[100,"honk_rpc::honk_rpc::Response"],[105,"bson::document"],[106,"core::result"],[107,"std::io"],[108,"core::marker"],[109,"alloc::collections::vec_deque::drain"],[110,"core::option"],[111,"bson::bson"],[112,"core::fmt"],[113,"alloc::string"],[114,"core::time"],[115,"core::error"],[116,"core::any"]],"i":"``A`00B`1```Aj`22121102`1111`111112`012220f2310230002222Bd334421334`11```2134101011434213421342134012134ClCnD`01","f":"``````````````````````````````````````{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{{b{d{f{c}}}}{b{h}}{b{h}}jl}{{Ab{nA`}}}{AdAfAh}}{{{b{d{f{c}}}}}{{Al{Aj}}}{AdAfAh}}{{{b{d{f{c}}}}}{{An{Aj}}}{AdAfAh}}{{{b{B`}}{b{B`}}}Bb}{{b{b{c}}}Bb{}}00{{{b{dBd}}{b{h}}jl{An{n}}}{{An{{Ab{{An{Bf}}B`}}}}}}{{{b{B`}}{b{dBh}}}Bj}0{{{b{A`}}{b{dBh}}}Bj}0{cc{}}00{jB`}1{{{An{n}}{An{Bl}}{An{Bf}}}{{Ab{BnA`}}}}{{{b{{f{c}}}}}Bn{AdAfAh}}{{{b{{f{c}}}}}C`{AdAfAh}}{{}{{Ab{BnA`}}}}{{{An{n}}{An{Bl}}Bl{An{j}}{An{l}}}{{Ab{BnA`}}}}{{{An{Bf}}}{{Ab{BnA`}}}}{{}c{}}000{{{f{c}}}c{AdAfAh}}{{{b{Bd}}}{{b{h}}}}{c{{f{c}}}{AdAfAh}}{{{b{dBd}}}{{An{{Cb{n{Ab{{An{Bf}}B`}}}}}}}}{{{b{d{f{c}}}}j}{{Ab{CdA`}}}{AdAfAh}}{{{b{d{f{c}}}}C`}Cd{AdAfAh}}{{{b{A`}}}{{An{{b{Cf}}}}}}{bBl}0{c{{Ab{e}}}{}{}}000{{}{{Ab{c}}}{}}000{bCh}000{{{b{dBd}}}Cd}{{{b{d{f{c}}}}{An{{b{d{Cj{{b{dBd}}}}}}}}}{{Ab{CdA`}}}{AdAfAh}}{{}c{}}000`````","D":"Hj","p":[[1,"reference",null,null,1],[0,"mut"],[5,"Session",1],[1,"str"],[1,"i32"],[5,"Document",105],[8,"RequestCookie",1],[6,"Error",1],[6,"Result",106,null,1],[10,"Read",107],[10,"Write",107],[10,"Send",108],[6,"Response",1],[5,"Drain",109],[6,"Option",110,null,1],[6,"ErrorCode",1],[1,"bool"],[10,"ApiSet",1],[6,"Bson",111],[5,"Formatter",112],[8,"Result",112],[5,"String",113],[1,"usize"],[5,"Duration",114],[1,"tuple",null,null,1],[1,"unit"],[10,"Error",115],[5,"TypeId",116],[1,"slice"],[15,"Pending",100],[15,"Success",100],[15,"Error",100]],"r":[],"b":[[54,"impl-Debug-for-ErrorCode"],[55,"impl-Display-for-ErrorCode"],[56,"impl-Display-for-Error"],[57,"impl-Debug-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACQABwABAAAAJwAHADIAAwA3AAMAPgAAAFAADgBhAAMA","P":[[38,"T"],[46,"RW"],[49,""],[50,"K"],[53,""],[58,"T"],[61,""],[62,"T"],[63,""],[64,"RW"],[66,""],[69,"U"],[73,"RW"],[74,""],[75,"RW"],[76,""],[77,"RW"],[79,""],[82,"U,T"],[86,"U"],[90,""],[95,"RW"],[96,"V"]]}],["tor_interface",{"t":"CCCCCCCCCCPPPPFGPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPPPPGPNNNNNNNNNNNNNNNNNNNNPPPPFGPPGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOPPPPFGPPPFGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPGPPPFGPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOGFPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPGFPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPFGGPFPFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPSSSSSSSFFFGPPPGFSSFFSSSSSSPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPIPFGPPGFFPPFPPGGKPNNNNNMNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNOOOOO","n":["arti_client_tor_client","arti_process","arti_tor_client","censorship_circumvention","legacy_tor_client","legacy_tor_version","mock_tor_client","proxy","tor_crypto","tor_provider","ArtiClientConfigBuilderError","ArtiClientError","ArtiClientOnionServiceLaunchError","ArtiClientTorAddrError","ArtiClientTorClient","Error","NotImplemented","OnionServiceConfigBuilderError","TcpListenerAcceptFailed","TcpListenerBindFailed","TcpListenerLocalAddrFailed","TcpStreamConnectFailed","TcpStreamIntoFailed","TorKeyMgrError","add_client_auth","as_any","","as_any_mut","","bootstrap","borrow","","borrow_mut","","connect","fmt","","from","","generate_token","into","","into_any","","into_any_arc","","into_any_rc","","listener","new","release_token","remove_client_auth","report","source","to_string","try_from","","try_into","","try_into_slug","try_octets_into","","type_id","","update","vzip","","ArtiBinPathNotAbsolute","ArtiDataDirectoryCreationFailed","ArtiDataDirectoryPathExistsAsFile","ArtiDataDirectoryPathNotAbsolute","ArtiProcessStartFailed","ArtiProcessStdoutTakeFailed","ArtiStdoutReadThreadSpawnFailed","ArtiTomlFileCreationFailed","ArtiTomlFileWriteFailed","Error","NotImplemented","as_any","as_any_mut","borrow","borrow_mut","fmt","","from","into","into_any","into_any_arc","into_any_rc","report","source","to_string","try_from","try_into","try_into_slug","try_octets_into","type_id","vzip","ArtiNotBootstrapped","ArtiOpenStreamFailed","ArtiProcessCreationFailed","ArtiRpcConnectFailed","ArtiTorClient","ArtiTorClientConfig","BundledArti","CircuitTokenInvalid","Error","NotImplemented","SystemArti","__clone_box","add_client_auth","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","connect","fmt","","","from","","","generate_token","into","","","into_any","","","into_any_arc","","","into_any_rc","","","listener","new","release_token","remove_client_auth","report","source","to_owned","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","vzip","","","arti_bin_path","data_directory","AddressMissing","AddressParseFailed","AddressPortInvalid","BinaryPathInvalid","BridgeLine","BridgeLineError","FingerprintInvalid","FingerprintMissing","KeyValueInvalid","PluggableTransportConfig","PluggableTransportConfigError","TransportMissing","TransportNameInvalid","","__clone_box","","add_option","address","as_any","","","","as_any_mut","","","","as_legacy_tor_setconf_value","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fingerprint","fmt","","","","","","from","","","","from_str","into","","","","into_any","","","","into_any_arc","","","","into_any_rc","","","","keyvalues","new","","options","path_to_binary","report","","to_owned","","to_string","","transport","transports","try_from","","","","try_into","","","","try_into_slug","","try_octets_into","","","","type_id","","","","vzip","","","","AddOnionFailed","BridgeTransportNotSupported","BridgeTransportTypeMultiplyDefined","BundledTor","CircuitTokenInvalid","DelOnionFailed","Error","GetInfoNetListenersSocksFailed","GetInfoVersionFailed","LegacyControlStreamCreationFailed","LegacyTorClient","LegacyTorClientConfig","LegacyTorControllerCreationFailed","LegacyTorNotBootstrapped","LegacyTorProcessAuthenticationFailed","LegacyTorProcessCreationFailed","LegacyTorProcessTooOld","NoSocksListenersFound","NotImplemented","OnionClientAuthAddFailed","OnionClientAuthRemoveFailed","PluggableTransportBinaryNameNotUtf8Representnable","PluggableTransportConfigDirectoryCreationFailed","PluggableTransportConfigError","PluggableTransportDirectoryNameCollision","PluggableTransportSymlinkCreationFailed","PluggableTransportSymlinkRemovalFailed","SetConfDisableNetwork0Failed","SetConfFailed","SetEventsFailed","Socks5ConnectionFailed","SystemTor","TcpListenerBindFailed","TcpListenerLocalAddrFailed","WaitAsyncEventsFailed","__clone_box","add_client_auth","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","connect","fmt","","","from","","","generate_token","into","","","into_any","","","into_any_arc","","","into_any_rc","","","listener","new","release_token","remove_client_auth","report","source","to_owned","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","version","vzip","","","allowed_ports","bridge_lines","data_directory","pluggable_transports","proxy_settings","tor_bin_path","tor_control_addr","tor_control_passwd","tor_socks_addr","Error","LegacyTorVersion","ParseError","__clone_box","as_any","","as_any_mut","","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","eq","fmt","","from","","from_str","into","","into_any","","into_any_arc","","into_any_rc","","new","partial_cmp","report","to_owned","to_string","","try_from","","try_into","","try_into_slug","","try_octets_into","","type_id","","vzip","","ClientAlreadyBootstrapped","ClientNotBootstrapped","ConnectFailed","Error","MockTorClient","NotImplemented","OnionServiceAuthInvalid","OnionServiceNotFound","OnionServiceNotPublished","OnionServiceRequiresOnionAuth","TcpListenerBindFailed","TcpListenerLocalAddrFailed","add_client_auth","as_any","","as_any_mut","","bootstrap","borrow","","borrow_mut","","connect","default","drop","fmt","","from","","generate_token","into","","into_any","","into_any_arc","","into_any_rc","","listener","new","release_token","remove_client_auth","report","source","to_string","try_from","","try_into","","try_into_slug","try_octets_into","","type_id","","update","vzip","","Generic","Https","HttpsProxyConfig","ProxyConfig","ProxyConfigError","Socks4","Socks4ProxyConfig","Socks5","Socks5ProxyConfig","__clone_box","","","","as_any","","","","","as_any_mut","","","","","borrow","","","","","borrow_mut","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","fmt","","","","","","from","","","","","","","","into","","","","","into_any","","","","","into_any_arc","","","","","into_any_rc","","","","","new","","","report","to_owned","","","","to_string","try_from","","","","","try_into","","","","","try_into_slug","try_octets_into","","","","","type_id","","","","","vzip","","","","","ConversionError","ED25519_PRIVATE_KEYBLOB_BASE64_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_HEADER_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_SIZE","ED25519_PRIVATE_KEY_SIZE","ED25519_PUBLIC_KEY_SIZE","ED25519_SIGNATURE_SIZE","Ed25519PrivateKey","Ed25519PublicKey","Ed25519Signature","Error","KeyInvalid","One","ParseError","SignBit","V3OnionServiceId","V3_ONION_SERVICE_ID_STRING_LENGTH","V3_ONION_SERVICE_ID_STRING_SIZE","X25519PrivateKey","X25519PublicKey","X25519_PRIVATE_KEY_BASE64_LENGTH","X25519_PRIVATE_KEY_BASE64_SIZE","X25519_PRIVATE_KEY_SIZE","X25519_PUBLIC_KEY_BASE32_LENGTH","X25519_PUBLIC_KEY_BASE32_SIZE","X25519_PUBLIC_KEY_SIZE","Zero","__clone_box","","","","","","","as_any","","","","","","","","as_any_mut","","","","","","","","as_bytes","","","borrow","","","","","","","","borrow_mut","","","","","","","","clone","","","","","","","clone_into","","","","","","","clone_to_uninit","","","","","","","cmp","compare","eq","","","","","","equivalent","","","","","","fmt","","","","","","","","","from","","","","","","","","","from_base32","from_base64","from_key_blob","from_private_key","","","from_private_x25519","from_public_key","from_raw","","","","","from_service_id","from_string","generate","","hash","","into","","","","","","","","into_any","","","","","","","","into_any_arc","","","","","","","","into_any_rc","","","","","","","","is_valid","partial_cmp","report","sign_message","","to_base32","to_base64","to_bytes","","","to_key_blob","to_owned","","","","","","","to_string","","try_from","","","","","","","","try_into","","","","","","","","try_into_slug","","try_octets_into","","","","","","","","type_id","","","","","","","","verify","verify_x25519","vzip","","","","","","","","BootstrapComplete","BootstrapStatus","CircuitToken","Domain","DomainAddr","Error","Generic","LogReceived","OnionAddr","OnionAddrV3","OnionListener","OnionService","OnionServicePublished","OnionStream","ParseFailure","Socket","TargetAddr","TorEvent","TorProvider","V3","__clone_box","","","","accept","add_client_auth","as_any","","","","","","","","as_any_mut","","","","","","","","bootstrap","borrow","","","","","","","","borrow_mut","","","","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","cmp","","","compare","","","connect","deref","deref_mut","domain","drop","eq","","","equivalent","","","","","","","","","flush","fmt","","","","","","","","","","","","from","","","","","","","","","","","","","from_str","","","generate_token","hash","","","into","","","","","","","","into_any","","","","","","","","into_any_arc","","","","","","","into_any_rc","","","","","","","","listener","local_addr","new","partial_cmp","","","peer_addr","port","read","release_token","remove_client_auth","report","service_id","set_nonblocking","to_owned","","","","to_string","","","","","try_clone","try_from","","","","","","","","","try_into","","","","","","","","try_into_slug","","","","","try_octets_into","","","","","","","","type_id","","","","","","","","update","virt_port","vzip","","","","","","","","write","","line","progress","service_id","summary","tag"],"q":[[0,"tor_interface"],[10,"tor_interface::arti_client_tor_client"],[67,"tor_interface::arti_process"],[98,"tor_interface::arti_tor_client"],[172,"tor_interface::arti_tor_client::ArtiTorClientConfig"],[174,"tor_interface::censorship_circumvention"],[278,"tor_interface::legacy_tor_client"],[377,"tor_interface::legacy_tor_client::LegacyTorClientConfig"],[386,"tor_interface::legacy_tor_version"],[433,"tor_interface::mock_tor_client"],[490,"tor_interface::proxy"],[604,"tor_interface::tor_crypto"],[842,"tor_interface::tor_provider"],[1074,"tor_interface::tor_provider::TorEvent"],[1079,"core::result"],[1080,"core::any"],[1081,"core::option"],[1082,"core::fmt"],[1083,"alloc::boxed"],[1084,"alloc::sync"],[1085,"alloc::rc"],[1086,"tokio::runtime::runtime"],[1087,"std::path"],[1088,"tor_error::report"],[1089,"core::error"],[1090,"alloc::string"],[1091,"tor_persist::slug"],[1092,"alloc::vec"],[1093,"dyn_clone::sealed"],[1094,"core::net::socket_addr"],[1095,"core::cmp"],[1096,"core::hash"],[1097,"std::io::error"],[1098,"der::error"]],"i":"``````````Al000``00000000d010100101011010010101010000111010110101001Dh00000000`000000000000000000000Eb000``Dn1`100Dl0210210021021111022102100210210210210000221202102120210210021Il0El00Ej``111``101EdEf1012031203012031203101010012203312030120312031203120301011231023011203120323120312031203Fh00Ff11`111``111111111111111111101110Fd02102100210211110221021002102102102100002212021021202102100021In00000J`00``FnFj1010101000001110010101010001010101010101010Gf00``0000000Gd01010010100011010010101010000111010110101001H`Gn```0`0`GhGjGl342103421034210342103210321032103442103421033334210342103421034210321042103442103421034421034210342103Hj```````````0Hh1````````````0BhHbHfjBlh657432106574321064105743210657432106543210654321065432106005432101110005774321005743210661254105054321405210574321065743210657432106574321060075212532554321067057432106574321067057432106574321063357432106Dd0`Ad``n2```12`01```IdIb1If4C`I`1534267Aj264537801264537802645378045374537453745345310032453444555333066445533778026666645377805371453264537802645378064537802645378010445303011642453764537026453378026453780645372645378026453780142645378000JbJdJf11","f":"````````````````````````{{{f{bd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{{{f{bd}}}{{A`{ln}}}}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{bd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Al}}{f{bAn}}}B`}0{cc{}}0{{{f{bd}}}Af}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}0{{{f{bd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{{{Bd{Cb}}{f{Cd}}}{{A`{dAl}}}}{{{f{bd}}Af}l}{{{f{bd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Al}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0{fDb}0{{{f{bd}}}{{A`{{Df{Dd}}n}}}}{{}c{}}0```````````{f{{f{Ab}}}}{{{f{b}}}{{f{bAb}}}}{f{{f{c}}}{}}{{{f{b}}}{{f{bc}}}{}}{{{f{Dh}}{f{bAn}}}B`}0{cc{}}{{}c{}}{{{Bb{c}}}{{Bb{Ab}}}{}}{{{Bd{c}}}{{Bd{Ab}}}{}}{{{Bf{c}}}{{Bf{Ab}}}{}}{f{{Ch{Cf}}}}{{{f{Dh}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}{{}{{A`{c}}}{}}{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}{fDb}{{}c{}}```````````{{fDj}l}{{{f{bDl}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}00{{{f{b}}}{{f{bAb}}}}00{{{f{bDl}}}{{A`{ln}}}}{f{{f{c}}}{}}00{{{f{b}}}{{f{bc}}}{}}00{{{f{Dn}}}Dn}{{f{f{bc}}}l{}}{{fE`}l}{{{f{bDl}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Eb}}{f{bAn}}}B`}0{{{f{Dn}}{f{bAn}}}B`}{cc{}}00{{{f{bDl}}}Af}{{}c{}}00{{{Bb{c}}}{{Bb{Ab}}}{}}00{{{Bd{c}}}{{Bd{Ab}}}{}}00{{{Bf{c}}}{{Bf{Ab}}}{}}00{{{f{bDl}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{Dn{{A`{Dln}}}}{{{f{bDl}}Af}l}{{{f{bDl}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Eb}}}{{Ah{{f{Cj}}}}}}{fc{}}{fCl}{c{{A`{e}}}{}{}}00{{}{{A`{c}}}{}}00{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}00{fDb}00{{{f{bDl}}}{{A`{{Df{Dd}}n}}}}{{}c{}}00````````````````{{fDj}l}0{{{f{bEd}}Cl}l}{{{f{Ef}}}{{f{Eh}}}}{f{{f{Ab}}}}000{{{f{b}}}{{f{bAb}}}}000{{{f{Ef}}}Cl}{f{{f{c}}}{}}000{{{f{b}}}{{f{bc}}}{}}000{{{f{Ed}}}Ed}{{{f{Ef}}}Ef}{{f{f{bc}}}l{}}0{{fE`}l}0{{{f{Ef}}}{{f{Cl}}}}{{{f{Ed}}{f{bAn}}}B`}{{{f{Ej}}{f{bAn}}}B`}0{{{f{Ef}}{f{bAn}}}B`}{{{f{El}}{f{bAn}}}B`}0{cc{}}000{{{f{En}}}{{A`{Efc}}}{}}{{}c{}}000{{{Bb{c}}}{{Bb{Ab}}}{}}000{{{Bd{c}}}{{Bd{Ab}}}{}}000{{{Bf{c}}}{{Bf{Ab}}}{}}000{{{f{Ef}}}{{f{{Df{{F`{ClCl}}}}}}}}{{{Df{Cl}}Fb}{{A`{EdEj}}}}{{ClEhCl{Df{{F`{ClCl}}}}}{{A`{EfEl}}}}{{{f{Ed}}}{{f{{Df{Cl}}}}}}{{{f{Ed}}}{{f{Fb}}}}{f{{Ch{Cf}}}}0{fc{}}0{fCl}0{{{f{Ef}}}{{f{Cl}}}}5{c{{A`{e}}}{}{}}000{{}{{A`{c}}}{}}000{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}000{fDb}000{{}c{}}000```````````````````````````````````{{fDj}l}{{{f{bFd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}00{{{f{b}}}{{f{bAb}}}}00{{{f{bFd}}}{{A`{ln}}}}{f{{f{c}}}{}}00{{{f{b}}}{{f{bc}}}{}}00{{{f{Ff}}}Ff}{{f{f{bc}}}l{}}{{fE`}l}{{{f{bFd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Fh}}{f{bAn}}}B`}0{{{f{Ff}}{f{bAn}}}B`}{cc{}}00{{{f{bFd}}}Af}{{}c{}}00{{{Bb{c}}}{{Bb{Ab}}}{}}00{{{Bd{c}}}{{Bd{Ab}}}{}}00{{{Bf{c}}}{{Bf{Ab}}}{}}00{{{f{bFd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{Ff{{A`{FdFh}}}}{{{f{bFd}}Af}l}{{{f{bFd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Fh}}}{{Ah{{f{Cj}}}}}}{fc{}}{fCl}{c{{A`{e}}}{}{}}00{{}{{A`{c}}}{}}00{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}00{fDb}00{{{f{bFd}}}{{A`{{Df{Dd}}n}}}}{{{f{bFd}}}Fj}{{}c{}}00````````````{{fDj}l}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{Fj}}}Fj}{{f{f{bc}}}l{}}{{fE`}l}{{{f{Fj}}{f{Fj}}}Fl}{{{f{Fn}}{f{bAn}}}B`}0{cc{}}0{{{f{En}}}{{A`{Fjc}}}{}}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}0{{G`G`G`{Ah{G`}}{Ah{{f{En}}}}}{{A`{FjFn}}}}{{{f{Fj}}{f{Fj}}}{{Ah{Gb}}}}{f{{Ch{Cf}}}}{fc{}}{fCl}{{{f{Fj}}}Cl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}0{fDb}0{{}c{}}0````````````{{{f{bGd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{{{f{bGd}}}{{A`{ln}}}}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{bGd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{}Gd}{{{f{bGd}}}l}{{{f{Gf}}{f{bAn}}}B`}0{cc{}}0{{{f{bGd}}}Af}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}0{{{f{bGd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}9{{{f{bGd}}Af}l}{{{f{bGd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Gf}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0{fDb}0{{{f{bGd}}}{{A`{{Df{Dd}}n}}}}{{}c{}}0`````````{{fDj}l}000{f{{f{Ab}}}}0000{{{f{b}}}{{f{bAb}}}}0000{f{{f{c}}}{}}0000{{{f{b}}}{{f{bc}}}{}}0000{{{f{Gh}}}Gh}{{{f{Gj}}}Gj}{{{f{Gl}}}Gl}{{{f{Gn}}}Gn}{{f{f{bc}}}l{}}000{{fE`}l}000{{{f{H`}}{f{bAn}}}B`}0{{{f{Gh}}{f{bAn}}}B`}{{{f{Gj}}{f{bAn}}}B`}{{{f{Gl}}{f{bAn}}}B`}{{{f{Gn}}{f{bAn}}}B`}{cc{}}000{GhGn}{GjGn}2{GlGn}{{}c{}}0000{{{Bb{c}}}{{Bb{Ab}}}{}}0000{{{Bd{c}}}{{Bd{Ab}}}{}}0000{{{Bf{c}}}{{Bf{Ab}}}{}}0000{Ad{{A`{GhH`}}}}{{Ad{Ah{Cl}}{Ah{Cl}}}{{A`{GjH`}}}}{{Ad{Ah{Cl}}{Ah{Cl}}}{{A`{GlH`}}}}{f{{Ch{Cf}}}}{fc{}}000{fCl}{c{{A`{e}}}{}{}}0000{{}{{A`{c}}}{}}0000{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0000{fDb}0000{{}c{}}0000````````````````````````````{{fDj}l}000000{f{{f{Ab}}}}0000000{{{f{b}}}{{f{bAb}}}}0000000{{{f{Hb}}}{{f{{Hd{E`}}}}}}{{{f{Bl}}}{{f{{Hd{E`}}}}}}{{{f{h}}}{{f{{Hd{E`}}}}}}{f{{f{c}}}{}}0000000{{{f{b}}}{{f{bc}}}{}}0000000{{{f{Bh}}}Bh}{{{f{Hb}}}Hb}{{{f{Hf}}}Hf}{{{f{j}}}j}{{{f{Bl}}}Bl}{{{f{h}}}h}{{{f{Hh}}}Hh}{{f{f{bc}}}l{}}000000{{fE`}l}000000{{{f{h}}{f{h}}}Gb}{{f{f{c}}}Gb{}}{{{f{Bh}}{f{Bh}}}Fl}{{{f{Hb}}{f{Hb}}}Fl}{{{f{Hf}}{f{Hf}}}Fl}{{{f{j}}{f{j}}}Fl}{{{f{Bl}}{f{Bl}}}Fl}{{{f{h}}{f{h}}}Fl}{{f{f{c}}}Fl{}}00000{{{f{Bh}}{f{bAn}}}B`}{{{f{Hj}}{f{bAn}}}B`}0{{{f{Hb}}{f{bAn}}}B`}{{{f{Hf}}{f{bAn}}}B`}{{{f{j}}{f{bAn}}}B`}{{{f{Bl}}{f{bAn}}}B`}{{{f{h}}{f{bAn}}}B`}0{cc{}}0000000{FlHh}{{{f{En}}}{{A`{BlHj}}}}{{{f{En}}}{{A`{jHj}}}}{{{f{En}}}{{A`{BhHj}}}}{{{f{Bh}}}Hb}{{{f{j}}}Bl}{{{f{Bh}}}h}{{{f{j}}}{{A`{{F`{BhHh}}Hj}}}}{{{f{Hb}}}h}{{{f{{Hd{E`}}}}}{{A`{BhHj}}}}{{{f{{Hd{E`}}}}}{{A`{HbHj}}}}{{{f{{Hd{E`}}}}}{{A`{HfHj}}}}{{{f{{Hd{E`}}}}}{{A`{jHj}}}}{{{f{{Hd{E`}}}}}Bl}{{{f{h}}}{{A`{HbHj}}}}{{{f{En}}}{{A`{hHj}}}}{{}Bh}{{}j}{{{f{Bl}}{f{bc}}}lHl}{{{f{h}}{f{bc}}}lHl}{{}c{}}0000000{{{Bb{c}}}{{Bb{Ab}}}{}}0000000{{{Bd{c}}}{{Bd{Ab}}}{}}0000000{{{Bf{c}}}{{Bf{Ab}}}{}}0000000{{{f{En}}}Fl}{{{f{h}}{f{h}}}{{Ah{Gb}}}}{f{{Ch{Cf}}}}{{{f{Bh}}{f{{Bn{E`}}}}}Hf}{{{f{j}}{f{{Bn{E`}}}}}{{A`{{F`{HfHh}}Hj}}}}{{{f{Bl}}}Cl}{{{f{j}}}Cl}{{{f{Bh}}}{{Hd{E`}}}}{{{f{Hf}}}{{Hd{E`}}}}{{{f{j}}}{{Hd{E`}}}}{{{f{Bh}}}Cl}{fc{}}000000{fCl}0{c{{A`{e}}}{}{}}0000000{{}{{A`{c}}}{}}0000000{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}0000000{fDb}0000000{{{f{Hf}}{f{{Bn{E`}}}}{f{Hb}}}Fl}{{{f{Hf}}{f{{Bn{E`}}}}{f{Bl}}Hh}Fl}{{}c{}}0000000````````````````````{{fDj}l}000{{{f{C`}}}{{A`{{Ah{Aj}}Hn}}}}{{{f{bI`}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0000000{{{f{b}}}{{f{bAb}}}}0000000{{{f{bI`}}}{{A`{ln}}}}{f{{f{c}}}{}}0000000{{{f{b}}}{{f{bc}}}{}}0000000{{{f{Ib}}}Ib}{{{f{Id}}}Id}{{{f{If}}}If}{{{f{Ad}}}Ad}{{f{f{bc}}}l{}}000{{fE`}l}000{{{f{Ib}}{f{Ib}}}Gb}{{{f{Id}}{f{Id}}}Gb}{{{f{If}}{f{If}}}Gb}{{f{f{c}}}Gb{}}00{{{f{bI`}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Aj}}}{{f{c}}}{}}{{{f{bAj}}}{{f{bc}}}{}}{{{f{If}}}{{f{En}}}}{{{f{bC`}}}l}{{{f{Ib}}{f{Ib}}}Fl}{{{f{Id}}{f{Id}}}Fl}{{{f{If}}{f{If}}}Fl}{{f{f{c}}}Fl{}}00000000{{{f{bAj}}}{{A`{lHn}}}}{{{f{n}}{f{bAn}}}B`}0{{{f{Ib}}{f{bAn}}}B`}0{{{f{Id}}{f{bAn}}}B`}0{{{f{If}}{f{bAn}}}B`}0{{{f{Ad}}{f{bAn}}}B`}0{{{f{Dd}}{f{bAn}}}B`}{{{f{Aj}}{f{bAn}}}B`}{cc{}}{Ebn}{Aln}{Fhn}{Gfn}44444{{{F`{hBj}}}Ad}55{{{f{En}}}{{A`{Idc}}}{}}{{{f{En}}}{{A`{Ifc}}}{}}{{{f{En}}}{{A`{Adc}}}{}}{{{f{bI`}}}Af}{{{f{Ib}}{f{bc}}}lHl}{{{f{Id}}{f{bc}}}lHl}{{{f{If}}{f{bc}}}lHl}{{}c{}}0000000{{{Bb{c}}}{{Bb{Ab}}}{}}0000000{{{Bd{c}}}{{Bd{Ab}}}{}}000000{{{Bf{c}}}{{Bf{Ab}}}{}}0000000{{{f{bI`}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{{{f{Aj}}}{{Ah{Id}}}}{{hBj}Ib}{{{f{Ib}}{f{Ib}}}{{Ah{Gb}}}}{{{f{Id}}{f{Id}}}{{Ah{Gb}}}}{{{f{If}}{f{If}}}{{Ah{Gb}}}}{{{f{Aj}}}{{Ah{Ad}}}}{{{f{If}}}Bj}{{{f{bAj}}{f{b{Bn{E`}}}}}{{A`{IhHn}}}}{{{f{bI`}}Af}l}{{{f{bI`}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Ib}}}{{f{h}}}}{{{f{C`}}Fl}{{A`{lHn}}}}{fc{}}000{fCl}0000{{{f{Aj}}}{{A`{AjHn}}}}{c{{A`{e}}}{}{}}0000{{{F`{ClBj}}}{{A`{Ifc}}}{}}111{{}{{A`{c}}}{}}0000000{f{{A`{CnD`}}}}0000{{}{{A`{c}}}{}}0000000{fDb}0000000{{{f{bI`}}}{{A`{{Df{Dd}}n}}}}{{{f{Ib}}}Bj}{{}c{}}0000000{{{f{b}}{f{{Bn{E`}}}}}{{A`{lIj}}}}{{{f{bAj}}{f{{Bn{E`}}}}}{{A`{IhHn}}}}`````","D":"AMh","p":[[0,"mut"],[5,"ArtiClientTorClient",10],[1,"reference",null,null,1],[5,"V3OnionServiceId",604],[5,"X25519PrivateKey",604],[1,"unit"],[6,"Error",842],[6,"Result",1079,null,1],[10,"Any",1080],[6,"TargetAddr",842],[8,"CircuitToken",842],[6,"Option",1081,null,1],[5,"OnionStream",842],[6,"Error",10],[5,"Formatter",1082],[8,"Result",1082],[5,"Box",1083,null,1],[5,"Arc",1084,null,1],[5,"Rc",1085,null,1],[5,"Ed25519PrivateKey",604],[1,"u16"],[5,"X25519PublicKey",604],[1,"slice"],[5,"OnionListener",842],[5,"Runtime",1086],[5,"Path",1087],[5,"ReportHelper",1088],[5,"Report",1088],[10,"Error",1089],[5,"String",1090],[5,"Slug",1091],[6,"BadSlug",1091],[5,"TypeId",1080],[6,"TorEvent",842],[5,"Vec",1092],[6,"Error",67],[5,"Private",1093],[5,"ArtiTorClient",98],[6,"ArtiTorClientConfig",98],[1,"u8"],[6,"Error",98],[5,"PluggableTransportConfig",174],[5,"BridgeLine",174],[6,"SocketAddr",1094],[6,"PluggableTransportConfigError",174],[6,"BridgeLineError",174],[1,"str"],[1,"tuple",null,null,1],[5,"PathBuf",1087],[5,"LegacyTorClient",278],[6,"LegacyTorClientConfig",278],[6,"Error",278],[5,"LegacyTorVersion",386],[1,"bool"],[6,"Error",386],[1,"u32"],[6,"Ordering",1095],[5,"MockTorClient",433],[6,"Error",433],[5,"Socks4ProxyConfig",490],[5,"Socks5ProxyConfig",490],[5,"HttpsProxyConfig",490],[6,"ProxyConfig",490],[6,"ProxyConfigError",490],[5,"Ed25519PublicKey",604],[1,"array"],[5,"Ed25519Signature",604],[6,"SignBit",604],[6,"Error",604],[10,"Hasher",1096],[5,"Error",1097],[10,"TorProvider",842],[5,"OnionAddrV3",842],[6,"OnionAddr",842],[5,"DomainAddr",842],[1,"usize"],[5,"Error",1098],[15,"BundledArti",172],[15,"BundledTor",377],[15,"SystemTor",377],[15,"LogReceived",1074],[15,"BootstrapStatus",1074],[15,"OnionServicePublished",1074]],"r":[],"b":[[35,"impl-Debug-for-Error"],[36,"impl-Display-for-Error"],[82,"impl-Display-for-Error"],[83,"impl-Debug-for-Error"],[128,"impl-Display-for-Error"],[129,"impl-Debug-for-Error"],[217,"impl-Debug-for-PluggableTransportConfigError"],[218,"impl-Display-for-PluggableTransportConfigError"],[220,"impl-Display-for-BridgeLineError"],[221,"impl-Debug-for-BridgeLineError"],[332,"impl-Debug-for-Error"],[333,"impl-Display-for-Error"],[402,"impl-Display-for-Error"],[403,"impl-Debug-for-Error"],[458,"impl-Display-for-Error"],[459,"impl-Debug-for-Error"],[535,"impl-Debug-for-ProxyConfigError"],[536,"impl-Display-for-ProxyConfigError"],[545,"impl-From%3CSocks4ProxyConfig%3E-for-ProxyConfig"],[546,"impl-From%3CSocks5ProxyConfig%3E-for-ProxyConfig"],[548,"impl-From%3CHttpsProxyConfig%3E-for-ProxyConfig"],[710,"impl-Debug-for-Error"],[711,"impl-Display-for-Error"],[716,"impl-Debug-for-V3OnionServiceId"],[717,"impl-Display-for-V3OnionServiceId"],[937,"impl-Display-for-Error"],[938,"impl-Debug-for-Error"],[939,"impl-Debug-for-OnionAddrV3"],[940,"impl-Display-for-OnionAddrV3"],[941,"impl-Debug-for-OnionAddr"],[942,"impl-Display-for-OnionAddr"],[943,"impl-Display-for-DomainAddr"],[944,"impl-Debug-for-DomainAddr"],[945,"impl-Display-for-TargetAddr"],[946,"impl-Debug-for-TargetAddr"],[950,"impl-From%3CError%3E-for-Error"],[951,"impl-From%3CError%3E-for-Error"],[952,"impl-From%3CError%3E-for-Error"],[953,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAEsDPgACAAAACwADABEAFAAoAAAAKwAGADMAIQBXABMAbAAXAIcAAACLACMAvQABAMEABwDKAA0A2QAFAOMAAADoAAsA+QAFAAEBGwAeAQIAIgEtAFMBAABXAQkAYgETAHcBCwCFAQ8AlwEAAJoBBQChARMAtwEVAM8BAADSAQYA2gEQAPQBKQAiAgEAJQIAACsCDgA9Ah8AagIAAHgCFwCTAjsA1wIAAOkCAQDzAhcADAMBABYDKgBDAwcAXgMEAGUDDwB2AyEAmQMBAJwDGQC3AwMAwAMAAMMDAgDHAwIA0gMWAOwDAgDxAwAA9AMAAPcDCAABBCUAKQQJAA==","P":[[30,"T"],[34,""],[37,"T"],[39,""],[40,"U"],[42,"T"],[48,""],[55,"U,T"],[57,"U"],[59,""],[60,"Target"],[62,""],[65,"V"],[78,""],[80,"T"],[82,""],[84,"T"],[85,"U"],[86,"T"],[89,""],[92,"U,T"],[93,"U"],[94,""],[95,"Target"],[96,""],[97,"V"],[109,""],[118,"T"],[124,""],[125,"T"],[126,""],[131,"T"],[134,""],[135,"U"],[138,"T"],[147,""],[153,"T"],[154,""],[155,"U,T"],[158,"U"],[161,""],[162,"Target"],[165,""],[169,"V"],[188,""],[201,"T"],[209,""],[211,"T"],[213,""],[222,"T"],[226,"FromStr::Err"],[227,"U"],[231,"T"],[243,""],[250,"T"],[252,""],[256,"U,T"],[260,"U"],[264,""],[266,"Target"],[270,""],[274,"V"],[313,""],[322,"T"],[328,""],[329,"T"],[330,""],[335,"T"],[338,""],[339,"U"],[342,"T"],[351,""],[357,"T"],[358,""],[359,"U,T"],[362,"U"],[365,""],[366,"Target"],[369,""],[374,"V"],[389,""],[394,"T"],[398,""],[399,"T"],[400,""],[404,"T"],[406,"FromStr::Err"],[407,"U"],[409,"T"],[415,""],[418,"T"],[419,""],[421,"U,T"],[423,"U"],[425,""],[427,"Target"],[429,""],[431,"V"],[445,""],[451,"T"],[455,""],[460,"T"],[462,""],[463,"U"],[465,"T"],[471,""],[478,"U,T"],[480,"U"],[482,""],[483,"Target"],[485,""],[488,"V"],[499,""],[513,"T"],[523,""],[527,"T"],[531,""],[541,"T"],[545,""],[547,"T"],[548,""],[549,"U"],[554,"T"],[569,""],[573,"T"],[577,""],[578,"U,T"],[583,"U"],[588,""],[589,"Target"],[594,""],[599,"V"],[632,""],[658,"T"],[674,""],[681,"T"],[688,""],[696,"K"],[697,""],[703,"K"],[709,""],[718,"T"],[726,""],[744,"__H"],[746,"U"],[754,"T"],[778,""],[789,"T"],[796,""],[798,"U,T"],[806,"U"],[814,""],[816,"Target"],[824,""],[834,"V"],[862,""],[885,"T"],[901,""],[905,"T"],[909,""],[916,"K"],[919,""],[920,"Deref::Target"],[922,""],[927,"K"],[936,""],[949,"T"],[950,""],[954,"T"],[959,""],[960,"T"],[962,"FromStr::Err"],[965,""],[966,"__H"],[969,"U"],[977,"T"],[1000,""],[1014,"T"],[1018,""],[1024,"U,T"],[1029,"TryFrom::Error"],[1030,"U,T"],[1033,"U"],[1041,""],[1046,"Target"],[1054,""],[1064,"V"],[1072,""]]}]]'));
+var searchIndex = new Map(JSON.parse('[["gosling",{"t":"CFGPPPPPPPPPPGIPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","n":["context","Context","ContextEvent","EndpointClientError","EndpointClientHandshakeCompleted","EndpointClientHandshakeFailed","EndpointServerChannelRequestReceived","EndpointServerError","EndpointServerHandshakeCompleted","EndpointServerHandshakeFailed","EndpointServerHandshakeRejected","EndpointServerHandshakeStarted","EndpointServerPublished","Error","HandshakeHandle","HandshakeHandleNotFound","HonkRpc","IdentityClientChallengeReceived","IdentityClientError","IdentityClientHandshakeCompleted","IdentityClientHandshakeFailed","IdentityServerChallengeResponseReceived","IdentityServerEndpointRequestReceived","IdentityServerError","IdentityServerHandshakeCompleted","IdentityServerHandshakeFailed","IdentityServerHandshakeRejected","IdentityServerHandshakeStarted","IdentityServerPublished","IncorrectUsage","InvalidArgument","Io","TorBootstrapCompleted","TorBootstrapStatusReceived","TorCrypto","TorLogReceived","TorNotConnected","TorProvider","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","connect","endpoint_client_abort_handshake","endpoint_client_begin_handshake","endpoint_server_handle_channel_request_received","endpoint_server_start","endpoint_server_stop","fmt","","","from","","","","","","","generate_circuit_token","identity_client_abort_handshake","identity_client_begin_handshake","identity_client_handle_challenge_received","identity_server_handle_challenge_response_received","identity_server_handle_endpoint_request_received","identity_server_start","identity_server_stop","into","","","into_any","","","into_any_arc","","into_any_rc","","","into_any_send","","","into_any_sync","","new","release_circuit_token","report","source","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","vzip","","","challenge_response","challenge_response_valid","channel_name","","client_allowed","","client_auth_private_key","client_auth_public_key","client_auth_signature_valid","client_proof_signature_valid","","client_requested_channel_valid","client_requested_endpoint_valid","client_service_id","","","","endpoint_challenge","endpoint_name","","","endpoint_private_key","endpoint_service_id","","","","handle","","","","","","","","","","","","","","","","identity_service_id","line","progress","reason","","","","requested_channel","requested_endpoint","stream","","summary","tag"],"q":[[0,"gosling"],[1,"gosling::context"],[113,"gosling::context::ContextEvent"],[168,"core::any"],[169,"core::result"],[170,"tor_interface::tor_provider"],[171,"core::option"],[172,"tor_interface::tor_crypto"],[173,"alloc::string"],[174,"core::fmt"],[175,"honk_rpc::honk_rpc"],[176,"std::io::error"],[177,"bson::document"],[178,"alloc::boxed"],[179,"alloc::sync"],[180,"alloc::rc"],[181,"core::time"],[182,"tor_error::report"],[183,"core::error"],[184,"tor_persist::slug"],[185,"alloc::collections::vec_deque"]],"i":"```lBj00100000``11010000100000111001011h21021002102100000022102222210000000002102121021021210022202102120210210021EbEdEfEh2EjElEn55225F`1Fb5Fd43Ff4580715FhFj5<6;Fl;FnG`7<;Gb;GdGf7542:;EfEh22","f":"``````````````````````````````````````{b{{b{d}}}}00{{{b{f}}}{{b{fd}}}}00{{{b{fh}}}{{n{jl}}}}{b{{b{c}}}{}}00{{{b{f}}}{{b{fc}}}{}}00{{{b{fh}}A`{Ad{Ab}}}{{n{Afl}}}}{{{b{fh}}Ah}{{n{jl}}}}{{{b{fh}}AjAlAn}{{n{Ahl}}}}{{{b{fh}}AhB`}{{n{jl}}}}{{{b{fh}}BbAnAjBd}{{n{jl}}}}{{{b{fh}}Aj}{{n{jl}}}}{{{b{l}}{b{fBf}}}Bh}0{{{b{Bj}}{b{fBf}}}Bh}{cc{}}{Bll}{Bnl}{C`l}{Cbl}44{{{b{fh}}}Ab}<{{{b{fh}}AjAn}{{n{Ahl}}}}{{{b{fh}}AhCd}{{n{jl}}}}<{{{b{fh}}AhB`B`Cd}{{n{jl}}}}{{{b{fh}}}{{n{jl}}}}0{{}c{}}00{{{Cf{c}}}{{Cf{d}}}{}}00{{{Ch{c}}}{{Ch{d}}}{}}0{{{Cj{c}}}{{Cj{d}}}{}}0022222{{{Cf{Cl}}CnCnD`Db{Ad{D`}}Bb}{{n{hl}}}}{{{b{fh}}Ab}j}{b{{Df{Dd}}}}{{{b{l}}}{{Ad{{b{Dh}}}}}}{bAn}{c{{n{e}}}{}{}}00{{}{{n{c}}}{}}00{b{{n{DjDl}}}}{{}{{n{c}}}{}}00{bDn}00{{{b{fh}}}{{n{{E`{Bj}}l}}}}{{}c{}}00```````````````````````````````````````````````````````","D":"Nl","p":[[1,"reference",null,null,1],[10,"Any",168],[0,"mut"],[5,"Context",1],[1,"unit"],[6,"Error",1],[6,"Result",169,null,1],[6,"TargetAddr",170],[8,"CircuitToken",170],[6,"Option",171,null,1],[5,"OnionStream",170],[8,"HandshakeHandle",1],[5,"V3OnionServiceId",172],[5,"X25519PrivateKey",172],[5,"String",173],[1,"bool"],[5,"Ed25519PrivateKey",172],[5,"X25519PublicKey",172],[5,"Formatter",174],[8,"Result",174],[6,"ContextEvent",1],[6,"Error",170],[6,"Error",172],[6,"Error",175],[5,"Error",176],[5,"Document",177],[5,"Box",178,null,1],[5,"Arc",179,null,1],[5,"Rc",180,null,1],[10,"TorProvider",170],[1,"u16"],[5,"Duration",181],[1,"i32"],[5,"ReportHelper",182],[5,"Report",182],[10,"Error",183],[5,"Slug",184],[6,"BadSlug",184],[5,"TypeId",168],[5,"VecDeque",185],[15,"IdentityServerChallengeResponseReceived",113],[15,"IdentityServerHandshakeRejected",113],[15,"EndpointClientHandshakeCompleted",113],[15,"EndpointServerHandshakeCompleted",113],[15,"EndpointServerHandshakeRejected",113],[15,"IdentityClientHandshakeCompleted",113],[15,"IdentityServerHandshakeCompleted",113],[15,"IdentityServerEndpointRequestReceived",113],[15,"EndpointServerChannelRequestReceived",113],[15,"IdentityClientChallengeReceived",113],[15,"EndpointServerPublished",113],[15,"IdentityClientHandshakeFailed",113],[15,"IdentityServerHandshakeStarted",113],[15,"IdentityServerHandshakeFailed",113],[15,"EndpointClientHandshakeFailed",113],[15,"EndpointServerHandshakeStarted",113],[15,"EndpointServerHandshakeFailed",113],[15,"TorLogReceived",113],[15,"TorBootstrapStatusReceived",113]],"r":[],"b":[[57,"impl-Display-for-Error"],[58,"impl-Debug-for-Error"],[61,"impl-From%3CError%3E-for-Error"],[62,"impl-From%3CError%3E-for-Error"],[63,"impl-From%3CError%3E-for-Error"],[64,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADIABwAnAAUALgAFADoAAgA+AAMATwAMAF4ADwBvAAIA","P":[[45,"T"],[51,""],[60,"T"],[61,""],[65,"T"],[67,""],[75,"U"],[78,"T"],[91,""],[96,"U,T"],[99,"U"],[102,""],[103,"Target"],[106,""],[110,"V"]]}],["honk_rpc",{"t":"CKPPPPPSSGPGPPPPPPPPIPPPPGPPPPPPFPPPPPNNNNNNNNNNNNNNNMNNNNNNNNNHNNHHHNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNOOOOO","n":["honk_rpc","ApiSet","BsonDocumentParseFailed","BsonDocumentSizeTooLarge","BsonDocumentSizeTooSmall","BsonParseFailed","BsonWriteFailed","DEFAULT_MAX_MESSAGE_SIZE","DEFAULT_MAX_WAIT_TIME","Error","","ErrorCode","InvalidMaxMesageSize","MessageConversionFailed","MessageParseFailed","MessageReadTimedOut","MessageTooBig","MessageVersionIncompatible","Pending","ReaderReadFailed","RequestCookie","RequestCookieInvalid","RequestFunctionInvalid","RequestNamespaceInvalid","RequestVersionInvalid","Response","ResponseCookieInvalid","ResponseStateInvalid","Runtime","SectionIdUnknown","SectionParseFailed","SectionTooLarge","Session","Success","Unknown","UnknownErrorSectionReceived","WriterFlushFailed","WriterWriteFailed","borrow","","","","borrow_mut","","","","client_call","client_drain_responses","client_next_response","eq","equivalent","","","exec_function","fmt","","","","from","","","","","get_error_section_size","get_max_message_size","get_max_wait_time","get_message_overhead","get_request_section_size","get_response_section_size","into","","","","into_stream","namespace","new","next_result","set_max_message_size","set_max_wait_time","source","to_string","","try_from","","","","try_into","","","","type_id","","","","update","","vzip","","","","cookie","","","error_code","result"],"q":[[0,"honk_rpc"],[1,"honk_rpc::honk_rpc"],[100,"honk_rpc::honk_rpc::Response"],[105,"bson::document"],[106,"core::result"],[107,"std::io"],[108,"core::marker"],[109,"alloc::collections::vec_deque::drain"],[110,"core::option"],[111,"bson::bson"],[112,"core::fmt"],[113,"alloc::string"],[114,"core::time"],[115,"core::error"],[116,"core::any"]],"i":"``A`00B`1```Aj`22121102`1111`111112`012220f2310230002222Bd334421334`11```2134101011434213421342134012134ClCnD`01","f":"``````````````````````````````````````{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{{b{d{f{c}}}}{b{h}}{b{h}}jl}{{Ab{nA`}}}{AdAfAh}}{{{b{d{f{c}}}}}{{Al{Aj}}}{AdAfAh}}{{{b{d{f{c}}}}}{{An{Aj}}}{AdAfAh}}{{{b{B`}}{b{B`}}}Bb}{{b{b{c}}}Bb{}}00{{{b{dBd}}{b{h}}jl{An{n}}}{{An{{Ab{{An{Bf}}B`}}}}}}{{{b{B`}}{b{dBh}}}Bj}0{{{b{A`}}{b{dBh}}}Bj}0{cc{}}00{jB`}1{{{An{n}}{An{Bl}}{An{Bf}}}{{Ab{BnA`}}}}{{{b{{f{c}}}}}Bn{AdAfAh}}{{{b{{f{c}}}}}C`{AdAfAh}}{{}{{Ab{BnA`}}}}{{{An{n}}{An{Bl}}Bl{An{j}}{An{l}}}{{Ab{BnA`}}}}{{{An{Bf}}}{{Ab{BnA`}}}}{{}c{}}000{{{f{c}}}c{AdAfAh}}{{{b{Bd}}}{{b{h}}}}{c{{f{c}}}{AdAfAh}}{{{b{dBd}}}{{An{{Cb{n{Ab{{An{Bf}}B`}}}}}}}}{{{b{d{f{c}}}}j}{{Ab{CdA`}}}{AdAfAh}}{{{b{d{f{c}}}}C`}Cd{AdAfAh}}{{{b{A`}}}{{An{{b{Cf}}}}}}{bBl}0{c{{Ab{e}}}{}{}}000{{}{{Ab{c}}}{}}000{bCh}000{{{b{dBd}}}Cd}{{{b{d{f{c}}}}{An{{b{d{Cj{{b{dBd}}}}}}}}}{{Ab{CdA`}}}{AdAfAh}}{{}c{}}000`````","D":"Hj","p":[[1,"reference",null,null,1],[0,"mut"],[5,"Session",1],[1,"str"],[1,"i32"],[5,"Document",105],[8,"RequestCookie",1],[6,"Error",1],[6,"Result",106,null,1],[10,"Read",107],[10,"Write",107],[10,"Send",108],[6,"Response",1],[5,"Drain",109],[6,"Option",110,null,1],[6,"ErrorCode",1],[1,"bool"],[10,"ApiSet",1],[6,"Bson",111],[5,"Formatter",112],[8,"Result",112],[5,"String",113],[1,"usize"],[5,"Duration",114],[1,"tuple",null,null,1],[1,"unit"],[10,"Error",115],[5,"TypeId",116],[1,"slice"],[15,"Pending",100],[15,"Success",100],[15,"Error",100]],"r":[],"b":[[54,"impl-Debug-for-ErrorCode"],[55,"impl-Display-for-ErrorCode"],[56,"impl-Display-for-Error"],[57,"impl-Debug-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACQABwABAAAAJwAHADIAAwA3AAMAPgAAAFAADgBhAAMA","P":[[38,"T"],[46,"RW"],[49,""],[50,"K"],[53,""],[58,"T"],[61,""],[62,"T"],[63,""],[64,"RW"],[66,""],[69,"U"],[73,"RW"],[74,""],[75,"RW"],[76,""],[77,"RW"],[79,""],[82,"U,T"],[86,"U"],[90,""],[95,"RW"],[96,"V"]]}],["tor_interface",{"t":"CCCCCCCCCCPPPPFGPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPPPPPGPPNNNNNNNNNNNNNNNNNNNNNNPPPPFGPPGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOPPPPFGPPPFGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPGPPPFGPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOGFPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPGFPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPFGGPFPFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPSSSSSSSFFFGPPPGFSSFFSSSSSSPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPIPFGPPGFFPPFPPGGKPNNNNNMNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNOOOOO","n":["arti_client_tor_client","arti_process","arti_tor_client","censorship_circumvention","legacy_tor_client","legacy_tor_version","mock_tor_client","proxy","tor_crypto","tor_provider","ArtiClientConfigBuilderError","ArtiClientError","ArtiClientOnionServiceLaunchError","ArtiClientTorAddrError","ArtiClientTorClient","Error","NotImplemented","OnionServiceConfigBuilderError","TcpListenerAcceptFailed","TcpListenerBindFailed","TcpListenerLocalAddrFailed","TcpStreamConnectFailed","TcpStreamIntoFailed","TorKeyMgrError","add_client_auth","as_any","","as_any_mut","","bootstrap","borrow","","borrow_mut","","connect","fmt","","from","","generate_token","into","","into_any","","into_any_arc","","into_any_rc","","into_any_send","","into_any_sync","","listener","new","release_token","remove_client_auth","report","source","to_string","try_from","","try_into","","try_into_slug","try_octets_into","","type_id","","update","vzip","","ArtiBinPathNotAbsolute","ArtiDataDirectoryCreationFailed","ArtiDataDirectoryPathExistsAsFile","ArtiDataDirectoryPathNotAbsolute","ArtiDataDirectorySetPermissionsFailed","ArtiProcessStartFailed","ArtiProcessStdoutTakeFailed","ArtiStdoutReadThreadSpawnFailed","ArtiTomlFileCreationFailed","ArtiTomlFileWriteFailed","Error","RpcTomlFileCreationFailed","RpcTomlFileWriteFailed","as_any","as_any_mut","borrow","borrow_mut","fmt","","from","into","into_any","into_any_arc","into_any_rc","into_any_send","into_any_sync","report","source","to_string","try_from","try_into","try_into_slug","try_octets_into","type_id","vzip","ArtiNotBootstrapped","ArtiOpenStreamFailed","ArtiProcessCreationFailed","ArtiRpcConnectFailed","ArtiTorClient","ArtiTorClientConfig","BundledArti","CircuitTokenInvalid","Error","NotImplemented","SystemArti","__clone_box","add_client_auth","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","connect","fmt","","","from","","","generate_token","into","","","into_any","","","into_any_arc","","","into_any_rc","","","into_any_send","","","into_any_sync","","","listener","new","release_token","remove_client_auth","report","source","to_owned","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","vzip","","","arti_bin_path","data_directory","AddressMissing","AddressParseFailed","AddressPortInvalid","BinaryPathInvalid","BridgeLine","BridgeLineError","FingerprintInvalid","FingerprintMissing","KeyValueInvalid","PluggableTransportConfig","PluggableTransportConfigError","TransportMissing","TransportNameInvalid","","__clone_box","","add_option","address","as_any","","","","as_any_mut","","","","as_legacy_tor_setconf_value","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fingerprint","fmt","","","","","","from","","","","from_str","into","","","","into_any","","","","into_any_arc","","","","into_any_rc","","","","into_any_send","","","","into_any_sync","","","","keyvalues","new","","options","path_to_binary","report","","to_owned","","to_string","","transport","transports","try_from","","","","try_into","","","","try_into_slug","","try_octets_into","","","","type_id","","","","vzip","","","","AddOnionFailed","BridgeTransportNotSupported","BridgeTransportTypeMultiplyDefined","BundledTor","CircuitTokenInvalid","DelOnionFailed","Error","GetInfoNetListenersSocksFailed","GetInfoVersionFailed","LegacyControlStreamCreationFailed","LegacyTorClient","LegacyTorClientConfig","LegacyTorControllerCreationFailed","LegacyTorNotBootstrapped","LegacyTorProcessAuthenticationFailed","LegacyTorProcessCreationFailed","LegacyTorProcessTooOld","NoSocksListenersFound","NotImplemented","OnionClientAuthAddFailed","OnionClientAuthRemoveFailed","PluggableTransportBinaryNameNotUtf8Representnable","PluggableTransportConfigDirectoryCreationFailed","PluggableTransportConfigError","PluggableTransportDirectoryNameCollision","PluggableTransportSymlinkCreationFailed","PluggableTransportSymlinkRemovalFailed","SetConfDisableNetwork0Failed","SetConfFailed","SetEventsFailed","Socks5ConnectionFailed","SystemTor","TcpListenerBindFailed","TcpListenerLocalAddrFailed","WaitAsyncEventsFailed","__clone_box","add_client_auth","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","connect","fmt","","","from","","","generate_token","into","","","into_any","","","into_any_arc","","","into_any_rc","","","into_any_send","","","into_any_sync","","","listener","new","release_token","remove_client_auth","report","source","to_owned","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","version","vzip","","","allowed_ports","bridge_lines","data_directory","pluggable_transports","proxy_settings","tor_bin_path","tor_control_addr","tor_control_passwd","tor_socks_addr","Error","LegacyTorVersion","ParseError","__clone_box","as_any","","as_any_mut","","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","eq","fmt","","from","","from_str","into","","into_any","","into_any_arc","","into_any_rc","","into_any_send","","into_any_sync","","new","partial_cmp","report","to_owned","to_string","","try_from","","try_into","","try_into_slug","","try_octets_into","","type_id","","vzip","","ClientAlreadyBootstrapped","ClientNotBootstrapped","ConnectFailed","Error","MockTorClient","NotImplemented","OnionServiceAuthInvalid","OnionServiceNotFound","OnionServiceNotPublished","OnionServiceRequiresOnionAuth","TcpListenerBindFailed","TcpListenerLocalAddrFailed","add_client_auth","as_any","","as_any_mut","","bootstrap","borrow","","borrow_mut","","connect","default","drop","fmt","","from","","generate_token","into","","into_any","","into_any_arc","","into_any_rc","","into_any_send","","into_any_sync","","listener","new","release_token","remove_client_auth","report","source","to_string","try_from","","try_into","","try_into_slug","try_octets_into","","type_id","","update","vzip","","Generic","Https","HttpsProxyConfig","ProxyConfig","ProxyConfigError","Socks4","Socks4ProxyConfig","Socks5","Socks5ProxyConfig","__clone_box","","","","as_any","","","","","as_any_mut","","","","","borrow","","","","","borrow_mut","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","fmt","","","","","","from","","","","","","","","into","","","","","into_any","","","","","into_any_arc","","","","","into_any_rc","","","","","into_any_send","","","","","into_any_sync","","","","","new","","","report","to_owned","","","","to_string","try_from","","","","","try_into","","","","","try_into_slug","try_octets_into","","","","","type_id","","","","","vzip","","","","","ConversionError","ED25519_PRIVATE_KEYBLOB_BASE64_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_HEADER_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_SIZE","ED25519_PRIVATE_KEY_SIZE","ED25519_PUBLIC_KEY_SIZE","ED25519_SIGNATURE_SIZE","Ed25519PrivateKey","Ed25519PublicKey","Ed25519Signature","Error","KeyInvalid","One","ParseError","SignBit","V3OnionServiceId","V3_ONION_SERVICE_ID_STRING_LENGTH","V3_ONION_SERVICE_ID_STRING_SIZE","X25519PrivateKey","X25519PublicKey","X25519_PRIVATE_KEY_BASE64_LENGTH","X25519_PRIVATE_KEY_BASE64_SIZE","X25519_PRIVATE_KEY_SIZE","X25519_PUBLIC_KEY_BASE32_LENGTH","X25519_PUBLIC_KEY_BASE32_SIZE","X25519_PUBLIC_KEY_SIZE","Zero","__clone_box","","","","","","","as_any","","","","","","","","as_any_mut","","","","","","","","as_bytes","","","borrow","","","","","","","","borrow_mut","","","","","","","","clone","","","","","","","clone_into","","","","","","","clone_to_uninit","","","","","","","cmp","compare","eq","","","","","","equivalent","","","","","","fmt","","","","","","","","","from","","","","","","","","","from_base32","from_base64","from_key_blob","from_private_key","","","from_private_x25519","from_public_key","from_raw","","","","","from_service_id","from_string","generate","","hash","","into","","","","","","","","into_any","","","","","","","","into_any_arc","","","","","","","","into_any_rc","","","","","","","","into_any_send","","","","","","","","into_any_sync","","","","","","","","is_valid","partial_cmp","report","sign_message","","to_base32","to_base64","to_bytes","","","to_key_blob","to_owned","","","","","","","to_string","","try_from","","","","","","","","try_into","","","","","","","","try_into_slug","","try_octets_into","","","","","","","","type_id","","","","","","","","verify","verify_x25519","vzip","","","","","","","","BootstrapComplete","BootstrapStatus","CircuitToken","Domain","DomainAddr","Error","Generic","LogReceived","OnionAddr","OnionAddrV3","OnionListener","OnionService","OnionServicePublished","OnionStream","ParseFailure","Socket","TargetAddr","TorEvent","TorProvider","V3","__clone_box","","","","accept","add_client_auth","as_any","","","","","","","","as_any_mut","","","","","","","","bootstrap","borrow","","","","","","","","borrow_mut","","","","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","cmp","","","compare","","","connect","deref","deref_mut","domain","drop","eq","","","equivalent","","","","","","","","","flush","fmt","","","","","","","","","","","","from","","","","","","","","","","","","","from_str","","","generate_token","hash","","","into","","","","","","","","into_any","","","","","","","","into_any_arc","","","","","","","into_any_rc","","","","","","","","into_any_send","","","","","","","","into_any_sync","","","","","","","listener","local_addr","new","partial_cmp","","","peer_addr","port","read","release_token","remove_client_auth","report","service_id","set_nonblocking","to_owned","","","","to_string","","","","","try_clone","try_from","","","","","","","","","try_into","","","","","","","","try_into_slug","","","","","try_octets_into","","","","","","","","type_id","","","","","","","","update","virt_port","vzip","","","","","","","","write","","line","progress","service_id","summary","tag"],"q":[[0,"tor_interface"],[10,"tor_interface::arti_client_tor_client"],[71,"tor_interface::arti_process"],[106,"tor_interface::arti_tor_client"],[186,"tor_interface::arti_tor_client::ArtiTorClientConfig"],[188,"tor_interface::censorship_circumvention"],[300,"tor_interface::legacy_tor_client"],[405,"tor_interface::legacy_tor_client::LegacyTorClientConfig"],[414,"tor_interface::legacy_tor_version"],[465,"tor_interface::mock_tor_client"],[526,"tor_interface::proxy"],[650,"tor_interface::tor_crypto"],[904,"tor_interface::tor_provider"],[1151,"tor_interface::tor_provider::TorEvent"],[1156,"core::result"],[1157,"core::any"],[1158,"core::option"],[1159,"core::fmt"],[1160,"alloc::boxed"],[1161,"alloc::sync"],[1162,"alloc::rc"],[1163,"tokio::runtime::runtime"],[1164,"std::path"],[1165,"tor_error::report"],[1166,"core::error"],[1167,"alloc::string"],[1168,"tor_persist::slug"],[1169,"alloc::vec"],[1170,"dyn_clone::sealed"],[1171,"core::net::socket_addr"],[1172,"core::cmp"],[1173,"core::hash"],[1174,"std::io::error"],[1175,"der::error"]],"i":"``````````Al000``00000000d0101001010110100101010101010000111010110101001Dh000000000`000000000000000000000000Eb000``Dn1`100Dl0210210021021111022102100210210210210210210000221202102120210210021Il0El00Ej``111``101EdEf101203120301203120310101001220331203012031203120312031203120301011231023011203120323120312031203Fh00Ff11`111``111111111111111111101110Fd02102100210211110221021002102102102102102100002212021021202102100021In00000J`00``FnFj10101010000011100101010101010001010101010101010Gf00``0000000Gd010100101000110100101010101010000111010110101001H`Gn```0`0`GhGjGl3421034210342103421032103210321034421034210333342103421034210342103421034210321042103442103421034421034210342103Hj```````````0Hh1````````````0BhHbHfjBlh6574321065743210641057432106574321065432106543210654321060054321011100057743210057432106612541050543214052105743210657432106574321065743210657432106574321060075212532554321067057432106574321067057432106574321063357432106Dd0`Ad``n2```12`01```IdIb1If4C`I`1534267Aj264537801264537802645378045374537453745345310032453444555333066445533778026666645377805371453264537802645378064537802645378026453780645378010445303011642453764537026453378026453780645372645378026453780142645378000JbJdJf11","f":"````````````````````````{{{f{bd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{{{f{bd}}}{{A`{ln}}}}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{bd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Al}}{f{bAn}}}B`}0{cc{}}0{{{f{bd}}}Af}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}02222{{{f{bd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{{{Bd{Cb}}{f{Cd}}}{{A`{dAl}}}}{{{f{bd}}Af}l}{{{f{bd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Al}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0{fDb}0{{{f{bd}}}{{A`{{Df{Dd}}n}}}}{{}c{}}0`````````````{f{{f{Ab}}}}{{{f{b}}}{{f{bAb}}}}{f{{f{c}}}{}}{{{f{b}}}{{f{bc}}}{}}{{{f{Dh}}{f{bAn}}}B`}0{cc{}}{{}c{}}{{{Bb{c}}}{{Bb{Ab}}}{}}{{{Bd{c}}}{{Bd{Ab}}}{}}{{{Bf{c}}}{{Bf{Ab}}}{}}22{f{{Ch{Cf}}}}{{{f{Dh}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}{{}{{A`{c}}}{}}{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}{fDb}{{}c{}}```````````{{fDj}l}{{{f{bDl}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}00{{{f{b}}}{{f{bAb}}}}00{{{f{bDl}}}{{A`{ln}}}}{f{{f{c}}}{}}00{{{f{b}}}{{f{bc}}}{}}00{{{f{Dn}}}Dn}{{f{f{bc}}}l{}}{{fE`}l}{{{f{bDl}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Eb}}{f{bAn}}}B`}0{{{f{Dn}}{f{bAn}}}B`}{cc{}}00{{{f{bDl}}}Af}{{}c{}}00{{{Bb{c}}}{{Bb{Ab}}}{}}00{{{Bd{c}}}{{Bd{Ab}}}{}}00{{{Bf{c}}}{{Bf{Ab}}}{}}00222222{{{f{bDl}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{Dn{{A`{Dln}}}}{{{f{bDl}}Af}l}{{{f{bDl}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Eb}}}{{Ah{{f{Cj}}}}}}{fc{}}{fCl}{c{{A`{e}}}{}{}}00{{}{{A`{c}}}{}}00{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}00{fDb}00{{{f{bDl}}}{{A`{{Df{Dd}}n}}}}{{}c{}}00````````````````{{fDj}l}0{{{f{bEd}}Cl}l}{{{f{Ef}}}{{f{Eh}}}}{f{{f{Ab}}}}000{{{f{b}}}{{f{bAb}}}}000{{{f{Ef}}}Cl}{f{{f{c}}}{}}000{{{f{b}}}{{f{bc}}}{}}000{{{f{Ed}}}Ed}{{{f{Ef}}}Ef}{{f{f{bc}}}l{}}0{{fE`}l}0{{{f{Ef}}}{{f{Cl}}}}{{{f{Ed}}{f{bAn}}}B`}{{{f{Ej}}{f{bAn}}}B`}0{{{f{Ef}}{f{bAn}}}B`}{{{f{El}}{f{bAn}}}B`}0{cc{}}000{{{f{En}}}{{A`{Efc}}}{}}{{}c{}}000{{{Bb{c}}}{{Bb{Ab}}}{}}000{{{Bd{c}}}{{Bd{Ab}}}{}}000{{{Bf{c}}}{{Bf{Ab}}}{}}00022222222{{{f{Ef}}}{{f{{Df{{F`{ClCl}}}}}}}}{{{Df{Cl}}Fb}{{A`{EdEj}}}}{{ClEhCl{Df{{F`{ClCl}}}}}{{A`{EfEl}}}}{{{f{Ed}}}{{f{{Df{Cl}}}}}}{{{f{Ed}}}{{f{Fb}}}}{f{{Ch{Cf}}}}0{fc{}}0{fCl}0{{{f{Ef}}}{{f{Cl}}}}5{c{{A`{e}}}{}{}}000{{}{{A`{c}}}{}}000{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}000{fDb}000{{}c{}}000```````````````````````````````````{{fDj}l}{{{f{bFd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}00{{{f{b}}}{{f{bAb}}}}00{{{f{bFd}}}{{A`{ln}}}}{f{{f{c}}}{}}00{{{f{b}}}{{f{bc}}}{}}00{{{f{Ff}}}Ff}{{f{f{bc}}}l{}}{{fE`}l}{{{f{bFd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Fh}}{f{bAn}}}B`}0{{{f{Ff}}{f{bAn}}}B`}{cc{}}00{{{f{bFd}}}Af}{{}c{}}00{{{Bb{c}}}{{Bb{Ab}}}{}}00{{{Bd{c}}}{{Bd{Ab}}}{}}00{{{Bf{c}}}{{Bf{Ab}}}{}}00222222{{{f{bFd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{Ff{{A`{FdFh}}}}{{{f{bFd}}Af}l}{{{f{bFd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Fh}}}{{Ah{{f{Cj}}}}}}{fc{}}{fCl}{c{{A`{e}}}{}{}}00{{}{{A`{c}}}{}}00{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}00{fDb}00{{{f{bFd}}}{{A`{{Df{Dd}}n}}}}{{{f{bFd}}}Fj}{{}c{}}00````````````{{fDj}l}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{Fj}}}Fj}{{f{f{bc}}}l{}}{{fE`}l}{{{f{Fj}}{f{Fj}}}Fl}{{{f{Fn}}{f{bAn}}}B`}0{cc{}}0{{{f{En}}}{{A`{Fjc}}}{}}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}02222{{G`G`G`{Ah{G`}}{Ah{{f{En}}}}}{{A`{FjFn}}}}{{{f{Fj}}{f{Fj}}}{{Ah{Gb}}}}{f{{Ch{Cf}}}}{fc{}}{fCl}{{{f{Fj}}}Cl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}0{fDb}0{{}c{}}0````````````{{{f{bGd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{{{f{bGd}}}{{A`{ln}}}}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{bGd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{}Gd}{{{f{bGd}}}l}{{{f{Gf}}{f{bAn}}}B`}0{cc{}}0{{{f{bGd}}}Af}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}02222{{{f{bGd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}9{{{f{bGd}}Af}l}{{{f{bGd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Gf}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0{fDb}0{{{f{bGd}}}{{A`{{Df{Dd}}n}}}}{{}c{}}0`````````{{fDj}l}000{f{{f{Ab}}}}0000{{{f{b}}}{{f{bAb}}}}0000{f{{f{c}}}{}}0000{{{f{b}}}{{f{bc}}}{}}0000{{{f{Gh}}}Gh}{{{f{Gj}}}Gj}{{{f{Gl}}}Gl}{{{f{Gn}}}Gn}{{f{f{bc}}}l{}}000{{fE`}l}000{{{f{H`}}{f{bAn}}}B`}0{{{f{Gh}}{f{bAn}}}B`}{{{f{Gj}}{f{bAn}}}B`}{{{f{Gl}}{f{bAn}}}B`}{{{f{Gn}}{f{bAn}}}B`}{cc{}}000{GjGn}{GhGn}2{GlGn}{{}c{}}0000{{{Bb{c}}}{{Bb{Ab}}}{}}0000{{{Bd{c}}}{{Bd{Ab}}}{}}0000{{{Bf{c}}}{{Bf{Ab}}}{}}00002222222222{Ad{{A`{GhH`}}}}{{Ad{Ah{Cl}}{Ah{Cl}}}{{A`{GjH`}}}}{{Ad{Ah{Cl}}{Ah{Cl}}}{{A`{GlH`}}}}{f{{Ch{Cf}}}}{fc{}}000{fCl}{c{{A`{e}}}{}{}}0000{{}{{A`{c}}}{}}0000{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0000{fDb}0000{{}c{}}0000````````````````````````````{{fDj}l}000000{f{{f{Ab}}}}0000000{{{f{b}}}{{f{bAb}}}}0000000{{{f{Hb}}}{{f{{Hd{E`}}}}}}{{{f{Bl}}}{{f{{Hd{E`}}}}}}{{{f{h}}}{{f{{Hd{E`}}}}}}{f{{f{c}}}{}}0000000{{{f{b}}}{{f{bc}}}{}}0000000{{{f{Bh}}}Bh}{{{f{Hb}}}Hb}{{{f{Hf}}}Hf}{{{f{j}}}j}{{{f{Bl}}}Bl}{{{f{h}}}h}{{{f{Hh}}}Hh}{{f{f{bc}}}l{}}000000{{fE`}l}000000{{{f{h}}{f{h}}}Gb}{{f{f{c}}}Gb{}}{{{f{Bh}}{f{Bh}}}Fl}{{{f{Hb}}{f{Hb}}}Fl}{{{f{Hf}}{f{Hf}}}Fl}{{{f{j}}{f{j}}}Fl}{{{f{Bl}}{f{Bl}}}Fl}{{{f{h}}{f{h}}}Fl}{{f{f{c}}}Fl{}}00000{{{f{Bh}}{f{bAn}}}B`}{{{f{Hj}}{f{bAn}}}B`}0{{{f{Hb}}{f{bAn}}}B`}{{{f{Hf}}{f{bAn}}}B`}{{{f{j}}{f{bAn}}}B`}{{{f{Bl}}{f{bAn}}}B`}{{{f{h}}{f{bAn}}}B`}0{cc{}}0000000{FlHh}{{{f{En}}}{{A`{BlHj}}}}{{{f{En}}}{{A`{jHj}}}}{{{f{En}}}{{A`{BhHj}}}}{{{f{Bh}}}Hb}{{{f{j}}}Bl}{{{f{Bh}}}h}{{{f{j}}}{{A`{{F`{BhHh}}Hj}}}}{{{f{Hb}}}h}{{{f{{Hd{E`}}}}}{{A`{BhHj}}}}{{{f{{Hd{E`}}}}}{{A`{HbHj}}}}{{{f{{Hd{E`}}}}}{{A`{HfHj}}}}{{{f{{Hd{E`}}}}}{{A`{jHj}}}}{{{f{{Hd{E`}}}}}Bl}{{{f{h}}}{{A`{HbHj}}}}{{{f{En}}}{{A`{hHj}}}}{{}Bh}{{}j}{{{f{Bl}}{f{bc}}}lHl}{{{f{h}}{f{bc}}}lHl}{{}c{}}0000000{{{Bb{c}}}{{Bb{Ab}}}{}}0000000{{{Bd{c}}}{{Bd{Ab}}}{}}0000000{{{Bf{c}}}{{Bf{Ab}}}{}}00000002222222222222222{{{f{En}}}Fl}{{{f{h}}{f{h}}}{{Ah{Gb}}}}{f{{Ch{Cf}}}}{{{f{Bh}}{f{{Bn{E`}}}}}Hf}{{{f{j}}{f{{Bn{E`}}}}}{{A`{{F`{HfHh}}Hj}}}}{{{f{Bl}}}Cl}{{{f{j}}}Cl}{{{f{Bh}}}{{Hd{E`}}}}{{{f{Hf}}}{{Hd{E`}}}}{{{f{j}}}{{Hd{E`}}}}{{{f{Bh}}}Cl}{fc{}}000000{fCl}0{c{{A`{e}}}{}{}}0000000{{}{{A`{c}}}{}}0000000{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}0000000{fDb}0000000{{{f{Hf}}{f{{Bn{E`}}}}{f{Hb}}}Fl}{{{f{Hf}}{f{{Bn{E`}}}}{f{Bl}}Hh}Fl}{{}c{}}0000000````````````````````{{fDj}l}000{{{f{C`}}}{{A`{{Ah{Aj}}Hn}}}}{{{f{bI`}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0000000{{{f{b}}}{{f{bAb}}}}0000000{{{f{bI`}}}{{A`{ln}}}}{f{{f{c}}}{}}0000000{{{f{b}}}{{f{bc}}}{}}0000000{{{f{Ib}}}Ib}{{{f{Id}}}Id}{{{f{If}}}If}{{{f{Ad}}}Ad}{{f{f{bc}}}l{}}000{{fE`}l}000{{{f{Ib}}{f{Ib}}}Gb}{{{f{Id}}{f{Id}}}Gb}{{{f{If}}{f{If}}}Gb}{{f{f{c}}}Gb{}}00{{{f{bI`}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Aj}}}{{f{c}}}{}}{{{f{bAj}}}{{f{bc}}}{}}{{{f{If}}}{{f{En}}}}{{{f{bC`}}}l}{{{f{Ib}}{f{Ib}}}Fl}{{{f{Id}}{f{Id}}}Fl}{{{f{If}}{f{If}}}Fl}{{f{f{c}}}Fl{}}00000000{{{f{bAj}}}{{A`{lHn}}}}{{{f{n}}{f{bAn}}}B`}0{{{f{Ib}}{f{bAn}}}B`}0{{{f{Id}}{f{bAn}}}B`}0{{{f{If}}{f{bAn}}}B`}0{{{f{Ad}}{f{bAn}}}B`}0{{{f{Dd}}{f{bAn}}}B`}{{{f{Aj}}{f{bAn}}}B`}{cc{}}{Aln}{Fhn}2{Gfn}{Ebn}444{{{F`{hBj}}}Ad}555{{{f{En}}}{{A`{Idc}}}{}}{{{f{En}}}{{A`{Ifc}}}{}}{{{f{En}}}{{A`{Adc}}}{}}{{{f{bI`}}}Af}{{{f{Ib}}{f{bc}}}lHl}{{{f{Id}}{f{bc}}}lHl}{{{f{If}}{f{bc}}}lHl}{{}c{}}0000000{{{Bb{c}}}{{Bb{Ab}}}{}}0000000{{{Bd{c}}}{{Bd{Ab}}}{}}000000{{{Bf{c}}}{{Bf{Ab}}}{}}0000000222222222222222{{{f{bI`}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{{{f{Aj}}}{{Ah{Id}}}}{{hBj}Ib}{{{f{Ib}}{f{Ib}}}{{Ah{Gb}}}}{{{f{Id}}{f{Id}}}{{Ah{Gb}}}}{{{f{If}}{f{If}}}{{Ah{Gb}}}}{{{f{Aj}}}{{Ah{Ad}}}}{{{f{If}}}Bj}{{{f{bAj}}{f{b{Bn{E`}}}}}{{A`{IhHn}}}}{{{f{bI`}}Af}l}{{{f{bI`}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Ib}}}{{f{h}}}}{{{f{C`}}Fl}{{A`{lHn}}}}{fc{}}000{fCl}0000{{{f{Aj}}}{{A`{AjHn}}}}{c{{A`{e}}}{}{}}000{{{F`{ClBj}}}{{A`{Ifc}}}{}}1111{{}{{A`{c}}}{}}0000000{f{{A`{CnD`}}}}0000{{}{{A`{c}}}{}}0000000{fDb}0000000{{{f{bI`}}}{{A`{{Df{Dd}}n}}}}{{{f{Ib}}}Bj}{{}c{}}0000000{{{f{b}}{f{{Bn{E`}}}}}{{A`{lIj}}}}{{{f{bAj}}{f{{Bn{E`}}}}}{{A`{IhHn}}}}`````","D":"AMh","p":[[0,"mut"],[5,"ArtiClientTorClient",10],[1,"reference",null,null,1],[5,"V3OnionServiceId",650],[5,"X25519PrivateKey",650],[1,"unit"],[6,"Error",904],[6,"Result",1156,null,1],[10,"Any",1157],[6,"TargetAddr",904],[8,"CircuitToken",904],[6,"Option",1158,null,1],[5,"OnionStream",904],[6,"Error",10],[5,"Formatter",1159],[8,"Result",1159],[5,"Box",1160,null,1],[5,"Arc",1161,null,1],[5,"Rc",1162,null,1],[5,"Ed25519PrivateKey",650],[1,"u16"],[5,"X25519PublicKey",650],[1,"slice"],[5,"OnionListener",904],[5,"Runtime",1163],[5,"Path",1164],[5,"ReportHelper",1165],[5,"Report",1165],[10,"Error",1166],[5,"String",1167],[5,"Slug",1168],[6,"BadSlug",1168],[5,"TypeId",1157],[6,"TorEvent",904],[5,"Vec",1169],[6,"Error",71],[5,"Private",1170],[5,"ArtiTorClient",106],[6,"ArtiTorClientConfig",106],[1,"u8"],[6,"Error",106],[5,"PluggableTransportConfig",188],[5,"BridgeLine",188],[6,"SocketAddr",1171],[6,"PluggableTransportConfigError",188],[6,"BridgeLineError",188],[1,"str"],[1,"tuple",null,null,1],[5,"PathBuf",1164],[5,"LegacyTorClient",300],[6,"LegacyTorClientConfig",300],[6,"Error",300],[5,"LegacyTorVersion",414],[1,"bool"],[6,"Error",414],[1,"u32"],[6,"Ordering",1172],[5,"MockTorClient",465],[6,"Error",465],[5,"Socks4ProxyConfig",526],[5,"Socks5ProxyConfig",526],[5,"HttpsProxyConfig",526],[6,"ProxyConfig",526],[6,"ProxyConfigError",526],[5,"Ed25519PublicKey",650],[1,"array"],[5,"Ed25519Signature",650],[6,"SignBit",650],[6,"Error",650],[10,"Hasher",1173],[5,"Error",1174],[10,"TorProvider",904],[5,"OnionAddrV3",904],[6,"OnionAddr",904],[5,"DomainAddr",904],[1,"usize"],[5,"Error",1175],[15,"BundledArti",186],[15,"BundledTor",405],[15,"SystemTor",405],[15,"LogReceived",1151],[15,"BootstrapStatus",1151],[15,"OnionServicePublished",1151]],"r":[],"b":[[35,"impl-Debug-for-Error"],[36,"impl-Display-for-Error"],[88,"impl-Display-for-Error"],[89,"impl-Debug-for-Error"],[136,"impl-Display-for-Error"],[137,"impl-Debug-for-Error"],[231,"impl-Debug-for-PluggableTransportConfigError"],[232,"impl-Display-for-PluggableTransportConfigError"],[234,"impl-Display-for-BridgeLineError"],[235,"impl-Debug-for-BridgeLineError"],[354,"impl-Display-for-Error"],[355,"impl-Debug-for-Error"],[430,"impl-Display-for-Error"],[431,"impl-Debug-for-Error"],[490,"impl-Display-for-Error"],[491,"impl-Debug-for-Error"],[571,"impl-Debug-for-ProxyConfigError"],[572,"impl-Display-for-ProxyConfigError"],[581,"impl-From%3CSocks5ProxyConfig%3E-for-ProxyConfig"],[582,"impl-From%3CSocks4ProxyConfig%3E-for-ProxyConfig"],[584,"impl-From%3CHttpsProxyConfig%3E-for-ProxyConfig"],[756,"impl-Debug-for-Error"],[757,"impl-Display-for-Error"],[762,"impl-Display-for-V3OnionServiceId"],[763,"impl-Debug-for-V3OnionServiceId"],[999,"impl-Display-for-Error"],[1000,"impl-Debug-for-Error"],[1001,"impl-Display-for-OnionAddrV3"],[1002,"impl-Debug-for-OnionAddrV3"],[1003,"impl-Debug-for-OnionAddr"],[1004,"impl-Display-for-OnionAddr"],[1005,"impl-Display-for-DomainAddr"],[1006,"impl-Debug-for-DomainAddr"],[1007,"impl-Display-for-TargetAddr"],[1008,"impl-Debug-for-TargetAddr"],[1012,"impl-From%3CError%3E-for-Error"],[1013,"impl-From%3CError%3E-for-Error"],[1015,"impl-From%3CError%3E-for-Error"],[1016,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJgDPwACAAAACwADABEAFAAoAAAAKwAKADcAIwBdABUAdAAXAI8AAACTACkAywABAM8ABwDYAA0A5wAFAPEAAAD2ABMADwEFABcBGwA0AQIAOAEtAGkBAABtAQ8AfgETAJMBCwChAQ8AswEAALYBCQDBARMA1wEVAO8BAADyAQoA/gEQABgCKQBGAgEASQIAAE8CGABrAh8AmAIAAKYCFwDBAjsABQMAABcDAQAhAycASgMBAFQDKgCBAwcAnAMEAKMDDwC0AyEA1wMBANoDGQD1AwEA+AMBAP0DAAABBAIABQQCABAEJQA5BAIAPgQAAEEEAABEBAgATgQlAHYECQA=","P":[[30,"T"],[34,""],[37,"T"],[39,""],[40,"U"],[42,"T"],[52,""],[59,"U,T"],[61,"U"],[63,""],[64,"Target"],[66,""],[69,"V"],[84,""],[86,"T"],[88,""],[90,"T"],[91,"U"],[92,"T"],[97,""],[100,"U,T"],[101,"U"],[102,""],[103,"Target"],[104,""],[105,"V"],[117,""],[126,"T"],[132,""],[133,"T"],[134,""],[139,"T"],[142,""],[143,"U"],[146,"T"],[161,""],[167,"T"],[168,""],[169,"U,T"],[172,"U"],[175,""],[176,"Target"],[179,""],[183,"V"],[202,""],[215,"T"],[223,""],[225,"T"],[227,""],[236,"T"],[240,"FromStr::Err"],[241,"U"],[245,"T"],[265,""],[272,"T"],[274,""],[278,"U,T"],[282,"U"],[286,""],[288,"Target"],[292,""],[296,"V"],[335,""],[344,"T"],[350,""],[351,"T"],[352,""],[357,"T"],[360,""],[361,"U"],[364,"T"],[379,""],[385,"T"],[386,""],[387,"U,T"],[390,"U"],[393,""],[394,"Target"],[397,""],[402,"V"],[417,""],[422,"T"],[426,""],[427,"T"],[428,""],[432,"T"],[434,"FromStr::Err"],[435,"U"],[437,"T"],[447,""],[450,"T"],[451,""],[453,"U,T"],[455,"U"],[457,""],[459,"Target"],[461,""],[463,"V"],[477,""],[483,"T"],[487,""],[492,"T"],[494,""],[495,"U"],[497,"T"],[507,""],[514,"U,T"],[516,"U"],[518,""],[519,"Target"],[521,""],[524,"V"],[535,""],[549,"T"],[559,""],[563,"T"],[567,""],[577,"T"],[581,""],[583,"T"],[584,""],[585,"U"],[590,"T"],[615,""],[619,"T"],[623,""],[624,"U,T"],[629,"U"],[634,""],[635,"Target"],[640,""],[645,"V"],[678,""],[704,"T"],[720,""],[727,"T"],[734,""],[742,"K"],[743,""],[749,"K"],[755,""],[764,"T"],[772,""],[790,"__H"],[792,"U"],[800,"T"],[840,""],[851,"T"],[858,""],[860,"U,T"],[868,"U"],[876,""],[878,"Target"],[886,""],[896,"V"],[924,""],[947,"T"],[963,""],[967,"T"],[971,""],[978,"K"],[981,""],[982,"Deref::Target"],[984,""],[989,"K"],[998,""],[1011,"T"],[1012,""],[1014,"T"],[1015,""],[1017,"T"],[1020,""],[1021,"T"],[1024,"FromStr::Err"],[1027,""],[1028,"__H"],[1031,"U"],[1039,"T"],[1077,""],[1091,"T"],[1095,""],[1101,"U,T"],[1105,"TryFrom::Error"],[1106,"U,T"],[1110,"U"],[1118,""],[1123,"Target"],[1131,""],[1141,"V"],[1149,""]]}]]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
-//{"start":39,"fragment_lengths":[6092,3738,25982]}
\ No newline at end of file
+//{"start":39,"fragment_lengths":[6125,3738,26832]}
\ No newline at end of file
diff --git a/crates/src/tor_interface/arti_process.rs.html b/crates/src/tor_interface/arti_process.rs.html
index cbd69e72..d0c12890 100644
--- a/crates/src/tor_interface/arti_process.rs.html
+++ b/crates/src/tor_interface/arti_process.rs.html
@@ -162,22 +162,84 @@
161
162
163
-164// standard
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
// standard
use std::fs;
+#[cfg(unix)]
+use std::os::unix::fs::PermissionsExt;
use std::fs::File;
use std::io::{BufRead, BufReader, Write};
use std::ops::Drop;
-use std::process;
use std::process::{Child, ChildStdout, Command, Stdio};
use std::path::Path;
use std::sync::{Mutex, Weak};
-use std::time::{Duration, Instant};
#[derive(thiserror::Error, Debug)]
pub enum Error {
- #[error("not implemented")]
- NotImplemented(),
-
#[error("provided arti bin path '{0}' must be an absolute path")]
ArtiBinPathNotAbsolute(String),
@@ -190,12 +252,21 @@
#[error("file exists in provided data directory path '{0}'")]
ArtiDataDirectoryPathExistsAsFile(String),
+ #[error("unable to set permissions for data directory: {0}")]
+ ArtiDataDirectorySetPermissionsFailed(#[source] std::io::Error),
+
#[error("failed to create arti.toml file: {0}")]
ArtiTomlFileCreationFailed(#[source] std::io::Error),
#[error("failed to write arti.toml file: {0}")]
ArtiTomlFileWriteFailed(#[source] std::io::Error),
+ #[error("failed to create rpc.toml file: {0}")]
+ RpcTomlFileCreationFailed(#[source] std::io::Error),
+
+ #[error("failed to write rpc.toml file: {0}")]
+ RpcTomlFileWriteFailed(#[source] std::io::Error),
+
#[error("failed to start arti process: {0}")]
ArtiProcessStartFailed(#[source] std::io::Error),
@@ -237,28 +308,89 @@
)));
}
- // construct paths to arti files file
- let arti_toml = data_directory.join("arti.toml");
+ // arti data directory must not be world-writable on unix platforms when using a unix domain socket endpoint
+ if cfg!(unix) {
+ let perms = PermissionsExt::from_mode(0o700);
+ fs::set_permissions(data_directory, perms).map_err(Error::ArtiDataDirectorySetPermissionsFailed)?;
+ }
- // write arti.toml settings file (always overwrite)
- let cache_dir = data_directory.join("cache").display().to_string();
+ // construct paths to arti files file
+ let arti_toml = data_directory.join("arti.toml").display().to_string();
+ let cache_dir = data_directory.join("cache").display().to_string();
let state_dir = data_directory.join("state").display().to_string();
- let rpc_listen = data_directory.join("SOCKET").display().to_string();
- let arti_toml_content = format!("\
+ let mut arti_toml_content = format!("\
+ [rpc]\n\
+ enable = true\n\n\
+ [rpc.listen.user-default]\n\
+ enable = false\n\n\
+ [rpc.listen.system-default]\n\
+ enable = false\n\n\
[storage]\n\
cache_dir = \"{cache_dir}\"\n\
- state_dir = \"{state_dir}\"\n\
+ state_dir = \"{state_dir}\"\n\n\
[storage.keystore]\n\
- enabled = true\n\
+ enabled = true\n\n\
[storage.keystore.primary]\n\
- kind = \"ephemeral\"\n\
+ kind = \"ephemeral\"\n\n\
[storage.permissions]\n\
- dangerously_trust_everyone = true\n\
- [rpc]\n\
- rpc_listen = \"{rpc_listen}\"\n
+ dangerously_trust_everyone = true\n\n\
");
+ let connect_string = if cfg!(unix) {
+ // use domain socket for unix
+ let unix_rpc_toml_path = data_directory.join("rpc.toml").display().to_string();
+
+ arti_toml_content.push_str(format!("\
+ [rpc.listen.unix-point]\n\
+ enable = true\n\
+ file = \"{unix_rpc_toml_path}\"\n\n\
+ ").as_str());
+
+ let socket_path = data_directory.join("rpc.socket").display().to_string();
+
+ let unix_rpc_toml_content = format!("\
+ [connect]\n\
+ socket = \"unix:{socket_path}\"\n\
+ auth = \"none\"\n\
+ ");
+
+ let mut unix_rpc_toml_file =
+ File::create(&unix_rpc_toml_path).map_err(Error::RpcTomlFileCreationFailed)?;
+ unix_rpc_toml_file
+ .write_all(unix_rpc_toml_content.as_bytes())
+ .map_err(Error::RpcTomlFileWriteFailed)?;
+
+ unix_rpc_toml_path
+ } else {
+ // use tcp socket everywhere else
+ let tcp_rpc_toml_path = data_directory.join("rpc.toml").display().to_string();
+
+ arti_toml_content.push_str(format!("\
+ [rpc.listen.tcp-point]\n\
+ enable = true\n\
+ file = \"{tcp_rpc_toml_path}\"\n\n\
+ ").as_str());
+
+ let cookie_path = data_directory.join("rpc.cookie").display().to_string();
+
+ const RPC_PORT: u16 = 18929;
+
+ let tcp_rpc_toml_content = format!("\
+ [connect]\n\
+ socket = \"inet:127.0.0.1:{RPC_PORT}\"\n\
+ auth = {{ cookie = {{ path = \"{cookie_path}\" }} }}\n\
+ ");
+
+ let mut tcp_rpc_toml_file =
+ File::create(&tcp_rpc_toml_path).map_err(Error::RpcTomlFileCreationFailed)?;
+ tcp_rpc_toml_file
+ .write_all(tcp_rpc_toml_content.as_bytes())
+ .map_err(Error::RpcTomlFileWriteFailed)?;
+
+ tcp_rpc_toml_path
+ };
+
let mut arti_toml_file =
File::create(&arti_toml).map_err(Error::ArtiTomlFileCreationFailed)?;
arti_toml_file
@@ -291,8 +423,6 @@
})
.map_err(Error::ArtiStdoutReadThreadSpawnFailed)?;
- let connect_string = format!("unix:{rpc_listen}");
-
Ok(ArtiProcess { process, connect_string })
}
diff --git a/crates/src/tor_interface/arti_tor_client.rs.html b/crates/src/tor_interface/arti_tor_client.rs.html
index 628b2f01..ae7ac7ec 100644
--- a/crates/src/tor_interface/arti_tor_client.rs.html
+++ b/crates/src/tor_interface/arti_tor_client.rs.html
@@ -252,7 +252,9 @@
251
252
253
-254
// std
+254
+255
+256
// std
use std::collections::BTreeMap;
use std::ops::DerefMut;
use std::path::PathBuf;
@@ -260,7 +262,7 @@
use std::time::{Duration, Instant};
// extern
-use arti_rpc_client_core::{ObjectId, RpcConn, RpcConnBuilder};
+use arti_rpc_client_core::{RpcConn, RpcConnBuilder};
// internal crates
use crate::tor_crypto::*;
@@ -308,7 +310,7 @@
}
pub struct ArtiTorClient {
- daemon: Option<ArtiProcess>,
+ _daemon: Option<ArtiProcess>,
rpc_conn: RpcConn,
pending_log_lines: Arc<Mutex<Vec<String>>>,
pending_events: Arc<Mutex<Vec<TorEvent>>>,
@@ -333,15 +335,17 @@
ArtiProcess::new(arti_bin_path.as_path(), data_directory.as_path(), Arc::downgrade(&pending_log_lines))
.map_err(Error::ArtiProcessCreationFailed)?;
- let builder = RpcConnBuilder::from_connect_string(daemon.connect_string()).unwrap();
-
let rpc_conn = {
- // try to open an rpc conneciton for 5 seconds beore giving up
+ // try to open an rpc connnection for 5 seconds beore giving up
let timeout = Duration::from_secs(5);
let mut rpc_conn: Option<RpcConn> = None;
let start = Instant::now();
while rpc_conn.is_none() && start.elapsed() < timeout {
+
+ let mut builder = RpcConnBuilder::new();
+ builder.prepend_literal_path(daemon.connect_string().into());
+
rpc_conn = builder.connect().map_or(None, |rpc_conn| Some(rpc_conn));
}
@@ -360,12 +364,12 @@
};
let pending_events = std::vec![TorEvent::LogReceived {
- line: "Starting arti-client TorProvider".to_string()
+ line: "Starting arti TorProvider".to_string()
}];
let pending_events = Arc::new(Mutex::new(pending_events));
Ok(Self {
- daemon: Some(daemon),
+ _daemon: Some(daemon),
rpc_conn,
pending_log_lines,
pending_events,
diff --git a/crates/tor_interface/arti_client_tor_client/enum.Error.html b/crates/tor_interface/arti_client_tor_client/enum.Error.html
index d8219857..95b27aaa 100644
--- a/crates/tor_interface/arti_client_tor_client/enum.Error.html
+++ b/crates/tor_interface/arti_client_tor_client/enum.Error.html
@@ -1,4 +1,4 @@
-Error in tor_interface::arti_client_tor_client - Rust pub enum Error {
+Error in tor_interface::arti_client_tor_client - Rust
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/arti_client_tor_client/struct.ArtiClientTorClient.html b/crates/tor_interface/arti_client_tor_client/struct.ArtiClientTorClient.html
index bb80ab0b..94c72264 100644
--- a/crates/tor_interface/arti_client_tor_client/struct.ArtiClientTorClient.html
+++ b/crates/tor_interface/arti_client_tor_client/struct.ArtiClientTorClient.html
@@ -1,4 +1,4 @@
-ArtiClientTorClient in tor_interface::arti_client_tor_client - Rust pub struct ArtiClientTorClient { /* private fields */ }
Expand description
The ArtiClientTorClient
is an in-process arti-client
-based TorProvider
.
+ArtiClientTorClient in tor_interface::arti_client_tor_client - Rust pub struct ArtiClientTorClient { /* private fields */ }
Expand description
The ArtiClientTorClient
is an in-process arti-client
-based TorProvider
.
Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
diff --git a/crates/tor_interface/arti_process/enum.Error.html b/crates/tor_interface/arti_process/enum.Error.html
index 31d77eee..96640c5e 100644
--- a/crates/tor_interface/arti_process/enum.Error.html
+++ b/crates/tor_interface/arti_process/enum.Error.html
@@ -1,15 +1,17 @@
-Error in tor_interface::arti_process - Rust pub enum Error {
- NotImplemented(),
+Error in tor_interface::arti_process - Rust pub enum Error {
ArtiBinPathNotAbsolute(String),
ArtiDataDirectoryPathNotAbsolute(String),
ArtiDataDirectoryCreationFailed(Error),
ArtiDataDirectoryPathExistsAsFile(String),
+ ArtiDataDirectorySetPermissionsFailed(Error),
ArtiTomlFileCreationFailed(Error),
ArtiTomlFileWriteFailed(Error),
+ RpcTomlFileCreationFailed(Error),
+ RpcTomlFileWriteFailed(Error),
ArtiProcessStartFailed(Error),
ArtiProcessStdoutTakeFailed(),
ArtiStdoutReadThreadSpawnFailed(Error),
-}
Variants§
§NotImplemented()
§ArtiBinPathNotAbsolute(String)
§ArtiDataDirectoryPathNotAbsolute(String)
§ArtiDataDirectoryCreationFailed(Error)
§ArtiDataDirectoryPathExistsAsFile(String)
§ArtiTomlFileCreationFailed(Error)
§ArtiTomlFileWriteFailed(Error)
§ArtiProcessStartFailed(Error)
§ArtiProcessStdoutTakeFailed()
§ArtiStdoutReadThreadSpawnFailed(Error)
Trait Implementations§
Source§impl Error for Error
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more1.0.0 · Source§fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations§
§impl Freeze for Error
§impl !RefUnwindSafe for Error
§impl Send for Error
§impl Sync for Error
§impl Unpin for Error
§impl !UnwindSafe for Error
Blanket Implementations§
Source§impl<T> Any for Twhere
+}Variants§
§ArtiBinPathNotAbsolute(String)
§ArtiDataDirectoryPathNotAbsolute(String)
§ArtiDataDirectoryCreationFailed(Error)
§ArtiDataDirectoryPathExistsAsFile(String)
§ArtiDataDirectorySetPermissionsFailed(Error)
§ArtiTomlFileCreationFailed(Error)
§ArtiTomlFileWriteFailed(Error)
§RpcTomlFileCreationFailed(Error)
§RpcTomlFileWriteFailed(Error)
§ArtiProcessStartFailed(Error)
§ArtiProcessStdoutTakeFailed()
§ArtiStdoutReadThreadSpawnFailed(Error)
Trait Implementations§
Source§impl Error for Error
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more1.0.0 · Source§fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations§
§impl Freeze for Error
§impl !RefUnwindSafe for Error
§impl Send for Error
§impl Sync for Error
§impl Unpin for Error
§impl !UnwindSafe for Error
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/arti_process/index.html b/crates/tor_interface/arti_process/index.html
index 8cbd3596..7434261a 100644
--- a/crates/tor_interface/arti_process/index.html
+++ b/crates/tor_interface/arti_process/index.html
@@ -1 +1 @@
-tor_interface::arti_process - Rust
\ No newline at end of file
+tor_interface::arti_process - Rust
\ No newline at end of file
diff --git a/crates/tor_interface/arti_tor_client/enum.ArtiTorClientConfig.html b/crates/tor_interface/arti_tor_client/enum.ArtiTorClientConfig.html
index 26f2a72c..96fc5421 100644
--- a/crates/tor_interface/arti_tor_client/enum.ArtiTorClientConfig.html
+++ b/crates/tor_interface/arti_tor_client/enum.ArtiTorClientConfig.html
@@ -1,4 +1,4 @@
-ArtiTorClientConfig in tor_interface::arti_tor_client - Rust pub enum ArtiTorClientConfig {
+ArtiTorClientConfig in tor_interface::arti_tor_client - Rust
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
Source§impl<T> DynClone for Twhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/arti_tor_client/enum.Error.html b/crates/tor_interface/arti_tor_client/enum.Error.html
index 6d6c872c..2f818e6c 100644
--- a/crates/tor_interface/arti_tor_client/enum.Error.html
+++ b/crates/tor_interface/arti_tor_client/enum.Error.html
@@ -1,4 +1,4 @@
-Error in tor_interface::arti_tor_client - Rust pub enum Error {
+Error in tor_interface::arti_tor_client - Rust
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/arti_tor_client/index.html b/crates/tor_interface/arti_tor_client/index.html
index 8c65cd2c..3394d125 100644
--- a/crates/tor_interface/arti_tor_client/index.html
+++ b/crates/tor_interface/arti_tor_client/index.html
@@ -1,2 +1,2 @@
-tor_interface::arti_tor_client - Rust Expand description
Implementation of an out-of-process arti
-based TorProvider
+tor_interface::arti_tor_client - Rust Expand description
Implementation of an out-of-process arti
-based TorProvider
Structs§
Enums§
ArtiTorClient
-specific error type
\ No newline at end of file
diff --git a/crates/tor_interface/arti_tor_client/struct.ArtiTorClient.html b/crates/tor_interface/arti_tor_client/struct.ArtiTorClient.html
index 4708f4aa..effa231b 100644
--- a/crates/tor_interface/arti_tor_client/struct.ArtiTorClient.html
+++ b/crates/tor_interface/arti_tor_client/struct.ArtiTorClient.html
@@ -1,20 +1,20 @@
-ArtiTorClient in tor_interface::arti_tor_client - Rust pub struct ArtiTorClient { /* private fields */ }
Implementations§
Source§impl ArtiTorClient
Sourcepub fn new(config: ArtiTorClientConfig) -> Result<Self, Error>
Trait Implementations§
Source§impl TorProvider for ArtiTorClient
Source§fn update(&mut self) -> Result<Vec<TorEvent>, Error>
Process and return TorEvent
s handled by this TorProvider
.Source§fn add_client_auth(
+ArtiTorClient in tor_interface::arti_tor_client - Rust pub struct ArtiTorClient { /* private fields */ }
Implementations§
Source§impl ArtiTorClient
Sourcepub fn new(config: ArtiTorClientConfig) -> Result<Self, Error>
Trait Implementations§
Source§impl TorProvider for ArtiTorClient
Source§fn update(&mut self) -> Result<Vec<TorEvent>, Error>
Process and return TorEvent
s handled by this TorProvider
.Source§fn add_client_auth(
&mut self,
_service_id: &V3OnionServiceId,
_client_auth: &X25519PrivateKey,
-) -> Result<(), Error>
Add v3 onion-service authorisation credentials, allowing this TorProvider
to connect to an onion-service whose service-descriptor is encrypted using the assocciated x25519 public key.Source§fn remove_client_auth(
+) -> Result<(), Error>
Add v3 onion-service authorisation credentials, allowing this TorProvider
to connect to an onion-service whose service-descriptor is encrypted using the assocciated x25519 public key.Source§fn remove_client_auth(
&mut self,
_service_id: &V3OnionServiceId,
-) -> Result<(), Error>
Remove a previously added client authorisation credential. This TorProvider
will be unable to connect to the onion-service associated with the removed credentail.Source§fn connect(
+) -> Result<(), Error>
Remove a previously added client authorisation credential. This TorProvider
will be unable to connect to the onion-service associated with the removed credentail.Source§fn connect(
&mut self,
target: TargetAddr,
circuit_token: Option<CircuitToken>,
-) -> Result<OnionStream, Error>
Anonymously connect to the address specified by target
over the Tor Network and return the associated OnionStream
. Read moreSource§fn listener(
+) -> Result<OnionStream, Error>
Anonymously connect to the address specified by target
over the Tor Network and return the associated OnionStream
. Read moreSource§fn listener(
&mut self,
_private_key: &Ed25519PrivateKey,
_virt_port: u16,
_authorized_clients: Option<&[X25519PublicKey]>,
-) -> Result<OnionListener, Error>
Anonymously start an onion-service and return the associated OnionListener
. Read moreSource§fn generate_token(&mut self) -> CircuitToken
Create a new CircuitToken
.Source§fn release_token(&mut self, token: CircuitToken)
Releaes a previously generated CircuitToken
.Auto Trait Implementations§
§impl !Freeze for ArtiTorClient
§impl RefUnwindSafe for ArtiTorClient
§impl Send for ArtiTorClient
§impl Sync for ArtiTorClient
§impl Unpin for ArtiTorClient
§impl UnwindSafe for ArtiTorClient
Blanket Implementations§
Source§impl<T> Any for Twhere
+) -> Result<OnionListener, Error>Anonymously start an onion-service and return the associated OnionListener
. Read moreSource§fn generate_token(&mut self) -> CircuitToken
Create a new CircuitToken
.Source§fn release_token(&mut self, token: CircuitToken)
Releaes a previously generated CircuitToken
.
Auto Trait Implementations§
§impl !Freeze for ArtiTorClient
§impl RefUnwindSafe for ArtiTorClient
§impl Send for ArtiTorClient
§impl Sync for ArtiTorClient
§impl Unpin for ArtiTorClient
§impl UnwindSafe for ArtiTorClient
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
diff --git a/crates/tor_interface/censorship_circumvention/enum.BridgeLineError.html b/crates/tor_interface/censorship_circumvention/enum.BridgeLineError.html
index f1f3f5d4..cd90ec5e 100644
--- a/crates/tor_interface/censorship_circumvention/enum.BridgeLineError.html
+++ b/crates/tor_interface/censorship_circumvention/enum.BridgeLineError.html
@@ -1,4 +1,4 @@
-BridgeLineError in tor_interface::censorship_circumvention - Rust pub enum BridgeLineError {
+BridgeLineError in tor_interface::censorship_circumvention - Rust
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/censorship_circumvention/enum.PluggableTransportConfigError.html b/crates/tor_interface/censorship_circumvention/enum.PluggableTransportConfigError.html
index f9452fd4..240a4264 100644
--- a/crates/tor_interface/censorship_circumvention/enum.PluggableTransportConfigError.html
+++ b/crates/tor_interface/censorship_circumvention/enum.PluggableTransportConfigError.html
@@ -1,4 +1,4 @@
-PluggableTransportConfigError in tor_interface::censorship_circumvention - Rust pub enum PluggableTransportConfigError {
+PluggableTransportConfigError in tor_interface::censorship_circumvention - Rust pub enum PluggableTransportConfigError {
TransportNameInvalid(String),
BinaryPathInvalid(String, String),
}
Expand description
Error returned on failure to construct a PluggableTransportConfig
@@ -16,13 +16,17 @@
T: ?Sized,Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/censorship_circumvention/struct.BridgeLine.html b/crates/tor_interface/censorship_circumvention/struct.BridgeLine.html
index f9f7eccb..21befadf 100644
--- a/crates/tor_interface/censorship_circumvention/struct.BridgeLine.html
+++ b/crates/tor_interface/censorship_circumvention/struct.BridgeLine.html
@@ -1,4 +1,4 @@
-BridgeLine in tor_interface::censorship_circumvention - Rust pub struct BridgeLine { /* private fields */ }
Expand description
Configuration for a bridge line to be used with a pluggable-transport
+BridgeLine in tor_interface::censorship_circumvention - Rust pub struct BridgeLine { /* private fields */ }
Expand description
Configuration for a bridge line to be used with a pluggable-transport
Implementations§
Source§impl BridgeLine
A BridgeLine
contains the information required to connect to a bridge through the means of a particular pluggable-transport (defined in a PluggableTransportConfi
). For more information, see:
- https://tb-manual.torproject.org/bridges/
@@ -28,13 +28,17 @@
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
Source§impl<T> DynClone for Twhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/censorship_circumvention/struct.PluggableTransportConfig.html b/crates/tor_interface/censorship_circumvention/struct.PluggableTransportConfig.html
index 64f145f0..c1bd745c 100644
--- a/crates/tor_interface/censorship_circumvention/struct.PluggableTransportConfig.html
+++ b/crates/tor_interface/censorship_circumvention/struct.PluggableTransportConfig.html
@@ -1,4 +1,4 @@
-PluggableTransportConfig in tor_interface::censorship_circumvention - Rust pub struct PluggableTransportConfig { /* private fields */ }
Expand description
Configuration for a pluggable-transport
+PluggableTransportConfig in tor_interface::censorship_circumvention - Rust pub struct PluggableTransportConfig { /* private fields */ }
Expand description
Configuration for a pluggable-transport
Implementations§
Source§impl PluggableTransportConfig
Configuration struct for a pluggable-transport which conforms to the v1.0 pluggable-transport specification
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
Source§impl<T> DynClone for Twhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/legacy_tor_client/enum.Error.html b/crates/tor_interface/legacy_tor_client/enum.Error.html
index 352718b9..61c0058e 100644
--- a/crates/tor_interface/legacy_tor_client/enum.Error.html
+++ b/crates/tor_interface/legacy_tor_client/enum.Error.html
@@ -1,4 +1,4 @@
-Error in tor_interface::legacy_tor_client - Rust pub enum Error {
+Error in tor_interface::legacy_tor_client - Rust
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/legacy_tor_client/enum.LegacyTorClientConfig.html b/crates/tor_interface/legacy_tor_client/enum.LegacyTorClientConfig.html
index 1f8493ba..9028d6cc 100644
--- a/crates/tor_interface/legacy_tor_client/enum.LegacyTorClientConfig.html
+++ b/crates/tor_interface/legacy_tor_client/enum.LegacyTorClientConfig.html
@@ -1,4 +1,4 @@
-LegacyTorClientConfig in tor_interface::legacy_tor_client - Rust pub enum LegacyTorClientConfig {
+LegacyTorClientConfig in tor_interface::legacy_tor_client - Rust
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
Source§impl<T> DynClone for Twhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/legacy_tor_client/struct.LegacyTorClient.html b/crates/tor_interface/legacy_tor_client/struct.LegacyTorClient.html
index fc184648..0f284a64 100644
--- a/crates/tor_interface/legacy_tor_client/struct.LegacyTorClient.html
+++ b/crates/tor_interface/legacy_tor_client/struct.LegacyTorClient.html
@@ -1,4 +1,4 @@
-LegacyTorClient in tor_interface::legacy_tor_client - Rust pub struct LegacyTorClient { /* private fields */ }
Expand description
A LegacyTorClient
implements the TorProvider
trait using a legacy c-tor daemon backend.
+LegacyTorClient in tor_interface::legacy_tor_client - Rust pub struct LegacyTorClient { /* private fields */ }
Expand description
A LegacyTorClient
implements the TorProvider
trait using a legacy c-tor daemon backend.
The tor process can either be launched and owned by LegacyTorClient
, or it can use an already running tor-daemon. When using an already runnng tor-daemon, the TorProvider::bootstrap()
automatically succeeds, presuming the connected tor-daemon has successfully bootstrapped.
The minimum supported c-tor is version 0.4.6.1.
Implementations§
Source§impl LegacyTorClient
Sourcepub fn new(config: LegacyTorClientConfig) -> Result<LegacyTorClient, Error>
Construct a new LegacyTorClient
from a LegacyTorClientConfig
.
@@ -31,13 +31,17 @@
T: ?Sized,Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
diff --git a/crates/tor_interface/legacy_tor_version/enum.Error.html b/crates/tor_interface/legacy_tor_version/enum.Error.html
index 1df5df1d..19464207 100644
--- a/crates/tor_interface/legacy_tor_version/enum.Error.html
+++ b/crates/tor_interface/legacy_tor_version/enum.Error.html
@@ -1,4 +1,4 @@
-Error in tor_interface::legacy_tor_version - Rust pub enum Error {
+Error in tor_interface::legacy_tor_version - Rust pub enum Error {
ParseError(String),
}
Expand description
LegacyTorVersion
-specific error type
Variants§
Trait Implementations§
Source§impl Error for Error
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more1.0.0 · Source§fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations§
§impl Freeze for Error
§impl RefUnwindSafe for Error
§impl Send for Error
§impl Sync for Error
§impl Unpin for Error
§impl UnwindSafe for Error
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/legacy_tor_version/struct.LegacyTorVersion.html b/crates/tor_interface/legacy_tor_version/struct.LegacyTorVersion.html
index 4e011b2d..4c1a94e5 100644
--- a/crates/tor_interface/legacy_tor_version/struct.LegacyTorVersion.html
+++ b/crates/tor_interface/legacy_tor_version/struct.LegacyTorVersion.html
@@ -1,4 +1,4 @@
-LegacyTorVersion in tor_interface::legacy_tor_version - Rust pub struct LegacyTorVersion { /* private fields */ }
Expand description
Type representing a legacy c-tor daemon’s version number. This version conforms c-tor’s version-spec.
+LegacyTorVersion in tor_interface::legacy_tor_version - Rust pub struct LegacyTorVersion { /* private fields */ }
Expand description
Type representing a legacy c-tor daemon’s version number. This version conforms c-tor’s version-spec.
Implementations§
Source§impl LegacyTorVersion
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
Source§impl<T> DynClone for Twhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/mock_tor_client/enum.Error.html b/crates/tor_interface/mock_tor_client/enum.Error.html
index 8bd0b5a3..10e96269 100644
--- a/crates/tor_interface/mock_tor_client/enum.Error.html
+++ b/crates/tor_interface/mock_tor_client/enum.Error.html
@@ -1,4 +1,4 @@
-Error in tor_interface::mock_tor_client - Rust pub enum Error {
+Error in tor_interface::mock_tor_client - Rust
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/mock_tor_client/struct.MockTorClient.html b/crates/tor_interface/mock_tor_client/struct.MockTorClient.html
index 5c282bf8..110c0d65 100644
--- a/crates/tor_interface/mock_tor_client/struct.MockTorClient.html
+++ b/crates/tor_interface/mock_tor_client/struct.MockTorClient.html
@@ -1,4 +1,4 @@
-MockTorClient in tor_interface::mock_tor_client - Rust pub struct MockTorClient { /* private fields */ }
Expand description
A mock TorProvider
implementation for testing.
+MockTorClient in tor_interface::mock_tor_client - Rust pub struct MockTorClient { /* private fields */ }
Expand description
A mock TorProvider
implementation for testing.
MockTorClient
implements the TorProvider
trait. It creates a fake, in-process Tor Network using local socekts and listeners. No actual traffic ever leaves the local host.
Mock onion-services can be created, connected to, and communiccated with. Connecting to clearnet targets always succeeds by connecting to single local endpoint, but will never send any traffic to connecting clients.
Implementations§
Source§impl MockTorClient
Sourcepub fn new() -> MockTorClient
Construt a new MockTorClient
.
@@ -30,13 +30,17 @@
T: ?Sized,Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
diff --git a/crates/tor_interface/proxy/enum.ProxyConfig.html b/crates/tor_interface/proxy/enum.ProxyConfig.html
index 32d77ca0..36706da1 100644
--- a/crates/tor_interface/proxy/enum.ProxyConfig.html
+++ b/crates/tor_interface/proxy/enum.ProxyConfig.html
@@ -1,4 +1,4 @@
-ProxyConfig in tor_interface::proxy - Rust pub enum ProxyConfig {
+ProxyConfig in tor_interface::proxy - Rust pub enum ProxyConfig {
Socks4(Socks4ProxyConfig),
Socks5(Socks5ProxyConfig),
Https(HttpsProxyConfig),
@@ -19,13 +19,17 @@
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
Source§impl<T> DynClone for Twhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/proxy/enum.ProxyConfigError.html b/crates/tor_interface/proxy/enum.ProxyConfigError.html
index 0ed51311..5ee2abf0 100644
--- a/crates/tor_interface/proxy/enum.ProxyConfigError.html
+++ b/crates/tor_interface/proxy/enum.ProxyConfigError.html
@@ -1,4 +1,4 @@
-ProxyConfigError in tor_interface::proxy - Rust pub enum ProxyConfigError {
+ProxyConfigError in tor_interface::proxy - Rust
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
diff --git a/crates/gosling/context/enum.Error.html b/crates/gosling/context/enum.Error.html
index b11d4bd1..cefc2342 100644
--- a/crates/gosling/context/enum.Error.html
+++ b/crates/gosling/context/enum.Error.html
@@ -1,4 +1,4 @@
-Error in gosling::context - Rust pub enum Error {
+Error in gosling::context - Rust pub enum Error {
InvalidArgument(String),
TorNotConnected(),
HandshakeHandleNotFound(HandshakeHandle),
@@ -36,13 +36,17 @@
T: ?Sized,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/gosling/context/struct.Context.html b/crates/gosling/context/struct.Context.html
index 2c3697e4..dc264e76 100644
--- a/crates/gosling/context/struct.Context.html
+++ b/crates/gosling/context/struct.Context.html
@@ -1,4 +1,4 @@
-Context in gosling::context - Rust pub struct Context { /* private fields */ }
Expand description
The gosling protocol implementation.
+Context in gosling::context - Rust pub struct Context { /* private fields */ }
Expand description
The gosling protocol implementation.
The Context
object provides various methods for starting and progressing identity and endpoint handshakes. The general usage pattern developers will follow is to construct a Context
object, connect to the Tor Network using Context::bootstrap()
, optionally start an identity or endpoint servers, and listen for and handle incoming identity and endpoint clients using Context::update()
and the various associated methods. Depending on the application’s requirements, the developer can also initiate identity and endpoint handshakes as necessary.
The Gosling Protocol specification can be found here:
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
diff --git a/crates/search-index.js b/crates/search-index.js
index 3247f111..a1242d8e 100644
--- a/crates/search-index.js
+++ b/crates/search-index.js
@@ -1,4 +1,4 @@
-var searchIndex = new Map(JSON.parse('[["gosling",{"t":"CFGPPPPPPPPPPGIPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","n":["context","Context","ContextEvent","EndpointClientError","EndpointClientHandshakeCompleted","EndpointClientHandshakeFailed","EndpointServerChannelRequestReceived","EndpointServerError","EndpointServerHandshakeCompleted","EndpointServerHandshakeFailed","EndpointServerHandshakeRejected","EndpointServerHandshakeStarted","EndpointServerPublished","Error","HandshakeHandle","HandshakeHandleNotFound","HonkRpc","IdentityClientChallengeReceived","IdentityClientError","IdentityClientHandshakeCompleted","IdentityClientHandshakeFailed","IdentityServerChallengeResponseReceived","IdentityServerEndpointRequestReceived","IdentityServerError","IdentityServerHandshakeCompleted","IdentityServerHandshakeFailed","IdentityServerHandshakeRejected","IdentityServerHandshakeStarted","IdentityServerPublished","IncorrectUsage","InvalidArgument","Io","TorBootstrapCompleted","TorBootstrapStatusReceived","TorCrypto","TorLogReceived","TorNotConnected","TorProvider","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","connect","endpoint_client_abort_handshake","endpoint_client_begin_handshake","endpoint_server_handle_channel_request_received","endpoint_server_start","endpoint_server_stop","fmt","","","from","","","","","","","generate_circuit_token","identity_client_abort_handshake","identity_client_begin_handshake","identity_client_handle_challenge_received","identity_server_handle_challenge_response_received","identity_server_handle_endpoint_request_received","identity_server_start","identity_server_stop","into","","","into_any","","","into_any_arc","","into_any_rc","","","new","release_circuit_token","report","source","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","vzip","","","challenge_response","challenge_response_valid","channel_name","","client_allowed","","client_auth_private_key","client_auth_public_key","client_auth_signature_valid","client_proof_signature_valid","","client_requested_channel_valid","client_requested_endpoint_valid","client_service_id","","","","endpoint_challenge","endpoint_name","","","endpoint_private_key","endpoint_service_id","","","","handle","","","","","","","","","","","","","","","","identity_service_id","line","progress","reason","","","","requested_channel","requested_endpoint","stream","","summary","tag"],"q":[[0,"gosling"],[1,"gosling::context"],[108,"gosling::context::ContextEvent"],[163,"core::any"],[164,"core::result"],[165,"tor_interface::tor_provider"],[166,"core::option"],[167,"tor_interface::tor_crypto"],[168,"alloc::string"],[169,"core::fmt"],[170,"honk_rpc::honk_rpc"],[171,"std::io::error"],[172,"bson::document"],[173,"alloc::boxed"],[174,"alloc::sync"],[175,"alloc::rc"],[176,"core::time"],[177,"tor_error::report"],[178,"core::error"],[179,"tor_persist::slug"],[180,"alloc::collections::vec_deque"]],"i":"```lBj00100000``11010000100000111001011h210210021021000000221022222100000000021021210210022202102120210210021EbEdEfEh2EjElEn55225F`1Fb5Fd43Ff4580715FhFj5<6;Fl;FnG`7<;Gb;GdGf7542:;EfEh22","f":"``````````````````````````````````````{b{{b{d}}}}00{{{b{f}}}{{b{fd}}}}00{{{b{fh}}}{{n{jl}}}}{b{{b{c}}}{}}00{{{b{f}}}{{b{fc}}}{}}00{{{b{fh}}A`{Ad{Ab}}}{{n{Afl}}}}{{{b{fh}}Ah}{{n{jl}}}}{{{b{fh}}AjAlAn}{{n{Ahl}}}}{{{b{fh}}AhB`}{{n{jl}}}}{{{b{fh}}BbAnAjBd}{{n{jl}}}}{{{b{fh}}Aj}{{n{jl}}}}{{{b{l}}{b{fBf}}}Bh}0{{{b{Bj}}{b{fBf}}}Bh}{cc{}}{Bll}{Bnl}2{C`l}{Cbl}4{{{b{fh}}}Ab}<{{{b{fh}}AjAn}{{n{Ahl}}}}{{{b{fh}}AhCd}{{n{jl}}}}<{{{b{fh}}AhB`B`Cd}{{n{jl}}}}{{{b{fh}}}{{n{jl}}}}0{{}c{}}00{{{Cf{c}}}{{Cf{d}}}{}}00{{{Ch{c}}}{{Ch{d}}}{}}0{{{Cj{c}}}{{Cj{d}}}{}}00{{{Cf{Cl}}CnCnD`Db{Ad{D`}}Bb}{{n{hl}}}}{{{b{fh}}Ab}j}{b{{Df{Dd}}}}{{{b{l}}}{{Ad{{b{Dh}}}}}}{bAn}{c{{n{e}}}{}{}}00{{}{{n{c}}}{}}00{b{{n{DjDl}}}}{{}{{n{c}}}{}}00{bDn}00{{{b{fh}}}{{n{{E`{Bj}}l}}}}{{}c{}}00```````````````````````````````````````````````````````","D":"Nl","p":[[1,"reference",null,null,1],[10,"Any",163],[0,"mut"],[5,"Context",1],[1,"unit"],[6,"Error",1],[6,"Result",164,null,1],[6,"TargetAddr",165],[8,"CircuitToken",165],[6,"Option",166,null,1],[5,"OnionStream",165],[8,"HandshakeHandle",1],[5,"V3OnionServiceId",167],[5,"X25519PrivateKey",167],[5,"String",168],[1,"bool"],[5,"Ed25519PrivateKey",167],[5,"X25519PublicKey",167],[5,"Formatter",169],[8,"Result",169],[6,"ContextEvent",1],[6,"Error",165],[6,"Error",167],[6,"Error",170],[5,"Error",171],[5,"Document",172],[5,"Box",173,null,1],[5,"Arc",174,null,1],[5,"Rc",175,null,1],[10,"TorProvider",165],[1,"u16"],[5,"Duration",176],[1,"i32"],[5,"ReportHelper",177],[5,"Report",177],[10,"Error",178],[5,"Slug",179],[6,"BadSlug",179],[5,"TypeId",163],[5,"VecDeque",180],[15,"IdentityServerChallengeResponseReceived",108],[15,"IdentityServerHandshakeRejected",108],[15,"EndpointClientHandshakeCompleted",108],[15,"EndpointServerHandshakeCompleted",108],[15,"EndpointServerHandshakeRejected",108],[15,"IdentityClientHandshakeCompleted",108],[15,"IdentityServerHandshakeCompleted",108],[15,"IdentityServerEndpointRequestReceived",108],[15,"EndpointServerChannelRequestReceived",108],[15,"IdentityClientChallengeReceived",108],[15,"EndpointServerPublished",108],[15,"IdentityClientHandshakeFailed",108],[15,"IdentityServerHandshakeStarted",108],[15,"IdentityServerHandshakeFailed",108],[15,"EndpointClientHandshakeFailed",108],[15,"EndpointServerHandshakeStarted",108],[15,"EndpointServerHandshakeFailed",108],[15,"TorLogReceived",108],[15,"TorBootstrapStatusReceived",108]],"r":[],"b":[[57,"impl-Debug-for-Error"],[58,"impl-Display-for-Error"],[61,"impl-From%3CError%3E-for-Error"],[62,"impl-From%3CError%3E-for-Error"],[64,"impl-From%3CError%3E-for-Error"],[65,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAC0ACAAnAAUALgAFADoAAgA+AAEAQQABAE8ABwBZAA8AagACAA==","P":[[45,"T"],[51,""],[60,"T"],[61,""],[63,"T"],[64,""],[66,"T"],[67,""],[75,"U"],[78,"T"],[86,""],[91,"U,T"],[94,"U"],[97,""],[98,"Target"],[101,""],[105,"V"]]}],["honk_rpc",{"t":"CKPPPPPSSGPGPPPPPPPPIPPPPGPPPPPPFPPPPPNNNNNNNNNNNNNNNMNNNNNNNNNHNNHHHNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNOOOOO","n":["honk_rpc","ApiSet","BsonDocumentParseFailed","BsonDocumentSizeTooLarge","BsonDocumentSizeTooSmall","BsonParseFailed","BsonWriteFailed","DEFAULT_MAX_MESSAGE_SIZE","DEFAULT_MAX_WAIT_TIME","Error","","ErrorCode","InvalidMaxMesageSize","MessageConversionFailed","MessageParseFailed","MessageReadTimedOut","MessageTooBig","MessageVersionIncompatible","Pending","ReaderReadFailed","RequestCookie","RequestCookieInvalid","RequestFunctionInvalid","RequestNamespaceInvalid","RequestVersionInvalid","Response","ResponseCookieInvalid","ResponseStateInvalid","Runtime","SectionIdUnknown","SectionParseFailed","SectionTooLarge","Session","Success","Unknown","UnknownErrorSectionReceived","WriterFlushFailed","WriterWriteFailed","borrow","","","","borrow_mut","","","","client_call","client_drain_responses","client_next_response","eq","equivalent","","","exec_function","fmt","","","","from","","","","","get_error_section_size","get_max_message_size","get_max_wait_time","get_message_overhead","get_request_section_size","get_response_section_size","into","","","","into_stream","namespace","new","next_result","set_max_message_size","set_max_wait_time","source","to_string","","try_from","","","","try_into","","","","type_id","","","","update","","vzip","","","","cookie","","","error_code","result"],"q":[[0,"honk_rpc"],[1,"honk_rpc::honk_rpc"],[100,"honk_rpc::honk_rpc::Response"],[105,"bson::document"],[106,"core::result"],[107,"std::io"],[108,"core::marker"],[109,"alloc::collections::vec_deque::drain"],[110,"core::option"],[111,"bson::bson"],[112,"core::fmt"],[113,"alloc::string"],[114,"core::time"],[115,"core::error"],[116,"core::any"]],"i":"``A`00B`1```Aj`22121102`1111`111112`012220f2310230002222Bd334421334`11```2134101011434213421342134012134ClCnD`01","f":"``````````````````````````````````````{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{{b{d{f{c}}}}{b{h}}{b{h}}jl}{{Ab{nA`}}}{AdAfAh}}{{{b{d{f{c}}}}}{{Al{Aj}}}{AdAfAh}}{{{b{d{f{c}}}}}{{An{Aj}}}{AdAfAh}}{{{b{B`}}{b{B`}}}Bb}{{b{b{c}}}Bb{}}00{{{b{dBd}}{b{h}}jl{An{n}}}{{An{{Ab{{An{Bf}}B`}}}}}}{{{b{B`}}{b{dBh}}}Bj}0{{{b{A`}}{b{dBh}}}Bj}0{cc{}}00{jB`}1{{{An{n}}{An{Bl}}{An{Bf}}}{{Ab{BnA`}}}}{{{b{{f{c}}}}}Bn{AdAfAh}}{{{b{{f{c}}}}}C`{AdAfAh}}{{}{{Ab{BnA`}}}}{{{An{n}}{An{Bl}}Bl{An{j}}{An{l}}}{{Ab{BnA`}}}}{{{An{Bf}}}{{Ab{BnA`}}}}{{}c{}}000{{{f{c}}}c{AdAfAh}}{{{b{Bd}}}{{b{h}}}}{c{{f{c}}}{AdAfAh}}{{{b{dBd}}}{{An{{Cb{n{Ab{{An{Bf}}B`}}}}}}}}{{{b{d{f{c}}}}j}{{Ab{CdA`}}}{AdAfAh}}{{{b{d{f{c}}}}C`}Cd{AdAfAh}}{{{b{A`}}}{{An{{b{Cf}}}}}}{bBl}0{c{{Ab{e}}}{}{}}000{{}{{Ab{c}}}{}}000{bCh}000{{{b{dBd}}}Cd}{{{b{d{f{c}}}}{An{{b{d{Cj{{b{dBd}}}}}}}}}{{Ab{CdA`}}}{AdAfAh}}{{}c{}}000`````","D":"Hj","p":[[1,"reference",null,null,1],[0,"mut"],[5,"Session",1],[1,"str"],[1,"i32"],[5,"Document",105],[8,"RequestCookie",1],[6,"Error",1],[6,"Result",106,null,1],[10,"Read",107],[10,"Write",107],[10,"Send",108],[6,"Response",1],[5,"Drain",109],[6,"Option",110,null,1],[6,"ErrorCode",1],[1,"bool"],[10,"ApiSet",1],[6,"Bson",111],[5,"Formatter",112],[8,"Result",112],[5,"String",113],[1,"usize"],[5,"Duration",114],[1,"tuple",null,null,1],[1,"unit"],[10,"Error",115],[5,"TypeId",116],[1,"slice"],[15,"Pending",100],[15,"Success",100],[15,"Error",100]],"r":[],"b":[[54,"impl-Debug-for-ErrorCode"],[55,"impl-Display-for-ErrorCode"],[56,"impl-Display-for-Error"],[57,"impl-Debug-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACQABwABAAAAJwAHADIAAwA3AAMAPgAAAFAADgBhAAMA","P":[[38,"T"],[46,"RW"],[49,""],[50,"K"],[53,""],[58,"T"],[61,""],[62,"T"],[63,""],[64,"RW"],[66,""],[69,"U"],[73,"RW"],[74,""],[75,"RW"],[76,""],[77,"RW"],[79,""],[82,"U,T"],[86,"U"],[90,""],[95,"RW"],[96,"V"]]}],["tor_interface",{"t":"CCCCCCCCCCPPPPFGPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPPPPGPNNNNNNNNNNNNNNNNNNNNPPPPFGPPGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOPPPPFGPPPFGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPGPPPFGPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOGFPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPGFPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPFGGPFPFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPSSSSSSSFFFGPPPGFSSFFSSSSSSPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPIPFGPPGFFPPFPPGGKPNNNNNMNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNOOOOO","n":["arti_client_tor_client","arti_process","arti_tor_client","censorship_circumvention","legacy_tor_client","legacy_tor_version","mock_tor_client","proxy","tor_crypto","tor_provider","ArtiClientConfigBuilderError","ArtiClientError","ArtiClientOnionServiceLaunchError","ArtiClientTorAddrError","ArtiClientTorClient","Error","NotImplemented","OnionServiceConfigBuilderError","TcpListenerAcceptFailed","TcpListenerBindFailed","TcpListenerLocalAddrFailed","TcpStreamConnectFailed","TcpStreamIntoFailed","TorKeyMgrError","add_client_auth","as_any","","as_any_mut","","bootstrap","borrow","","borrow_mut","","connect","fmt","","from","","generate_token","into","","into_any","","into_any_arc","","into_any_rc","","listener","new","release_token","remove_client_auth","report","source","to_string","try_from","","try_into","","try_into_slug","try_octets_into","","type_id","","update","vzip","","ArtiBinPathNotAbsolute","ArtiDataDirectoryCreationFailed","ArtiDataDirectoryPathExistsAsFile","ArtiDataDirectoryPathNotAbsolute","ArtiProcessStartFailed","ArtiProcessStdoutTakeFailed","ArtiStdoutReadThreadSpawnFailed","ArtiTomlFileCreationFailed","ArtiTomlFileWriteFailed","Error","NotImplemented","as_any","as_any_mut","borrow","borrow_mut","fmt","","from","into","into_any","into_any_arc","into_any_rc","report","source","to_string","try_from","try_into","try_into_slug","try_octets_into","type_id","vzip","ArtiNotBootstrapped","ArtiOpenStreamFailed","ArtiProcessCreationFailed","ArtiRpcConnectFailed","ArtiTorClient","ArtiTorClientConfig","BundledArti","CircuitTokenInvalid","Error","NotImplemented","SystemArti","__clone_box","add_client_auth","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","connect","fmt","","","from","","","generate_token","into","","","into_any","","","into_any_arc","","","into_any_rc","","","listener","new","release_token","remove_client_auth","report","source","to_owned","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","vzip","","","arti_bin_path","data_directory","AddressMissing","AddressParseFailed","AddressPortInvalid","BinaryPathInvalid","BridgeLine","BridgeLineError","FingerprintInvalid","FingerprintMissing","KeyValueInvalid","PluggableTransportConfig","PluggableTransportConfigError","TransportMissing","TransportNameInvalid","","__clone_box","","add_option","address","as_any","","","","as_any_mut","","","","as_legacy_tor_setconf_value","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fingerprint","fmt","","","","","","from","","","","from_str","into","","","","into_any","","","","into_any_arc","","","","into_any_rc","","","","keyvalues","new","","options","path_to_binary","report","","to_owned","","to_string","","transport","transports","try_from","","","","try_into","","","","try_into_slug","","try_octets_into","","","","type_id","","","","vzip","","","","AddOnionFailed","BridgeTransportNotSupported","BridgeTransportTypeMultiplyDefined","BundledTor","CircuitTokenInvalid","DelOnionFailed","Error","GetInfoNetListenersSocksFailed","GetInfoVersionFailed","LegacyControlStreamCreationFailed","LegacyTorClient","LegacyTorClientConfig","LegacyTorControllerCreationFailed","LegacyTorNotBootstrapped","LegacyTorProcessAuthenticationFailed","LegacyTorProcessCreationFailed","LegacyTorProcessTooOld","NoSocksListenersFound","NotImplemented","OnionClientAuthAddFailed","OnionClientAuthRemoveFailed","PluggableTransportBinaryNameNotUtf8Representnable","PluggableTransportConfigDirectoryCreationFailed","PluggableTransportConfigError","PluggableTransportDirectoryNameCollision","PluggableTransportSymlinkCreationFailed","PluggableTransportSymlinkRemovalFailed","SetConfDisableNetwork0Failed","SetConfFailed","SetEventsFailed","Socks5ConnectionFailed","SystemTor","TcpListenerBindFailed","TcpListenerLocalAddrFailed","WaitAsyncEventsFailed","__clone_box","add_client_auth","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","connect","fmt","","","from","","","generate_token","into","","","into_any","","","into_any_arc","","","into_any_rc","","","listener","new","release_token","remove_client_auth","report","source","to_owned","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","version","vzip","","","allowed_ports","bridge_lines","data_directory","pluggable_transports","proxy_settings","tor_bin_path","tor_control_addr","tor_control_passwd","tor_socks_addr","Error","LegacyTorVersion","ParseError","__clone_box","as_any","","as_any_mut","","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","eq","fmt","","from","","from_str","into","","into_any","","into_any_arc","","into_any_rc","","new","partial_cmp","report","to_owned","to_string","","try_from","","try_into","","try_into_slug","","try_octets_into","","type_id","","vzip","","ClientAlreadyBootstrapped","ClientNotBootstrapped","ConnectFailed","Error","MockTorClient","NotImplemented","OnionServiceAuthInvalid","OnionServiceNotFound","OnionServiceNotPublished","OnionServiceRequiresOnionAuth","TcpListenerBindFailed","TcpListenerLocalAddrFailed","add_client_auth","as_any","","as_any_mut","","bootstrap","borrow","","borrow_mut","","connect","default","drop","fmt","","from","","generate_token","into","","into_any","","into_any_arc","","into_any_rc","","listener","new","release_token","remove_client_auth","report","source","to_string","try_from","","try_into","","try_into_slug","try_octets_into","","type_id","","update","vzip","","Generic","Https","HttpsProxyConfig","ProxyConfig","ProxyConfigError","Socks4","Socks4ProxyConfig","Socks5","Socks5ProxyConfig","__clone_box","","","","as_any","","","","","as_any_mut","","","","","borrow","","","","","borrow_mut","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","fmt","","","","","","from","","","","","","","","into","","","","","into_any","","","","","into_any_arc","","","","","into_any_rc","","","","","new","","","report","to_owned","","","","to_string","try_from","","","","","try_into","","","","","try_into_slug","try_octets_into","","","","","type_id","","","","","vzip","","","","","ConversionError","ED25519_PRIVATE_KEYBLOB_BASE64_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_HEADER_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_SIZE","ED25519_PRIVATE_KEY_SIZE","ED25519_PUBLIC_KEY_SIZE","ED25519_SIGNATURE_SIZE","Ed25519PrivateKey","Ed25519PublicKey","Ed25519Signature","Error","KeyInvalid","One","ParseError","SignBit","V3OnionServiceId","V3_ONION_SERVICE_ID_STRING_LENGTH","V3_ONION_SERVICE_ID_STRING_SIZE","X25519PrivateKey","X25519PublicKey","X25519_PRIVATE_KEY_BASE64_LENGTH","X25519_PRIVATE_KEY_BASE64_SIZE","X25519_PRIVATE_KEY_SIZE","X25519_PUBLIC_KEY_BASE32_LENGTH","X25519_PUBLIC_KEY_BASE32_SIZE","X25519_PUBLIC_KEY_SIZE","Zero","__clone_box","","","","","","","as_any","","","","","","","","as_any_mut","","","","","","","","as_bytes","","","borrow","","","","","","","","borrow_mut","","","","","","","","clone","","","","","","","clone_into","","","","","","","clone_to_uninit","","","","","","","cmp","compare","eq","","","","","","equivalent","","","","","","fmt","","","","","","","","","from","","","","","","","","","from_base32","from_base64","from_key_blob","from_private_key","","","from_private_x25519","from_public_key","from_raw","","","","","from_service_id","from_string","generate","","hash","","into","","","","","","","","into_any","","","","","","","","into_any_arc","","","","","","","","into_any_rc","","","","","","","","is_valid","partial_cmp","report","sign_message","","to_base32","to_base64","to_bytes","","","to_key_blob","to_owned","","","","","","","to_string","","try_from","","","","","","","","try_into","","","","","","","","try_into_slug","","try_octets_into","","","","","","","","type_id","","","","","","","","verify","verify_x25519","vzip","","","","","","","","BootstrapComplete","BootstrapStatus","CircuitToken","Domain","DomainAddr","Error","Generic","LogReceived","OnionAddr","OnionAddrV3","OnionListener","OnionService","OnionServicePublished","OnionStream","ParseFailure","Socket","TargetAddr","TorEvent","TorProvider","V3","__clone_box","","","","accept","add_client_auth","as_any","","","","","","","","as_any_mut","","","","","","","","bootstrap","borrow","","","","","","","","borrow_mut","","","","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","cmp","","","compare","","","connect","deref","deref_mut","domain","drop","eq","","","equivalent","","","","","","","","","flush","fmt","","","","","","","","","","","","from","","","","","","","","","","","","","from_str","","","generate_token","hash","","","into","","","","","","","","into_any","","","","","","","","into_any_arc","","","","","","","into_any_rc","","","","","","","","listener","local_addr","new","partial_cmp","","","peer_addr","port","read","release_token","remove_client_auth","report","service_id","set_nonblocking","to_owned","","","","to_string","","","","","try_clone","try_from","","","","","","","","","try_into","","","","","","","","try_into_slug","","","","","try_octets_into","","","","","","","","type_id","","","","","","","","update","virt_port","vzip","","","","","","","","write","","line","progress","service_id","summary","tag"],"q":[[0,"tor_interface"],[10,"tor_interface::arti_client_tor_client"],[67,"tor_interface::arti_process"],[98,"tor_interface::arti_tor_client"],[172,"tor_interface::arti_tor_client::ArtiTorClientConfig"],[174,"tor_interface::censorship_circumvention"],[278,"tor_interface::legacy_tor_client"],[377,"tor_interface::legacy_tor_client::LegacyTorClientConfig"],[386,"tor_interface::legacy_tor_version"],[433,"tor_interface::mock_tor_client"],[490,"tor_interface::proxy"],[604,"tor_interface::tor_crypto"],[842,"tor_interface::tor_provider"],[1074,"tor_interface::tor_provider::TorEvent"],[1079,"core::result"],[1080,"core::any"],[1081,"core::option"],[1082,"core::fmt"],[1083,"alloc::boxed"],[1084,"alloc::sync"],[1085,"alloc::rc"],[1086,"tokio::runtime::runtime"],[1087,"std::path"],[1088,"tor_error::report"],[1089,"core::error"],[1090,"alloc::string"],[1091,"tor_persist::slug"],[1092,"alloc::vec"],[1093,"dyn_clone::sealed"],[1094,"core::net::socket_addr"],[1095,"core::cmp"],[1096,"core::hash"],[1097,"std::io::error"],[1098,"der::error"]],"i":"``````````Al000``00000000d010100101011010010101010000111010110101001Dh00000000`000000000000000000000Eb000``Dn1`100Dl0210210021021111022102100210210210210000221202102120210210021Il0El00Ej``111``101EdEf1012031203012031203101010012203312030120312031203120301011231023011203120323120312031203Fh00Ff11`111``111111111111111111101110Fd02102100210211110221021002102102102100002212021021202102100021In00000J`00``FnFj1010101000001110010101010001010101010101010Gf00``0000000Gd01010010100011010010101010000111010110101001H`Gn```0`0`GhGjGl342103421034210342103210321032103442103421033334210342103421034210321042103442103421034421034210342103Hj```````````0Hh1````````````0BhHbHfjBlh657432106574321064105743210657432106543210654321065432106005432101110005774321005743210661254105054321405210574321065743210657432106574321060075212532554321067057432106574321067057432106574321063357432106Dd0`Ad``n2```12`01```IdIb1If4C`I`1534267Aj264537801264537802645378045374537453745345310032453444555333066445533778026666645377805371453264537802645378064537802645378010445303011642453764537026453378026453780645372645378026453780142645378000JbJdJf11","f":"````````````````````````{{{f{bd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{{{f{bd}}}{{A`{ln}}}}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{bd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Al}}{f{bAn}}}B`}0{cc{}}0{{{f{bd}}}Af}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}0{{{f{bd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{{{Bd{Cb}}{f{Cd}}}{{A`{dAl}}}}{{{f{bd}}Af}l}{{{f{bd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Al}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0{fDb}0{{{f{bd}}}{{A`{{Df{Dd}}n}}}}{{}c{}}0```````````{f{{f{Ab}}}}{{{f{b}}}{{f{bAb}}}}{f{{f{c}}}{}}{{{f{b}}}{{f{bc}}}{}}{{{f{Dh}}{f{bAn}}}B`}0{cc{}}{{}c{}}{{{Bb{c}}}{{Bb{Ab}}}{}}{{{Bd{c}}}{{Bd{Ab}}}{}}{{{Bf{c}}}{{Bf{Ab}}}{}}{f{{Ch{Cf}}}}{{{f{Dh}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}{{}{{A`{c}}}{}}{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}{fDb}{{}c{}}```````````{{fDj}l}{{{f{bDl}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}00{{{f{b}}}{{f{bAb}}}}00{{{f{bDl}}}{{A`{ln}}}}{f{{f{c}}}{}}00{{{f{b}}}{{f{bc}}}{}}00{{{f{Dn}}}Dn}{{f{f{bc}}}l{}}{{fE`}l}{{{f{bDl}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Eb}}{f{bAn}}}B`}0{{{f{Dn}}{f{bAn}}}B`}{cc{}}00{{{f{bDl}}}Af}{{}c{}}00{{{Bb{c}}}{{Bb{Ab}}}{}}00{{{Bd{c}}}{{Bd{Ab}}}{}}00{{{Bf{c}}}{{Bf{Ab}}}{}}00{{{f{bDl}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{Dn{{A`{Dln}}}}{{{f{bDl}}Af}l}{{{f{bDl}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Eb}}}{{Ah{{f{Cj}}}}}}{fc{}}{fCl}{c{{A`{e}}}{}{}}00{{}{{A`{c}}}{}}00{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}00{fDb}00{{{f{bDl}}}{{A`{{Df{Dd}}n}}}}{{}c{}}00````````````````{{fDj}l}0{{{f{bEd}}Cl}l}{{{f{Ef}}}{{f{Eh}}}}{f{{f{Ab}}}}000{{{f{b}}}{{f{bAb}}}}000{{{f{Ef}}}Cl}{f{{f{c}}}{}}000{{{f{b}}}{{f{bc}}}{}}000{{{f{Ed}}}Ed}{{{f{Ef}}}Ef}{{f{f{bc}}}l{}}0{{fE`}l}0{{{f{Ef}}}{{f{Cl}}}}{{{f{Ed}}{f{bAn}}}B`}{{{f{Ej}}{f{bAn}}}B`}0{{{f{Ef}}{f{bAn}}}B`}{{{f{El}}{f{bAn}}}B`}0{cc{}}000{{{f{En}}}{{A`{Efc}}}{}}{{}c{}}000{{{Bb{c}}}{{Bb{Ab}}}{}}000{{{Bd{c}}}{{Bd{Ab}}}{}}000{{{Bf{c}}}{{Bf{Ab}}}{}}000{{{f{Ef}}}{{f{{Df{{F`{ClCl}}}}}}}}{{{Df{Cl}}Fb}{{A`{EdEj}}}}{{ClEhCl{Df{{F`{ClCl}}}}}{{A`{EfEl}}}}{{{f{Ed}}}{{f{{Df{Cl}}}}}}{{{f{Ed}}}{{f{Fb}}}}{f{{Ch{Cf}}}}0{fc{}}0{fCl}0{{{f{Ef}}}{{f{Cl}}}}5{c{{A`{e}}}{}{}}000{{}{{A`{c}}}{}}000{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}000{fDb}000{{}c{}}000```````````````````````````````````{{fDj}l}{{{f{bFd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}00{{{f{b}}}{{f{bAb}}}}00{{{f{bFd}}}{{A`{ln}}}}{f{{f{c}}}{}}00{{{f{b}}}{{f{bc}}}{}}00{{{f{Ff}}}Ff}{{f{f{bc}}}l{}}{{fE`}l}{{{f{bFd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Fh}}{f{bAn}}}B`}0{{{f{Ff}}{f{bAn}}}B`}{cc{}}00{{{f{bFd}}}Af}{{}c{}}00{{{Bb{c}}}{{Bb{Ab}}}{}}00{{{Bd{c}}}{{Bd{Ab}}}{}}00{{{Bf{c}}}{{Bf{Ab}}}{}}00{{{f{bFd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{Ff{{A`{FdFh}}}}{{{f{bFd}}Af}l}{{{f{bFd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Fh}}}{{Ah{{f{Cj}}}}}}{fc{}}{fCl}{c{{A`{e}}}{}{}}00{{}{{A`{c}}}{}}00{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}00{fDb}00{{{f{bFd}}}{{A`{{Df{Dd}}n}}}}{{{f{bFd}}}Fj}{{}c{}}00````````````{{fDj}l}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{Fj}}}Fj}{{f{f{bc}}}l{}}{{fE`}l}{{{f{Fj}}{f{Fj}}}Fl}{{{f{Fn}}{f{bAn}}}B`}0{cc{}}0{{{f{En}}}{{A`{Fjc}}}{}}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}0{{G`G`G`{Ah{G`}}{Ah{{f{En}}}}}{{A`{FjFn}}}}{{{f{Fj}}{f{Fj}}}{{Ah{Gb}}}}{f{{Ch{Cf}}}}{fc{}}{fCl}{{{f{Fj}}}Cl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}0{fDb}0{{}c{}}0````````````{{{f{bGd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{{{f{bGd}}}{{A`{ln}}}}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{bGd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{}Gd}{{{f{bGd}}}l}{{{f{Gf}}{f{bAn}}}B`}0{cc{}}0{{{f{bGd}}}Af}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}0{{{f{bGd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}9{{{f{bGd}}Af}l}{{{f{bGd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Gf}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0{fDb}0{{{f{bGd}}}{{A`{{Df{Dd}}n}}}}{{}c{}}0`````````{{fDj}l}000{f{{f{Ab}}}}0000{{{f{b}}}{{f{bAb}}}}0000{f{{f{c}}}{}}0000{{{f{b}}}{{f{bc}}}{}}0000{{{f{Gh}}}Gh}{{{f{Gj}}}Gj}{{{f{Gl}}}Gl}{{{f{Gn}}}Gn}{{f{f{bc}}}l{}}000{{fE`}l}000{{{f{H`}}{f{bAn}}}B`}0{{{f{Gh}}{f{bAn}}}B`}{{{f{Gj}}{f{bAn}}}B`}{{{f{Gl}}{f{bAn}}}B`}{{{f{Gn}}{f{bAn}}}B`}{cc{}}000{GhGn}{GjGn}2{GlGn}{{}c{}}0000{{{Bb{c}}}{{Bb{Ab}}}{}}0000{{{Bd{c}}}{{Bd{Ab}}}{}}0000{{{Bf{c}}}{{Bf{Ab}}}{}}0000{Ad{{A`{GhH`}}}}{{Ad{Ah{Cl}}{Ah{Cl}}}{{A`{GjH`}}}}{{Ad{Ah{Cl}}{Ah{Cl}}}{{A`{GlH`}}}}{f{{Ch{Cf}}}}{fc{}}000{fCl}{c{{A`{e}}}{}{}}0000{{}{{A`{c}}}{}}0000{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0000{fDb}0000{{}c{}}0000````````````````````````````{{fDj}l}000000{f{{f{Ab}}}}0000000{{{f{b}}}{{f{bAb}}}}0000000{{{f{Hb}}}{{f{{Hd{E`}}}}}}{{{f{Bl}}}{{f{{Hd{E`}}}}}}{{{f{h}}}{{f{{Hd{E`}}}}}}{f{{f{c}}}{}}0000000{{{f{b}}}{{f{bc}}}{}}0000000{{{f{Bh}}}Bh}{{{f{Hb}}}Hb}{{{f{Hf}}}Hf}{{{f{j}}}j}{{{f{Bl}}}Bl}{{{f{h}}}h}{{{f{Hh}}}Hh}{{f{f{bc}}}l{}}000000{{fE`}l}000000{{{f{h}}{f{h}}}Gb}{{f{f{c}}}Gb{}}{{{f{Bh}}{f{Bh}}}Fl}{{{f{Hb}}{f{Hb}}}Fl}{{{f{Hf}}{f{Hf}}}Fl}{{{f{j}}{f{j}}}Fl}{{{f{Bl}}{f{Bl}}}Fl}{{{f{h}}{f{h}}}Fl}{{f{f{c}}}Fl{}}00000{{{f{Bh}}{f{bAn}}}B`}{{{f{Hj}}{f{bAn}}}B`}0{{{f{Hb}}{f{bAn}}}B`}{{{f{Hf}}{f{bAn}}}B`}{{{f{j}}{f{bAn}}}B`}{{{f{Bl}}{f{bAn}}}B`}{{{f{h}}{f{bAn}}}B`}0{cc{}}0000000{FlHh}{{{f{En}}}{{A`{BlHj}}}}{{{f{En}}}{{A`{jHj}}}}{{{f{En}}}{{A`{BhHj}}}}{{{f{Bh}}}Hb}{{{f{j}}}Bl}{{{f{Bh}}}h}{{{f{j}}}{{A`{{F`{BhHh}}Hj}}}}{{{f{Hb}}}h}{{{f{{Hd{E`}}}}}{{A`{BhHj}}}}{{{f{{Hd{E`}}}}}{{A`{HbHj}}}}{{{f{{Hd{E`}}}}}{{A`{HfHj}}}}{{{f{{Hd{E`}}}}}{{A`{jHj}}}}{{{f{{Hd{E`}}}}}Bl}{{{f{h}}}{{A`{HbHj}}}}{{{f{En}}}{{A`{hHj}}}}{{}Bh}{{}j}{{{f{Bl}}{f{bc}}}lHl}{{{f{h}}{f{bc}}}lHl}{{}c{}}0000000{{{Bb{c}}}{{Bb{Ab}}}{}}0000000{{{Bd{c}}}{{Bd{Ab}}}{}}0000000{{{Bf{c}}}{{Bf{Ab}}}{}}0000000{{{f{En}}}Fl}{{{f{h}}{f{h}}}{{Ah{Gb}}}}{f{{Ch{Cf}}}}{{{f{Bh}}{f{{Bn{E`}}}}}Hf}{{{f{j}}{f{{Bn{E`}}}}}{{A`{{F`{HfHh}}Hj}}}}{{{f{Bl}}}Cl}{{{f{j}}}Cl}{{{f{Bh}}}{{Hd{E`}}}}{{{f{Hf}}}{{Hd{E`}}}}{{{f{j}}}{{Hd{E`}}}}{{{f{Bh}}}Cl}{fc{}}000000{fCl}0{c{{A`{e}}}{}{}}0000000{{}{{A`{c}}}{}}0000000{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}0000000{fDb}0000000{{{f{Hf}}{f{{Bn{E`}}}}{f{Hb}}}Fl}{{{f{Hf}}{f{{Bn{E`}}}}{f{Bl}}Hh}Fl}{{}c{}}0000000````````````````````{{fDj}l}000{{{f{C`}}}{{A`{{Ah{Aj}}Hn}}}}{{{f{bI`}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0000000{{{f{b}}}{{f{bAb}}}}0000000{{{f{bI`}}}{{A`{ln}}}}{f{{f{c}}}{}}0000000{{{f{b}}}{{f{bc}}}{}}0000000{{{f{Ib}}}Ib}{{{f{Id}}}Id}{{{f{If}}}If}{{{f{Ad}}}Ad}{{f{f{bc}}}l{}}000{{fE`}l}000{{{f{Ib}}{f{Ib}}}Gb}{{{f{Id}}{f{Id}}}Gb}{{{f{If}}{f{If}}}Gb}{{f{f{c}}}Gb{}}00{{{f{bI`}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Aj}}}{{f{c}}}{}}{{{f{bAj}}}{{f{bc}}}{}}{{{f{If}}}{{f{En}}}}{{{f{bC`}}}l}{{{f{Ib}}{f{Ib}}}Fl}{{{f{Id}}{f{Id}}}Fl}{{{f{If}}{f{If}}}Fl}{{f{f{c}}}Fl{}}00000000{{{f{bAj}}}{{A`{lHn}}}}{{{f{n}}{f{bAn}}}B`}0{{{f{Ib}}{f{bAn}}}B`}0{{{f{Id}}{f{bAn}}}B`}0{{{f{If}}{f{bAn}}}B`}0{{{f{Ad}}{f{bAn}}}B`}0{{{f{Dd}}{f{bAn}}}B`}{{{f{Aj}}{f{bAn}}}B`}{cc{}}{Ebn}{Aln}{Fhn}{Gfn}44444{{{F`{hBj}}}Ad}55{{{f{En}}}{{A`{Idc}}}{}}{{{f{En}}}{{A`{Ifc}}}{}}{{{f{En}}}{{A`{Adc}}}{}}{{{f{bI`}}}Af}{{{f{Ib}}{f{bc}}}lHl}{{{f{Id}}{f{bc}}}lHl}{{{f{If}}{f{bc}}}lHl}{{}c{}}0000000{{{Bb{c}}}{{Bb{Ab}}}{}}0000000{{{Bd{c}}}{{Bd{Ab}}}{}}000000{{{Bf{c}}}{{Bf{Ab}}}{}}0000000{{{f{bI`}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{{{f{Aj}}}{{Ah{Id}}}}{{hBj}Ib}{{{f{Ib}}{f{Ib}}}{{Ah{Gb}}}}{{{f{Id}}{f{Id}}}{{Ah{Gb}}}}{{{f{If}}{f{If}}}{{Ah{Gb}}}}{{{f{Aj}}}{{Ah{Ad}}}}{{{f{If}}}Bj}{{{f{bAj}}{f{b{Bn{E`}}}}}{{A`{IhHn}}}}{{{f{bI`}}Af}l}{{{f{bI`}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Ib}}}{{f{h}}}}{{{f{C`}}Fl}{{A`{lHn}}}}{fc{}}000{fCl}0000{{{f{Aj}}}{{A`{AjHn}}}}{c{{A`{e}}}{}{}}0000{{{F`{ClBj}}}{{A`{Ifc}}}{}}111{{}{{A`{c}}}{}}0000000{f{{A`{CnD`}}}}0000{{}{{A`{c}}}{}}0000000{fDb}0000000{{{f{bI`}}}{{A`{{Df{Dd}}n}}}}{{{f{Ib}}}Bj}{{}c{}}0000000{{{f{b}}{f{{Bn{E`}}}}}{{A`{lIj}}}}{{{f{bAj}}{f{{Bn{E`}}}}}{{A`{IhHn}}}}`````","D":"AMh","p":[[0,"mut"],[5,"ArtiClientTorClient",10],[1,"reference",null,null,1],[5,"V3OnionServiceId",604],[5,"X25519PrivateKey",604],[1,"unit"],[6,"Error",842],[6,"Result",1079,null,1],[10,"Any",1080],[6,"TargetAddr",842],[8,"CircuitToken",842],[6,"Option",1081,null,1],[5,"OnionStream",842],[6,"Error",10],[5,"Formatter",1082],[8,"Result",1082],[5,"Box",1083,null,1],[5,"Arc",1084,null,1],[5,"Rc",1085,null,1],[5,"Ed25519PrivateKey",604],[1,"u16"],[5,"X25519PublicKey",604],[1,"slice"],[5,"OnionListener",842],[5,"Runtime",1086],[5,"Path",1087],[5,"ReportHelper",1088],[5,"Report",1088],[10,"Error",1089],[5,"String",1090],[5,"Slug",1091],[6,"BadSlug",1091],[5,"TypeId",1080],[6,"TorEvent",842],[5,"Vec",1092],[6,"Error",67],[5,"Private",1093],[5,"ArtiTorClient",98],[6,"ArtiTorClientConfig",98],[1,"u8"],[6,"Error",98],[5,"PluggableTransportConfig",174],[5,"BridgeLine",174],[6,"SocketAddr",1094],[6,"PluggableTransportConfigError",174],[6,"BridgeLineError",174],[1,"str"],[1,"tuple",null,null,1],[5,"PathBuf",1087],[5,"LegacyTorClient",278],[6,"LegacyTorClientConfig",278],[6,"Error",278],[5,"LegacyTorVersion",386],[1,"bool"],[6,"Error",386],[1,"u32"],[6,"Ordering",1095],[5,"MockTorClient",433],[6,"Error",433],[5,"Socks4ProxyConfig",490],[5,"Socks5ProxyConfig",490],[5,"HttpsProxyConfig",490],[6,"ProxyConfig",490],[6,"ProxyConfigError",490],[5,"Ed25519PublicKey",604],[1,"array"],[5,"Ed25519Signature",604],[6,"SignBit",604],[6,"Error",604],[10,"Hasher",1096],[5,"Error",1097],[10,"TorProvider",842],[5,"OnionAddrV3",842],[6,"OnionAddr",842],[5,"DomainAddr",842],[1,"usize"],[5,"Error",1098],[15,"BundledArti",172],[15,"BundledTor",377],[15,"SystemTor",377],[15,"LogReceived",1074],[15,"BootstrapStatus",1074],[15,"OnionServicePublished",1074]],"r":[],"b":[[35,"impl-Debug-for-Error"],[36,"impl-Display-for-Error"],[82,"impl-Display-for-Error"],[83,"impl-Debug-for-Error"],[128,"impl-Display-for-Error"],[129,"impl-Debug-for-Error"],[217,"impl-Debug-for-PluggableTransportConfigError"],[218,"impl-Display-for-PluggableTransportConfigError"],[220,"impl-Display-for-BridgeLineError"],[221,"impl-Debug-for-BridgeLineError"],[332,"impl-Debug-for-Error"],[333,"impl-Display-for-Error"],[402,"impl-Display-for-Error"],[403,"impl-Debug-for-Error"],[458,"impl-Display-for-Error"],[459,"impl-Debug-for-Error"],[535,"impl-Debug-for-ProxyConfigError"],[536,"impl-Display-for-ProxyConfigError"],[545,"impl-From%3CSocks4ProxyConfig%3E-for-ProxyConfig"],[546,"impl-From%3CSocks5ProxyConfig%3E-for-ProxyConfig"],[548,"impl-From%3CHttpsProxyConfig%3E-for-ProxyConfig"],[710,"impl-Debug-for-Error"],[711,"impl-Display-for-Error"],[716,"impl-Debug-for-V3OnionServiceId"],[717,"impl-Display-for-V3OnionServiceId"],[937,"impl-Display-for-Error"],[938,"impl-Debug-for-Error"],[939,"impl-Debug-for-OnionAddrV3"],[940,"impl-Display-for-OnionAddrV3"],[941,"impl-Debug-for-OnionAddr"],[942,"impl-Display-for-OnionAddr"],[943,"impl-Display-for-DomainAddr"],[944,"impl-Debug-for-DomainAddr"],[945,"impl-Display-for-TargetAddr"],[946,"impl-Debug-for-TargetAddr"],[950,"impl-From%3CError%3E-for-Error"],[951,"impl-From%3CError%3E-for-Error"],[952,"impl-From%3CError%3E-for-Error"],[953,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAEsDPgACAAAACwADABEAFAAoAAAAKwAGADMAIQBXABMAbAAXAIcAAACLACMAvQABAMEABwDKAA0A2QAFAOMAAADoAAsA+QAFAAEBGwAeAQIAIgEtAFMBAABXAQkAYgETAHcBCwCFAQ8AlwEAAJoBBQChARMAtwEVAM8BAADSAQYA2gEQAPQBKQAiAgEAJQIAACsCDgA9Ah8AagIAAHgCFwCTAjsA1wIAAOkCAQDzAhcADAMBABYDKgBDAwcAXgMEAGUDDwB2AyEAmQMBAJwDGQC3AwMAwAMAAMMDAgDHAwIA0gMWAOwDAgDxAwAA9AMAAPcDCAABBCUAKQQJAA==","P":[[30,"T"],[34,""],[37,"T"],[39,""],[40,"U"],[42,"T"],[48,""],[55,"U,T"],[57,"U"],[59,""],[60,"Target"],[62,""],[65,"V"],[78,""],[80,"T"],[82,""],[84,"T"],[85,"U"],[86,"T"],[89,""],[92,"U,T"],[93,"U"],[94,""],[95,"Target"],[96,""],[97,"V"],[109,""],[118,"T"],[124,""],[125,"T"],[126,""],[131,"T"],[134,""],[135,"U"],[138,"T"],[147,""],[153,"T"],[154,""],[155,"U,T"],[158,"U"],[161,""],[162,"Target"],[165,""],[169,"V"],[188,""],[201,"T"],[209,""],[211,"T"],[213,""],[222,"T"],[226,"FromStr::Err"],[227,"U"],[231,"T"],[243,""],[250,"T"],[252,""],[256,"U,T"],[260,"U"],[264,""],[266,"Target"],[270,""],[274,"V"],[313,""],[322,"T"],[328,""],[329,"T"],[330,""],[335,"T"],[338,""],[339,"U"],[342,"T"],[351,""],[357,"T"],[358,""],[359,"U,T"],[362,"U"],[365,""],[366,"Target"],[369,""],[374,"V"],[389,""],[394,"T"],[398,""],[399,"T"],[400,""],[404,"T"],[406,"FromStr::Err"],[407,"U"],[409,"T"],[415,""],[418,"T"],[419,""],[421,"U,T"],[423,"U"],[425,""],[427,"Target"],[429,""],[431,"V"],[445,""],[451,"T"],[455,""],[460,"T"],[462,""],[463,"U"],[465,"T"],[471,""],[478,"U,T"],[480,"U"],[482,""],[483,"Target"],[485,""],[488,"V"],[499,""],[513,"T"],[523,""],[527,"T"],[531,""],[541,"T"],[545,""],[547,"T"],[548,""],[549,"U"],[554,"T"],[569,""],[573,"T"],[577,""],[578,"U,T"],[583,"U"],[588,""],[589,"Target"],[594,""],[599,"V"],[632,""],[658,"T"],[674,""],[681,"T"],[688,""],[696,"K"],[697,""],[703,"K"],[709,""],[718,"T"],[726,""],[744,"__H"],[746,"U"],[754,"T"],[778,""],[789,"T"],[796,""],[798,"U,T"],[806,"U"],[814,""],[816,"Target"],[824,""],[834,"V"],[862,""],[885,"T"],[901,""],[905,"T"],[909,""],[916,"K"],[919,""],[920,"Deref::Target"],[922,""],[927,"K"],[936,""],[949,"T"],[950,""],[954,"T"],[959,""],[960,"T"],[962,"FromStr::Err"],[965,""],[966,"__H"],[969,"U"],[977,"T"],[1000,""],[1014,"T"],[1018,""],[1024,"U,T"],[1029,"TryFrom::Error"],[1030,"U,T"],[1033,"U"],[1041,""],[1046,"Target"],[1054,""],[1064,"V"],[1072,""]]}]]'));
+var searchIndex = new Map(JSON.parse('[["gosling",{"t":"CFGPPPPPPPPPPGIPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","n":["context","Context","ContextEvent","EndpointClientError","EndpointClientHandshakeCompleted","EndpointClientHandshakeFailed","EndpointServerChannelRequestReceived","EndpointServerError","EndpointServerHandshakeCompleted","EndpointServerHandshakeFailed","EndpointServerHandshakeRejected","EndpointServerHandshakeStarted","EndpointServerPublished","Error","HandshakeHandle","HandshakeHandleNotFound","HonkRpc","IdentityClientChallengeReceived","IdentityClientError","IdentityClientHandshakeCompleted","IdentityClientHandshakeFailed","IdentityServerChallengeResponseReceived","IdentityServerEndpointRequestReceived","IdentityServerError","IdentityServerHandshakeCompleted","IdentityServerHandshakeFailed","IdentityServerHandshakeRejected","IdentityServerHandshakeStarted","IdentityServerPublished","IncorrectUsage","InvalidArgument","Io","TorBootstrapCompleted","TorBootstrapStatusReceived","TorCrypto","TorLogReceived","TorNotConnected","TorProvider","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","connect","endpoint_client_abort_handshake","endpoint_client_begin_handshake","endpoint_server_handle_channel_request_received","endpoint_server_start","endpoint_server_stop","fmt","","","from","","","","","","","generate_circuit_token","identity_client_abort_handshake","identity_client_begin_handshake","identity_client_handle_challenge_received","identity_server_handle_challenge_response_received","identity_server_handle_endpoint_request_received","identity_server_start","identity_server_stop","into","","","into_any","","","into_any_arc","","into_any_rc","","","into_any_send","","","into_any_sync","","new","release_circuit_token","report","source","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","vzip","","","challenge_response","challenge_response_valid","channel_name","","client_allowed","","client_auth_private_key","client_auth_public_key","client_auth_signature_valid","client_proof_signature_valid","","client_requested_channel_valid","client_requested_endpoint_valid","client_service_id","","","","endpoint_challenge","endpoint_name","","","endpoint_private_key","endpoint_service_id","","","","handle","","","","","","","","","","","","","","","","identity_service_id","line","progress","reason","","","","requested_channel","requested_endpoint","stream","","summary","tag"],"q":[[0,"gosling"],[1,"gosling::context"],[113,"gosling::context::ContextEvent"],[168,"core::any"],[169,"core::result"],[170,"tor_interface::tor_provider"],[171,"core::option"],[172,"tor_interface::tor_crypto"],[173,"alloc::string"],[174,"core::fmt"],[175,"honk_rpc::honk_rpc"],[176,"std::io::error"],[177,"bson::document"],[178,"alloc::boxed"],[179,"alloc::sync"],[180,"alloc::rc"],[181,"core::time"],[182,"tor_error::report"],[183,"core::error"],[184,"tor_persist::slug"],[185,"alloc::collections::vec_deque"]],"i":"```lBj00100000``11010000100000111001011h21021002102100000022102222210000000002102121021021210022202102120210210021EbEdEfEh2EjElEn55225F`1Fb5Fd43Ff4580715FhFj5<6;Fl;FnG`7<;Gb;GdGf7542:;EfEh22","f":"``````````````````````````````````````{b{{b{d}}}}00{{{b{f}}}{{b{fd}}}}00{{{b{fh}}}{{n{jl}}}}{b{{b{c}}}{}}00{{{b{f}}}{{b{fc}}}{}}00{{{b{fh}}A`{Ad{Ab}}}{{n{Afl}}}}{{{b{fh}}Ah}{{n{jl}}}}{{{b{fh}}AjAlAn}{{n{Ahl}}}}{{{b{fh}}AhB`}{{n{jl}}}}{{{b{fh}}BbAnAjBd}{{n{jl}}}}{{{b{fh}}Aj}{{n{jl}}}}{{{b{l}}{b{fBf}}}Bh}0{{{b{Bj}}{b{fBf}}}Bh}{cc{}}{Bll}{Bnl}{C`l}{Cbl}44{{{b{fh}}}Ab}<{{{b{fh}}AjAn}{{n{Ahl}}}}{{{b{fh}}AhCd}{{n{jl}}}}<{{{b{fh}}AhB`B`Cd}{{n{jl}}}}{{{b{fh}}}{{n{jl}}}}0{{}c{}}00{{{Cf{c}}}{{Cf{d}}}{}}00{{{Ch{c}}}{{Ch{d}}}{}}0{{{Cj{c}}}{{Cj{d}}}{}}0022222{{{Cf{Cl}}CnCnD`Db{Ad{D`}}Bb}{{n{hl}}}}{{{b{fh}}Ab}j}{b{{Df{Dd}}}}{{{b{l}}}{{Ad{{b{Dh}}}}}}{bAn}{c{{n{e}}}{}{}}00{{}{{n{c}}}{}}00{b{{n{DjDl}}}}{{}{{n{c}}}{}}00{bDn}00{{{b{fh}}}{{n{{E`{Bj}}l}}}}{{}c{}}00```````````````````````````````````````````````````````","D":"Nl","p":[[1,"reference",null,null,1],[10,"Any",168],[0,"mut"],[5,"Context",1],[1,"unit"],[6,"Error",1],[6,"Result",169,null,1],[6,"TargetAddr",170],[8,"CircuitToken",170],[6,"Option",171,null,1],[5,"OnionStream",170],[8,"HandshakeHandle",1],[5,"V3OnionServiceId",172],[5,"X25519PrivateKey",172],[5,"String",173],[1,"bool"],[5,"Ed25519PrivateKey",172],[5,"X25519PublicKey",172],[5,"Formatter",174],[8,"Result",174],[6,"ContextEvent",1],[6,"Error",170],[6,"Error",172],[6,"Error",175],[5,"Error",176],[5,"Document",177],[5,"Box",178,null,1],[5,"Arc",179,null,1],[5,"Rc",180,null,1],[10,"TorProvider",170],[1,"u16"],[5,"Duration",181],[1,"i32"],[5,"ReportHelper",182],[5,"Report",182],[10,"Error",183],[5,"Slug",184],[6,"BadSlug",184],[5,"TypeId",168],[5,"VecDeque",185],[15,"IdentityServerChallengeResponseReceived",113],[15,"IdentityServerHandshakeRejected",113],[15,"EndpointClientHandshakeCompleted",113],[15,"EndpointServerHandshakeCompleted",113],[15,"EndpointServerHandshakeRejected",113],[15,"IdentityClientHandshakeCompleted",113],[15,"IdentityServerHandshakeCompleted",113],[15,"IdentityServerEndpointRequestReceived",113],[15,"EndpointServerChannelRequestReceived",113],[15,"IdentityClientChallengeReceived",113],[15,"EndpointServerPublished",113],[15,"IdentityClientHandshakeFailed",113],[15,"IdentityServerHandshakeStarted",113],[15,"IdentityServerHandshakeFailed",113],[15,"EndpointClientHandshakeFailed",113],[15,"EndpointServerHandshakeStarted",113],[15,"EndpointServerHandshakeFailed",113],[15,"TorLogReceived",113],[15,"TorBootstrapStatusReceived",113]],"r":[],"b":[[57,"impl-Display-for-Error"],[58,"impl-Debug-for-Error"],[61,"impl-From%3CError%3E-for-Error"],[62,"impl-From%3CError%3E-for-Error"],[63,"impl-From%3CError%3E-for-Error"],[64,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADIABwAnAAUALgAFADoAAgA+AAMATwAMAF4ADwBvAAIA","P":[[45,"T"],[51,""],[60,"T"],[61,""],[65,"T"],[67,""],[75,"U"],[78,"T"],[91,""],[96,"U,T"],[99,"U"],[102,""],[103,"Target"],[106,""],[110,"V"]]}],["honk_rpc",{"t":"CKPPPPPSSGPGPPPPPPPPIPPPPGPPPPPPFPPPPPNNNNNNNNNNNNNNNMNNNNNNNNNHNNHHHNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNOOOOO","n":["honk_rpc","ApiSet","BsonDocumentParseFailed","BsonDocumentSizeTooLarge","BsonDocumentSizeTooSmall","BsonParseFailed","BsonWriteFailed","DEFAULT_MAX_MESSAGE_SIZE","DEFAULT_MAX_WAIT_TIME","Error","","ErrorCode","InvalidMaxMesageSize","MessageConversionFailed","MessageParseFailed","MessageReadTimedOut","MessageTooBig","MessageVersionIncompatible","Pending","ReaderReadFailed","RequestCookie","RequestCookieInvalid","RequestFunctionInvalid","RequestNamespaceInvalid","RequestVersionInvalid","Response","ResponseCookieInvalid","ResponseStateInvalid","Runtime","SectionIdUnknown","SectionParseFailed","SectionTooLarge","Session","Success","Unknown","UnknownErrorSectionReceived","WriterFlushFailed","WriterWriteFailed","borrow","","","","borrow_mut","","","","client_call","client_drain_responses","client_next_response","eq","equivalent","","","exec_function","fmt","","","","from","","","","","get_error_section_size","get_max_message_size","get_max_wait_time","get_message_overhead","get_request_section_size","get_response_section_size","into","","","","into_stream","namespace","new","next_result","set_max_message_size","set_max_wait_time","source","to_string","","try_from","","","","try_into","","","","type_id","","","","update","","vzip","","","","cookie","","","error_code","result"],"q":[[0,"honk_rpc"],[1,"honk_rpc::honk_rpc"],[100,"honk_rpc::honk_rpc::Response"],[105,"bson::document"],[106,"core::result"],[107,"std::io"],[108,"core::marker"],[109,"alloc::collections::vec_deque::drain"],[110,"core::option"],[111,"bson::bson"],[112,"core::fmt"],[113,"alloc::string"],[114,"core::time"],[115,"core::error"],[116,"core::any"]],"i":"``A`00B`1```Aj`22121102`1111`111112`012220f2310230002222Bd334421334`11```2134101011434213421342134012134ClCnD`01","f":"``````````````````````````````````````{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{{b{d{f{c}}}}{b{h}}{b{h}}jl}{{Ab{nA`}}}{AdAfAh}}{{{b{d{f{c}}}}}{{Al{Aj}}}{AdAfAh}}{{{b{d{f{c}}}}}{{An{Aj}}}{AdAfAh}}{{{b{B`}}{b{B`}}}Bb}{{b{b{c}}}Bb{}}00{{{b{dBd}}{b{h}}jl{An{n}}}{{An{{Ab{{An{Bf}}B`}}}}}}{{{b{B`}}{b{dBh}}}Bj}0{{{b{A`}}{b{dBh}}}Bj}0{cc{}}00{jB`}1{{{An{n}}{An{Bl}}{An{Bf}}}{{Ab{BnA`}}}}{{{b{{f{c}}}}}Bn{AdAfAh}}{{{b{{f{c}}}}}C`{AdAfAh}}{{}{{Ab{BnA`}}}}{{{An{n}}{An{Bl}}Bl{An{j}}{An{l}}}{{Ab{BnA`}}}}{{{An{Bf}}}{{Ab{BnA`}}}}{{}c{}}000{{{f{c}}}c{AdAfAh}}{{{b{Bd}}}{{b{h}}}}{c{{f{c}}}{AdAfAh}}{{{b{dBd}}}{{An{{Cb{n{Ab{{An{Bf}}B`}}}}}}}}{{{b{d{f{c}}}}j}{{Ab{CdA`}}}{AdAfAh}}{{{b{d{f{c}}}}C`}Cd{AdAfAh}}{{{b{A`}}}{{An{{b{Cf}}}}}}{bBl}0{c{{Ab{e}}}{}{}}000{{}{{Ab{c}}}{}}000{bCh}000{{{b{dBd}}}Cd}{{{b{d{f{c}}}}{An{{b{d{Cj{{b{dBd}}}}}}}}}{{Ab{CdA`}}}{AdAfAh}}{{}c{}}000`````","D":"Hj","p":[[1,"reference",null,null,1],[0,"mut"],[5,"Session",1],[1,"str"],[1,"i32"],[5,"Document",105],[8,"RequestCookie",1],[6,"Error",1],[6,"Result",106,null,1],[10,"Read",107],[10,"Write",107],[10,"Send",108],[6,"Response",1],[5,"Drain",109],[6,"Option",110,null,1],[6,"ErrorCode",1],[1,"bool"],[10,"ApiSet",1],[6,"Bson",111],[5,"Formatter",112],[8,"Result",112],[5,"String",113],[1,"usize"],[5,"Duration",114],[1,"tuple",null,null,1],[1,"unit"],[10,"Error",115],[5,"TypeId",116],[1,"slice"],[15,"Pending",100],[15,"Success",100],[15,"Error",100]],"r":[],"b":[[54,"impl-Debug-for-ErrorCode"],[55,"impl-Display-for-ErrorCode"],[56,"impl-Display-for-Error"],[57,"impl-Debug-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACQABwABAAAAJwAHADIAAwA3AAMAPgAAAFAADgBhAAMA","P":[[38,"T"],[46,"RW"],[49,""],[50,"K"],[53,""],[58,"T"],[61,""],[62,"T"],[63,""],[64,"RW"],[66,""],[69,"U"],[73,"RW"],[74,""],[75,"RW"],[76,""],[77,"RW"],[79,""],[82,"U,T"],[86,"U"],[90,""],[95,"RW"],[96,"V"]]}],["tor_interface",{"t":"CCCCCCCCCCPPPPFGPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPPPPPGPPNNNNNNNNNNNNNNNNNNNNNNPPPPFGPPGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOPPPPFGPPPFGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPGPPPFGPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOGFPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPGFPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPFGGPFPFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPSSSSSSSFFFGPPPGFSSFFSSSSSSPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPIPFGPPGFFPPFPPGGKPNNNNNMNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNOOOOO","n":["arti_client_tor_client","arti_process","arti_tor_client","censorship_circumvention","legacy_tor_client","legacy_tor_version","mock_tor_client","proxy","tor_crypto","tor_provider","ArtiClientConfigBuilderError","ArtiClientError","ArtiClientOnionServiceLaunchError","ArtiClientTorAddrError","ArtiClientTorClient","Error","NotImplemented","OnionServiceConfigBuilderError","TcpListenerAcceptFailed","TcpListenerBindFailed","TcpListenerLocalAddrFailed","TcpStreamConnectFailed","TcpStreamIntoFailed","TorKeyMgrError","add_client_auth","as_any","","as_any_mut","","bootstrap","borrow","","borrow_mut","","connect","fmt","","from","","generate_token","into","","into_any","","into_any_arc","","into_any_rc","","into_any_send","","into_any_sync","","listener","new","release_token","remove_client_auth","report","source","to_string","try_from","","try_into","","try_into_slug","try_octets_into","","type_id","","update","vzip","","ArtiBinPathNotAbsolute","ArtiDataDirectoryCreationFailed","ArtiDataDirectoryPathExistsAsFile","ArtiDataDirectoryPathNotAbsolute","ArtiDataDirectorySetPermissionsFailed","ArtiProcessStartFailed","ArtiProcessStdoutTakeFailed","ArtiStdoutReadThreadSpawnFailed","ArtiTomlFileCreationFailed","ArtiTomlFileWriteFailed","Error","RpcTomlFileCreationFailed","RpcTomlFileWriteFailed","as_any","as_any_mut","borrow","borrow_mut","fmt","","from","into","into_any","into_any_arc","into_any_rc","into_any_send","into_any_sync","report","source","to_string","try_from","try_into","try_into_slug","try_octets_into","type_id","vzip","ArtiNotBootstrapped","ArtiOpenStreamFailed","ArtiProcessCreationFailed","ArtiRpcConnectFailed","ArtiTorClient","ArtiTorClientConfig","BundledArti","CircuitTokenInvalid","Error","NotImplemented","SystemArti","__clone_box","add_client_auth","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","connect","fmt","","","from","","","generate_token","into","","","into_any","","","into_any_arc","","","into_any_rc","","","into_any_send","","","into_any_sync","","","listener","new","release_token","remove_client_auth","report","source","to_owned","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","vzip","","","arti_bin_path","data_directory","AddressMissing","AddressParseFailed","AddressPortInvalid","BinaryPathInvalid","BridgeLine","BridgeLineError","FingerprintInvalid","FingerprintMissing","KeyValueInvalid","PluggableTransportConfig","PluggableTransportConfigError","TransportMissing","TransportNameInvalid","","__clone_box","","add_option","address","as_any","","","","as_any_mut","","","","as_legacy_tor_setconf_value","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fingerprint","fmt","","","","","","from","","","","from_str","into","","","","into_any","","","","into_any_arc","","","","into_any_rc","","","","into_any_send","","","","into_any_sync","","","","keyvalues","new","","options","path_to_binary","report","","to_owned","","to_string","","transport","transports","try_from","","","","try_into","","","","try_into_slug","","try_octets_into","","","","type_id","","","","vzip","","","","AddOnionFailed","BridgeTransportNotSupported","BridgeTransportTypeMultiplyDefined","BundledTor","CircuitTokenInvalid","DelOnionFailed","Error","GetInfoNetListenersSocksFailed","GetInfoVersionFailed","LegacyControlStreamCreationFailed","LegacyTorClient","LegacyTorClientConfig","LegacyTorControllerCreationFailed","LegacyTorNotBootstrapped","LegacyTorProcessAuthenticationFailed","LegacyTorProcessCreationFailed","LegacyTorProcessTooOld","NoSocksListenersFound","NotImplemented","OnionClientAuthAddFailed","OnionClientAuthRemoveFailed","PluggableTransportBinaryNameNotUtf8Representnable","PluggableTransportConfigDirectoryCreationFailed","PluggableTransportConfigError","PluggableTransportDirectoryNameCollision","PluggableTransportSymlinkCreationFailed","PluggableTransportSymlinkRemovalFailed","SetConfDisableNetwork0Failed","SetConfFailed","SetEventsFailed","Socks5ConnectionFailed","SystemTor","TcpListenerBindFailed","TcpListenerLocalAddrFailed","WaitAsyncEventsFailed","__clone_box","add_client_auth","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","connect","fmt","","","from","","","generate_token","into","","","into_any","","","into_any_arc","","","into_any_rc","","","into_any_send","","","into_any_sync","","","listener","new","release_token","remove_client_auth","report","source","to_owned","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","version","vzip","","","allowed_ports","bridge_lines","data_directory","pluggable_transports","proxy_settings","tor_bin_path","tor_control_addr","tor_control_passwd","tor_socks_addr","Error","LegacyTorVersion","ParseError","__clone_box","as_any","","as_any_mut","","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","eq","fmt","","from","","from_str","into","","into_any","","into_any_arc","","into_any_rc","","into_any_send","","into_any_sync","","new","partial_cmp","report","to_owned","to_string","","try_from","","try_into","","try_into_slug","","try_octets_into","","type_id","","vzip","","ClientAlreadyBootstrapped","ClientNotBootstrapped","ConnectFailed","Error","MockTorClient","NotImplemented","OnionServiceAuthInvalid","OnionServiceNotFound","OnionServiceNotPublished","OnionServiceRequiresOnionAuth","TcpListenerBindFailed","TcpListenerLocalAddrFailed","add_client_auth","as_any","","as_any_mut","","bootstrap","borrow","","borrow_mut","","connect","default","drop","fmt","","from","","generate_token","into","","into_any","","into_any_arc","","into_any_rc","","into_any_send","","into_any_sync","","listener","new","release_token","remove_client_auth","report","source","to_string","try_from","","try_into","","try_into_slug","try_octets_into","","type_id","","update","vzip","","Generic","Https","HttpsProxyConfig","ProxyConfig","ProxyConfigError","Socks4","Socks4ProxyConfig","Socks5","Socks5ProxyConfig","__clone_box","","","","as_any","","","","","as_any_mut","","","","","borrow","","","","","borrow_mut","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","fmt","","","","","","from","","","","","","","","into","","","","","into_any","","","","","into_any_arc","","","","","into_any_rc","","","","","into_any_send","","","","","into_any_sync","","","","","new","","","report","to_owned","","","","to_string","try_from","","","","","try_into","","","","","try_into_slug","try_octets_into","","","","","type_id","","","","","vzip","","","","","ConversionError","ED25519_PRIVATE_KEYBLOB_BASE64_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_HEADER_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_SIZE","ED25519_PRIVATE_KEY_SIZE","ED25519_PUBLIC_KEY_SIZE","ED25519_SIGNATURE_SIZE","Ed25519PrivateKey","Ed25519PublicKey","Ed25519Signature","Error","KeyInvalid","One","ParseError","SignBit","V3OnionServiceId","V3_ONION_SERVICE_ID_STRING_LENGTH","V3_ONION_SERVICE_ID_STRING_SIZE","X25519PrivateKey","X25519PublicKey","X25519_PRIVATE_KEY_BASE64_LENGTH","X25519_PRIVATE_KEY_BASE64_SIZE","X25519_PRIVATE_KEY_SIZE","X25519_PUBLIC_KEY_BASE32_LENGTH","X25519_PUBLIC_KEY_BASE32_SIZE","X25519_PUBLIC_KEY_SIZE","Zero","__clone_box","","","","","","","as_any","","","","","","","","as_any_mut","","","","","","","","as_bytes","","","borrow","","","","","","","","borrow_mut","","","","","","","","clone","","","","","","","clone_into","","","","","","","clone_to_uninit","","","","","","","cmp","compare","eq","","","","","","equivalent","","","","","","fmt","","","","","","","","","from","","","","","","","","","from_base32","from_base64","from_key_blob","from_private_key","","","from_private_x25519","from_public_key","from_raw","","","","","from_service_id","from_string","generate","","hash","","into","","","","","","","","into_any","","","","","","","","into_any_arc","","","","","","","","into_any_rc","","","","","","","","into_any_send","","","","","","","","into_any_sync","","","","","","","","is_valid","partial_cmp","report","sign_message","","to_base32","to_base64","to_bytes","","","to_key_blob","to_owned","","","","","","","to_string","","try_from","","","","","","","","try_into","","","","","","","","try_into_slug","","try_octets_into","","","","","","","","type_id","","","","","","","","verify","verify_x25519","vzip","","","","","","","","BootstrapComplete","BootstrapStatus","CircuitToken","Domain","DomainAddr","Error","Generic","LogReceived","OnionAddr","OnionAddrV3","OnionListener","OnionService","OnionServicePublished","OnionStream","ParseFailure","Socket","TargetAddr","TorEvent","TorProvider","V3","__clone_box","","","","accept","add_client_auth","as_any","","","","","","","","as_any_mut","","","","","","","","bootstrap","borrow","","","","","","","","borrow_mut","","","","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","cmp","","","compare","","","connect","deref","deref_mut","domain","drop","eq","","","equivalent","","","","","","","","","flush","fmt","","","","","","","","","","","","from","","","","","","","","","","","","","from_str","","","generate_token","hash","","","into","","","","","","","","into_any","","","","","","","","into_any_arc","","","","","","","into_any_rc","","","","","","","","into_any_send","","","","","","","","into_any_sync","","","","","","","listener","local_addr","new","partial_cmp","","","peer_addr","port","read","release_token","remove_client_auth","report","service_id","set_nonblocking","to_owned","","","","to_string","","","","","try_clone","try_from","","","","","","","","","try_into","","","","","","","","try_into_slug","","","","","try_octets_into","","","","","","","","type_id","","","","","","","","update","virt_port","vzip","","","","","","","","write","","line","progress","service_id","summary","tag"],"q":[[0,"tor_interface"],[10,"tor_interface::arti_client_tor_client"],[71,"tor_interface::arti_process"],[106,"tor_interface::arti_tor_client"],[186,"tor_interface::arti_tor_client::ArtiTorClientConfig"],[188,"tor_interface::censorship_circumvention"],[300,"tor_interface::legacy_tor_client"],[405,"tor_interface::legacy_tor_client::LegacyTorClientConfig"],[414,"tor_interface::legacy_tor_version"],[465,"tor_interface::mock_tor_client"],[526,"tor_interface::proxy"],[650,"tor_interface::tor_crypto"],[904,"tor_interface::tor_provider"],[1151,"tor_interface::tor_provider::TorEvent"],[1156,"core::result"],[1157,"core::any"],[1158,"core::option"],[1159,"core::fmt"],[1160,"alloc::boxed"],[1161,"alloc::sync"],[1162,"alloc::rc"],[1163,"tokio::runtime::runtime"],[1164,"std::path"],[1165,"tor_error::report"],[1166,"core::error"],[1167,"alloc::string"],[1168,"tor_persist::slug"],[1169,"alloc::vec"],[1170,"dyn_clone::sealed"],[1171,"core::net::socket_addr"],[1172,"core::cmp"],[1173,"core::hash"],[1174,"std::io::error"],[1175,"der::error"]],"i":"``````````Al000``00000000d0101001010110100101010101010000111010110101001Dh000000000`000000000000000000000000Eb000``Dn1`100Dl0210210021021111022102100210210210210210210000221202102120210210021Il0El00Ej``111``101EdEf101203120301203120310101001220331203012031203120312031203120301011231023011203120323120312031203Fh00Ff11`111``111111111111111111101110Fd02102100210211110221021002102102102102102100002212021021202102100021In00000J`00``FnFj10101010000011100101010101010001010101010101010Gf00``0000000Gd010100101000110100101010101010000111010110101001H`Gn```0`0`GhGjGl3421034210342103421032103210321034421034210333342103421034210342103421034210321042103442103421034421034210342103Hj```````````0Hh1````````````0BhHbHfjBlh6574321065743210641057432106574321065432106543210654321060054321011100057743210057432106612541050543214052105743210657432106574321065743210657432106574321060075212532554321067057432106574321067057432106574321063357432106Dd0`Ad``n2```12`01```IdIb1If4C`I`1534267Aj264537801264537802645378045374537453745345310032453444555333066445533778026666645377805371453264537802645378064537802645378026453780645378010445303011642453764537026453378026453780645372645378026453780142645378000JbJdJf11","f":"````````````````````````{{{f{bd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{{{f{bd}}}{{A`{ln}}}}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{bd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Al}}{f{bAn}}}B`}0{cc{}}0{{{f{bd}}}Af}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}02222{{{f{bd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{{{Bd{Cb}}{f{Cd}}}{{A`{dAl}}}}{{{f{bd}}Af}l}{{{f{bd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Al}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0{fDb}0{{{f{bd}}}{{A`{{Df{Dd}}n}}}}{{}c{}}0`````````````{f{{f{Ab}}}}{{{f{b}}}{{f{bAb}}}}{f{{f{c}}}{}}{{{f{b}}}{{f{bc}}}{}}{{{f{Dh}}{f{bAn}}}B`}0{cc{}}{{}c{}}{{{Bb{c}}}{{Bb{Ab}}}{}}{{{Bd{c}}}{{Bd{Ab}}}{}}{{{Bf{c}}}{{Bf{Ab}}}{}}22{f{{Ch{Cf}}}}{{{f{Dh}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}{{}{{A`{c}}}{}}{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}{fDb}{{}c{}}```````````{{fDj}l}{{{f{bDl}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}00{{{f{b}}}{{f{bAb}}}}00{{{f{bDl}}}{{A`{ln}}}}{f{{f{c}}}{}}00{{{f{b}}}{{f{bc}}}{}}00{{{f{Dn}}}Dn}{{f{f{bc}}}l{}}{{fE`}l}{{{f{bDl}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Eb}}{f{bAn}}}B`}0{{{f{Dn}}{f{bAn}}}B`}{cc{}}00{{{f{bDl}}}Af}{{}c{}}00{{{Bb{c}}}{{Bb{Ab}}}{}}00{{{Bd{c}}}{{Bd{Ab}}}{}}00{{{Bf{c}}}{{Bf{Ab}}}{}}00222222{{{f{bDl}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{Dn{{A`{Dln}}}}{{{f{bDl}}Af}l}{{{f{bDl}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Eb}}}{{Ah{{f{Cj}}}}}}{fc{}}{fCl}{c{{A`{e}}}{}{}}00{{}{{A`{c}}}{}}00{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}00{fDb}00{{{f{bDl}}}{{A`{{Df{Dd}}n}}}}{{}c{}}00````````````````{{fDj}l}0{{{f{bEd}}Cl}l}{{{f{Ef}}}{{f{Eh}}}}{f{{f{Ab}}}}000{{{f{b}}}{{f{bAb}}}}000{{{f{Ef}}}Cl}{f{{f{c}}}{}}000{{{f{b}}}{{f{bc}}}{}}000{{{f{Ed}}}Ed}{{{f{Ef}}}Ef}{{f{f{bc}}}l{}}0{{fE`}l}0{{{f{Ef}}}{{f{Cl}}}}{{{f{Ed}}{f{bAn}}}B`}{{{f{Ej}}{f{bAn}}}B`}0{{{f{Ef}}{f{bAn}}}B`}{{{f{El}}{f{bAn}}}B`}0{cc{}}000{{{f{En}}}{{A`{Efc}}}{}}{{}c{}}000{{{Bb{c}}}{{Bb{Ab}}}{}}000{{{Bd{c}}}{{Bd{Ab}}}{}}000{{{Bf{c}}}{{Bf{Ab}}}{}}00022222222{{{f{Ef}}}{{f{{Df{{F`{ClCl}}}}}}}}{{{Df{Cl}}Fb}{{A`{EdEj}}}}{{ClEhCl{Df{{F`{ClCl}}}}}{{A`{EfEl}}}}{{{f{Ed}}}{{f{{Df{Cl}}}}}}{{{f{Ed}}}{{f{Fb}}}}{f{{Ch{Cf}}}}0{fc{}}0{fCl}0{{{f{Ef}}}{{f{Cl}}}}5{c{{A`{e}}}{}{}}000{{}{{A`{c}}}{}}000{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}000{fDb}000{{}c{}}000```````````````````````````````````{{fDj}l}{{{f{bFd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}00{{{f{b}}}{{f{bAb}}}}00{{{f{bFd}}}{{A`{ln}}}}{f{{f{c}}}{}}00{{{f{b}}}{{f{bc}}}{}}00{{{f{Ff}}}Ff}{{f{f{bc}}}l{}}{{fE`}l}{{{f{bFd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Fh}}{f{bAn}}}B`}0{{{f{Ff}}{f{bAn}}}B`}{cc{}}00{{{f{bFd}}}Af}{{}c{}}00{{{Bb{c}}}{{Bb{Ab}}}{}}00{{{Bd{c}}}{{Bd{Ab}}}{}}00{{{Bf{c}}}{{Bf{Ab}}}{}}00222222{{{f{bFd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{Ff{{A`{FdFh}}}}{{{f{bFd}}Af}l}{{{f{bFd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Fh}}}{{Ah{{f{Cj}}}}}}{fc{}}{fCl}{c{{A`{e}}}{}{}}00{{}{{A`{c}}}{}}00{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}00{fDb}00{{{f{bFd}}}{{A`{{Df{Dd}}n}}}}{{{f{bFd}}}Fj}{{}c{}}00````````````{{fDj}l}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{Fj}}}Fj}{{f{f{bc}}}l{}}{{fE`}l}{{{f{Fj}}{f{Fj}}}Fl}{{{f{Fn}}{f{bAn}}}B`}0{cc{}}0{{{f{En}}}{{A`{Fjc}}}{}}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}02222{{G`G`G`{Ah{G`}}{Ah{{f{En}}}}}{{A`{FjFn}}}}{{{f{Fj}}{f{Fj}}}{{Ah{Gb}}}}{f{{Ch{Cf}}}}{fc{}}{fCl}{{{f{Fj}}}Cl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}0{fDb}0{{}c{}}0````````````{{{f{bGd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{{{f{bGd}}}{{A`{ln}}}}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{bGd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{}Gd}{{{f{bGd}}}l}{{{f{Gf}}{f{bAn}}}B`}0{cc{}}0{{{f{bGd}}}Af}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}02222{{{f{bGd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}9{{{f{bGd}}Af}l}{{{f{bGd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Gf}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0{fDb}0{{{f{bGd}}}{{A`{{Df{Dd}}n}}}}{{}c{}}0`````````{{fDj}l}000{f{{f{Ab}}}}0000{{{f{b}}}{{f{bAb}}}}0000{f{{f{c}}}{}}0000{{{f{b}}}{{f{bc}}}{}}0000{{{f{Gh}}}Gh}{{{f{Gj}}}Gj}{{{f{Gl}}}Gl}{{{f{Gn}}}Gn}{{f{f{bc}}}l{}}000{{fE`}l}000{{{f{H`}}{f{bAn}}}B`}0{{{f{Gh}}{f{bAn}}}B`}{{{f{Gj}}{f{bAn}}}B`}{{{f{Gl}}{f{bAn}}}B`}{{{f{Gn}}{f{bAn}}}B`}{cc{}}000{GjGn}{GhGn}2{GlGn}{{}c{}}0000{{{Bb{c}}}{{Bb{Ab}}}{}}0000{{{Bd{c}}}{{Bd{Ab}}}{}}0000{{{Bf{c}}}{{Bf{Ab}}}{}}00002222222222{Ad{{A`{GhH`}}}}{{Ad{Ah{Cl}}{Ah{Cl}}}{{A`{GjH`}}}}{{Ad{Ah{Cl}}{Ah{Cl}}}{{A`{GlH`}}}}{f{{Ch{Cf}}}}{fc{}}000{fCl}{c{{A`{e}}}{}{}}0000{{}{{A`{c}}}{}}0000{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0000{fDb}0000{{}c{}}0000````````````````````````````{{fDj}l}000000{f{{f{Ab}}}}0000000{{{f{b}}}{{f{bAb}}}}0000000{{{f{Hb}}}{{f{{Hd{E`}}}}}}{{{f{Bl}}}{{f{{Hd{E`}}}}}}{{{f{h}}}{{f{{Hd{E`}}}}}}{f{{f{c}}}{}}0000000{{{f{b}}}{{f{bc}}}{}}0000000{{{f{Bh}}}Bh}{{{f{Hb}}}Hb}{{{f{Hf}}}Hf}{{{f{j}}}j}{{{f{Bl}}}Bl}{{{f{h}}}h}{{{f{Hh}}}Hh}{{f{f{bc}}}l{}}000000{{fE`}l}000000{{{f{h}}{f{h}}}Gb}{{f{f{c}}}Gb{}}{{{f{Bh}}{f{Bh}}}Fl}{{{f{Hb}}{f{Hb}}}Fl}{{{f{Hf}}{f{Hf}}}Fl}{{{f{j}}{f{j}}}Fl}{{{f{Bl}}{f{Bl}}}Fl}{{{f{h}}{f{h}}}Fl}{{f{f{c}}}Fl{}}00000{{{f{Bh}}{f{bAn}}}B`}{{{f{Hj}}{f{bAn}}}B`}0{{{f{Hb}}{f{bAn}}}B`}{{{f{Hf}}{f{bAn}}}B`}{{{f{j}}{f{bAn}}}B`}{{{f{Bl}}{f{bAn}}}B`}{{{f{h}}{f{bAn}}}B`}0{cc{}}0000000{FlHh}{{{f{En}}}{{A`{BlHj}}}}{{{f{En}}}{{A`{jHj}}}}{{{f{En}}}{{A`{BhHj}}}}{{{f{Bh}}}Hb}{{{f{j}}}Bl}{{{f{Bh}}}h}{{{f{j}}}{{A`{{F`{BhHh}}Hj}}}}{{{f{Hb}}}h}{{{f{{Hd{E`}}}}}{{A`{BhHj}}}}{{{f{{Hd{E`}}}}}{{A`{HbHj}}}}{{{f{{Hd{E`}}}}}{{A`{HfHj}}}}{{{f{{Hd{E`}}}}}{{A`{jHj}}}}{{{f{{Hd{E`}}}}}Bl}{{{f{h}}}{{A`{HbHj}}}}{{{f{En}}}{{A`{hHj}}}}{{}Bh}{{}j}{{{f{Bl}}{f{bc}}}lHl}{{{f{h}}{f{bc}}}lHl}{{}c{}}0000000{{{Bb{c}}}{{Bb{Ab}}}{}}0000000{{{Bd{c}}}{{Bd{Ab}}}{}}0000000{{{Bf{c}}}{{Bf{Ab}}}{}}00000002222222222222222{{{f{En}}}Fl}{{{f{h}}{f{h}}}{{Ah{Gb}}}}{f{{Ch{Cf}}}}{{{f{Bh}}{f{{Bn{E`}}}}}Hf}{{{f{j}}{f{{Bn{E`}}}}}{{A`{{F`{HfHh}}Hj}}}}{{{f{Bl}}}Cl}{{{f{j}}}Cl}{{{f{Bh}}}{{Hd{E`}}}}{{{f{Hf}}}{{Hd{E`}}}}{{{f{j}}}{{Hd{E`}}}}{{{f{Bh}}}Cl}{fc{}}000000{fCl}0{c{{A`{e}}}{}{}}0000000{{}{{A`{c}}}{}}0000000{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}0000000{fDb}0000000{{{f{Hf}}{f{{Bn{E`}}}}{f{Hb}}}Fl}{{{f{Hf}}{f{{Bn{E`}}}}{f{Bl}}Hh}Fl}{{}c{}}0000000````````````````````{{fDj}l}000{{{f{C`}}}{{A`{{Ah{Aj}}Hn}}}}{{{f{bI`}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0000000{{{f{b}}}{{f{bAb}}}}0000000{{{f{bI`}}}{{A`{ln}}}}{f{{f{c}}}{}}0000000{{{f{b}}}{{f{bc}}}{}}0000000{{{f{Ib}}}Ib}{{{f{Id}}}Id}{{{f{If}}}If}{{{f{Ad}}}Ad}{{f{f{bc}}}l{}}000{{fE`}l}000{{{f{Ib}}{f{Ib}}}Gb}{{{f{Id}}{f{Id}}}Gb}{{{f{If}}{f{If}}}Gb}{{f{f{c}}}Gb{}}00{{{f{bI`}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Aj}}}{{f{c}}}{}}{{{f{bAj}}}{{f{bc}}}{}}{{{f{If}}}{{f{En}}}}{{{f{bC`}}}l}{{{f{Ib}}{f{Ib}}}Fl}{{{f{Id}}{f{Id}}}Fl}{{{f{If}}{f{If}}}Fl}{{f{f{c}}}Fl{}}00000000{{{f{bAj}}}{{A`{lHn}}}}{{{f{n}}{f{bAn}}}B`}0{{{f{Ib}}{f{bAn}}}B`}0{{{f{Id}}{f{bAn}}}B`}0{{{f{If}}{f{bAn}}}B`}0{{{f{Ad}}{f{bAn}}}B`}0{{{f{Dd}}{f{bAn}}}B`}{{{f{Aj}}{f{bAn}}}B`}{cc{}}{Aln}{Fhn}2{Gfn}{Ebn}444{{{F`{hBj}}}Ad}555{{{f{En}}}{{A`{Idc}}}{}}{{{f{En}}}{{A`{Ifc}}}{}}{{{f{En}}}{{A`{Adc}}}{}}{{{f{bI`}}}Af}{{{f{Ib}}{f{bc}}}lHl}{{{f{Id}}{f{bc}}}lHl}{{{f{If}}{f{bc}}}lHl}{{}c{}}0000000{{{Bb{c}}}{{Bb{Ab}}}{}}0000000{{{Bd{c}}}{{Bd{Ab}}}{}}000000{{{Bf{c}}}{{Bf{Ab}}}{}}0000000222222222222222{{{f{bI`}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{{{f{Aj}}}{{Ah{Id}}}}{{hBj}Ib}{{{f{Ib}}{f{Ib}}}{{Ah{Gb}}}}{{{f{Id}}{f{Id}}}{{Ah{Gb}}}}{{{f{If}}{f{If}}}{{Ah{Gb}}}}{{{f{Aj}}}{{Ah{Ad}}}}{{{f{If}}}Bj}{{{f{bAj}}{f{b{Bn{E`}}}}}{{A`{IhHn}}}}{{{f{bI`}}Af}l}{{{f{bI`}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Ib}}}{{f{h}}}}{{{f{C`}}Fl}{{A`{lHn}}}}{fc{}}000{fCl}0000{{{f{Aj}}}{{A`{AjHn}}}}{c{{A`{e}}}{}{}}000{{{F`{ClBj}}}{{A`{Ifc}}}{}}1111{{}{{A`{c}}}{}}0000000{f{{A`{CnD`}}}}0000{{}{{A`{c}}}{}}0000000{fDb}0000000{{{f{bI`}}}{{A`{{Df{Dd}}n}}}}{{{f{Ib}}}Bj}{{}c{}}0000000{{{f{b}}{f{{Bn{E`}}}}}{{A`{lIj}}}}{{{f{bAj}}{f{{Bn{E`}}}}}{{A`{IhHn}}}}`````","D":"AMh","p":[[0,"mut"],[5,"ArtiClientTorClient",10],[1,"reference",null,null,1],[5,"V3OnionServiceId",650],[5,"X25519PrivateKey",650],[1,"unit"],[6,"Error",904],[6,"Result",1156,null,1],[10,"Any",1157],[6,"TargetAddr",904],[8,"CircuitToken",904],[6,"Option",1158,null,1],[5,"OnionStream",904],[6,"Error",10],[5,"Formatter",1159],[8,"Result",1159],[5,"Box",1160,null,1],[5,"Arc",1161,null,1],[5,"Rc",1162,null,1],[5,"Ed25519PrivateKey",650],[1,"u16"],[5,"X25519PublicKey",650],[1,"slice"],[5,"OnionListener",904],[5,"Runtime",1163],[5,"Path",1164],[5,"ReportHelper",1165],[5,"Report",1165],[10,"Error",1166],[5,"String",1167],[5,"Slug",1168],[6,"BadSlug",1168],[5,"TypeId",1157],[6,"TorEvent",904],[5,"Vec",1169],[6,"Error",71],[5,"Private",1170],[5,"ArtiTorClient",106],[6,"ArtiTorClientConfig",106],[1,"u8"],[6,"Error",106],[5,"PluggableTransportConfig",188],[5,"BridgeLine",188],[6,"SocketAddr",1171],[6,"PluggableTransportConfigError",188],[6,"BridgeLineError",188],[1,"str"],[1,"tuple",null,null,1],[5,"PathBuf",1164],[5,"LegacyTorClient",300],[6,"LegacyTorClientConfig",300],[6,"Error",300],[5,"LegacyTorVersion",414],[1,"bool"],[6,"Error",414],[1,"u32"],[6,"Ordering",1172],[5,"MockTorClient",465],[6,"Error",465],[5,"Socks4ProxyConfig",526],[5,"Socks5ProxyConfig",526],[5,"HttpsProxyConfig",526],[6,"ProxyConfig",526],[6,"ProxyConfigError",526],[5,"Ed25519PublicKey",650],[1,"array"],[5,"Ed25519Signature",650],[6,"SignBit",650],[6,"Error",650],[10,"Hasher",1173],[5,"Error",1174],[10,"TorProvider",904],[5,"OnionAddrV3",904],[6,"OnionAddr",904],[5,"DomainAddr",904],[1,"usize"],[5,"Error",1175],[15,"BundledArti",186],[15,"BundledTor",405],[15,"SystemTor",405],[15,"LogReceived",1151],[15,"BootstrapStatus",1151],[15,"OnionServicePublished",1151]],"r":[],"b":[[35,"impl-Debug-for-Error"],[36,"impl-Display-for-Error"],[88,"impl-Display-for-Error"],[89,"impl-Debug-for-Error"],[136,"impl-Display-for-Error"],[137,"impl-Debug-for-Error"],[231,"impl-Debug-for-PluggableTransportConfigError"],[232,"impl-Display-for-PluggableTransportConfigError"],[234,"impl-Display-for-BridgeLineError"],[235,"impl-Debug-for-BridgeLineError"],[354,"impl-Display-for-Error"],[355,"impl-Debug-for-Error"],[430,"impl-Display-for-Error"],[431,"impl-Debug-for-Error"],[490,"impl-Display-for-Error"],[491,"impl-Debug-for-Error"],[571,"impl-Debug-for-ProxyConfigError"],[572,"impl-Display-for-ProxyConfigError"],[581,"impl-From%3CSocks5ProxyConfig%3E-for-ProxyConfig"],[582,"impl-From%3CSocks4ProxyConfig%3E-for-ProxyConfig"],[584,"impl-From%3CHttpsProxyConfig%3E-for-ProxyConfig"],[756,"impl-Debug-for-Error"],[757,"impl-Display-for-Error"],[762,"impl-Display-for-V3OnionServiceId"],[763,"impl-Debug-for-V3OnionServiceId"],[999,"impl-Display-for-Error"],[1000,"impl-Debug-for-Error"],[1001,"impl-Display-for-OnionAddrV3"],[1002,"impl-Debug-for-OnionAddrV3"],[1003,"impl-Debug-for-OnionAddr"],[1004,"impl-Display-for-OnionAddr"],[1005,"impl-Display-for-DomainAddr"],[1006,"impl-Debug-for-DomainAddr"],[1007,"impl-Display-for-TargetAddr"],[1008,"impl-Debug-for-TargetAddr"],[1012,"impl-From%3CError%3E-for-Error"],[1013,"impl-From%3CError%3E-for-Error"],[1015,"impl-From%3CError%3E-for-Error"],[1016,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJgDPwACAAAACwADABEAFAAoAAAAKwAKADcAIwBdABUAdAAXAI8AAACTACkAywABAM8ABwDYAA0A5wAFAPEAAAD2ABMADwEFABcBGwA0AQIAOAEtAGkBAABtAQ8AfgETAJMBCwChAQ8AswEAALYBCQDBARMA1wEVAO8BAADyAQoA/gEQABgCKQBGAgEASQIAAE8CGABrAh8AmAIAAKYCFwDBAjsABQMAABcDAQAhAycASgMBAFQDKgCBAwcAnAMEAKMDDwC0AyEA1wMBANoDGQD1AwEA+AMBAP0DAAABBAIABQQCABAEJQA5BAIAPgQAAEEEAABEBAgATgQlAHYECQA=","P":[[30,"T"],[34,""],[37,"T"],[39,""],[40,"U"],[42,"T"],[52,""],[59,"U,T"],[61,"U"],[63,""],[64,"Target"],[66,""],[69,"V"],[84,""],[86,"T"],[88,""],[90,"T"],[91,"U"],[92,"T"],[97,""],[100,"U,T"],[101,"U"],[102,""],[103,"Target"],[104,""],[105,"V"],[117,""],[126,"T"],[132,""],[133,"T"],[134,""],[139,"T"],[142,""],[143,"U"],[146,"T"],[161,""],[167,"T"],[168,""],[169,"U,T"],[172,"U"],[175,""],[176,"Target"],[179,""],[183,"V"],[202,""],[215,"T"],[223,""],[225,"T"],[227,""],[236,"T"],[240,"FromStr::Err"],[241,"U"],[245,"T"],[265,""],[272,"T"],[274,""],[278,"U,T"],[282,"U"],[286,""],[288,"Target"],[292,""],[296,"V"],[335,""],[344,"T"],[350,""],[351,"T"],[352,""],[357,"T"],[360,""],[361,"U"],[364,"T"],[379,""],[385,"T"],[386,""],[387,"U,T"],[390,"U"],[393,""],[394,"Target"],[397,""],[402,"V"],[417,""],[422,"T"],[426,""],[427,"T"],[428,""],[432,"T"],[434,"FromStr::Err"],[435,"U"],[437,"T"],[447,""],[450,"T"],[451,""],[453,"U,T"],[455,"U"],[457,""],[459,"Target"],[461,""],[463,"V"],[477,""],[483,"T"],[487,""],[492,"T"],[494,""],[495,"U"],[497,"T"],[507,""],[514,"U,T"],[516,"U"],[518,""],[519,"Target"],[521,""],[524,"V"],[535,""],[549,"T"],[559,""],[563,"T"],[567,""],[577,"T"],[581,""],[583,"T"],[584,""],[585,"U"],[590,"T"],[615,""],[619,"T"],[623,""],[624,"U,T"],[629,"U"],[634,""],[635,"Target"],[640,""],[645,"V"],[678,""],[704,"T"],[720,""],[727,"T"],[734,""],[742,"K"],[743,""],[749,"K"],[755,""],[764,"T"],[772,""],[790,"__H"],[792,"U"],[800,"T"],[840,""],[851,"T"],[858,""],[860,"U,T"],[868,"U"],[876,""],[878,"Target"],[886,""],[896,"V"],[924,""],[947,"T"],[963,""],[967,"T"],[971,""],[978,"K"],[981,""],[982,"Deref::Target"],[984,""],[989,"K"],[998,""],[1011,"T"],[1012,""],[1014,"T"],[1015,""],[1017,"T"],[1020,""],[1021,"T"],[1024,"FromStr::Err"],[1027,""],[1028,"__H"],[1031,"U"],[1039,"T"],[1077,""],[1091,"T"],[1095,""],[1101,"U,T"],[1105,"TryFrom::Error"],[1106,"U,T"],[1110,"U"],[1118,""],[1123,"Target"],[1131,""],[1141,"V"],[1149,""]]}]]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
-//{"start":39,"fragment_lengths":[6092,3738,25982]}
\ No newline at end of file
+//{"start":39,"fragment_lengths":[6125,3738,26832]}
\ No newline at end of file
diff --git a/crates/src/tor_interface/arti_process.rs.html b/crates/src/tor_interface/arti_process.rs.html
index cbd69e72..d0c12890 100644
--- a/crates/src/tor_interface/arti_process.rs.html
+++ b/crates/src/tor_interface/arti_process.rs.html
@@ -162,22 +162,84 @@
161
162
163
-164// standard
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
// standard
use std::fs;
+#[cfg(unix)]
+use std::os::unix::fs::PermissionsExt;
use std::fs::File;
use std::io::{BufRead, BufReader, Write};
use std::ops::Drop;
-use std::process;
use std::process::{Child, ChildStdout, Command, Stdio};
use std::path::Path;
use std::sync::{Mutex, Weak};
-use std::time::{Duration, Instant};
#[derive(thiserror::Error, Debug)]
pub enum Error {
- #[error("not implemented")]
- NotImplemented(),
-
#[error("provided arti bin path '{0}' must be an absolute path")]
ArtiBinPathNotAbsolute(String),
@@ -190,12 +252,21 @@
#[error("file exists in provided data directory path '{0}'")]
ArtiDataDirectoryPathExistsAsFile(String),
+ #[error("unable to set permissions for data directory: {0}")]
+ ArtiDataDirectorySetPermissionsFailed(#[source] std::io::Error),
+
#[error("failed to create arti.toml file: {0}")]
ArtiTomlFileCreationFailed(#[source] std::io::Error),
#[error("failed to write arti.toml file: {0}")]
ArtiTomlFileWriteFailed(#[source] std::io::Error),
+ #[error("failed to create rpc.toml file: {0}")]
+ RpcTomlFileCreationFailed(#[source] std::io::Error),
+
+ #[error("failed to write rpc.toml file: {0}")]
+ RpcTomlFileWriteFailed(#[source] std::io::Error),
+
#[error("failed to start arti process: {0}")]
ArtiProcessStartFailed(#[source] std::io::Error),
@@ -237,28 +308,89 @@
)));
}
- // construct paths to arti files file
- let arti_toml = data_directory.join("arti.toml");
+ // arti data directory must not be world-writable on unix platforms when using a unix domain socket endpoint
+ if cfg!(unix) {
+ let perms = PermissionsExt::from_mode(0o700);
+ fs::set_permissions(data_directory, perms).map_err(Error::ArtiDataDirectorySetPermissionsFailed)?;
+ }
- // write arti.toml settings file (always overwrite)
- let cache_dir = data_directory.join("cache").display().to_string();
+ // construct paths to arti files file
+ let arti_toml = data_directory.join("arti.toml").display().to_string();
+ let cache_dir = data_directory.join("cache").display().to_string();
let state_dir = data_directory.join("state").display().to_string();
- let rpc_listen = data_directory.join("SOCKET").display().to_string();
- let arti_toml_content = format!("\
+ let mut arti_toml_content = format!("\
+ [rpc]\n\
+ enable = true\n\n\
+ [rpc.listen.user-default]\n\
+ enable = false\n\n\
+ [rpc.listen.system-default]\n\
+ enable = false\n\n\
[storage]\n\
cache_dir = \"{cache_dir}\"\n\
- state_dir = \"{state_dir}\"\n\
+ state_dir = \"{state_dir}\"\n\n\
[storage.keystore]\n\
- enabled = true\n\
+ enabled = true\n\n\
[storage.keystore.primary]\n\
- kind = \"ephemeral\"\n\
+ kind = \"ephemeral\"\n\n\
[storage.permissions]\n\
- dangerously_trust_everyone = true\n\
- [rpc]\n\
- rpc_listen = \"{rpc_listen}\"\n
+ dangerously_trust_everyone = true\n\n\
");
+ let connect_string = if cfg!(unix) {
+ // use domain socket for unix
+ let unix_rpc_toml_path = data_directory.join("rpc.toml").display().to_string();
+
+ arti_toml_content.push_str(format!("\
+ [rpc.listen.unix-point]\n\
+ enable = true\n\
+ file = \"{unix_rpc_toml_path}\"\n\n\
+ ").as_str());
+
+ let socket_path = data_directory.join("rpc.socket").display().to_string();
+
+ let unix_rpc_toml_content = format!("\
+ [connect]\n\
+ socket = \"unix:{socket_path}\"\n\
+ auth = \"none\"\n\
+ ");
+
+ let mut unix_rpc_toml_file =
+ File::create(&unix_rpc_toml_path).map_err(Error::RpcTomlFileCreationFailed)?;
+ unix_rpc_toml_file
+ .write_all(unix_rpc_toml_content.as_bytes())
+ .map_err(Error::RpcTomlFileWriteFailed)?;
+
+ unix_rpc_toml_path
+ } else {
+ // use tcp socket everywhere else
+ let tcp_rpc_toml_path = data_directory.join("rpc.toml").display().to_string();
+
+ arti_toml_content.push_str(format!("\
+ [rpc.listen.tcp-point]\n\
+ enable = true\n\
+ file = \"{tcp_rpc_toml_path}\"\n\n\
+ ").as_str());
+
+ let cookie_path = data_directory.join("rpc.cookie").display().to_string();
+
+ const RPC_PORT: u16 = 18929;
+
+ let tcp_rpc_toml_content = format!("\
+ [connect]\n\
+ socket = \"inet:127.0.0.1:{RPC_PORT}\"\n\
+ auth = {{ cookie = {{ path = \"{cookie_path}\" }} }}\n\
+ ");
+
+ let mut tcp_rpc_toml_file =
+ File::create(&tcp_rpc_toml_path).map_err(Error::RpcTomlFileCreationFailed)?;
+ tcp_rpc_toml_file
+ .write_all(tcp_rpc_toml_content.as_bytes())
+ .map_err(Error::RpcTomlFileWriteFailed)?;
+
+ tcp_rpc_toml_path
+ };
+
let mut arti_toml_file =
File::create(&arti_toml).map_err(Error::ArtiTomlFileCreationFailed)?;
arti_toml_file
@@ -291,8 +423,6 @@
})
.map_err(Error::ArtiStdoutReadThreadSpawnFailed)?;
- let connect_string = format!("unix:{rpc_listen}");
-
Ok(ArtiProcess { process, connect_string })
}
diff --git a/crates/src/tor_interface/arti_tor_client.rs.html b/crates/src/tor_interface/arti_tor_client.rs.html
index 628b2f01..ae7ac7ec 100644
--- a/crates/src/tor_interface/arti_tor_client.rs.html
+++ b/crates/src/tor_interface/arti_tor_client.rs.html
@@ -252,7 +252,9 @@
251
252
253
-254
// std
+254
+255
+256
// std
use std::collections::BTreeMap;
use std::ops::DerefMut;
use std::path::PathBuf;
@@ -260,7 +262,7 @@
use std::time::{Duration, Instant};
// extern
-use arti_rpc_client_core::{ObjectId, RpcConn, RpcConnBuilder};
+use arti_rpc_client_core::{RpcConn, RpcConnBuilder};
// internal crates
use crate::tor_crypto::*;
@@ -308,7 +310,7 @@
}
pub struct ArtiTorClient {
- daemon: Option<ArtiProcess>,
+ _daemon: Option<ArtiProcess>,
rpc_conn: RpcConn,
pending_log_lines: Arc<Mutex<Vec<String>>>,
pending_events: Arc<Mutex<Vec<TorEvent>>>,
@@ -333,15 +335,17 @@
ArtiProcess::new(arti_bin_path.as_path(), data_directory.as_path(), Arc::downgrade(&pending_log_lines))
.map_err(Error::ArtiProcessCreationFailed)?;
- let builder = RpcConnBuilder::from_connect_string(daemon.connect_string()).unwrap();
-
let rpc_conn = {
- // try to open an rpc conneciton for 5 seconds beore giving up
+ // try to open an rpc connnection for 5 seconds beore giving up
let timeout = Duration::from_secs(5);
let mut rpc_conn: Option<RpcConn> = None;
let start = Instant::now();
while rpc_conn.is_none() && start.elapsed() < timeout {
+
+ let mut builder = RpcConnBuilder::new();
+ builder.prepend_literal_path(daemon.connect_string().into());
+
rpc_conn = builder.connect().map_or(None, |rpc_conn| Some(rpc_conn));
}
@@ -360,12 +364,12 @@
};
let pending_events = std::vec![TorEvent::LogReceived {
- line: "Starting arti-client TorProvider".to_string()
+ line: "Starting arti TorProvider".to_string()
}];
let pending_events = Arc::new(Mutex::new(pending_events));
Ok(Self {
- daemon: Some(daemon),
+ _daemon: Some(daemon),
rpc_conn,
pending_log_lines,
pending_events,
diff --git a/crates/tor_interface/arti_client_tor_client/enum.Error.html b/crates/tor_interface/arti_client_tor_client/enum.Error.html
index d8219857..95b27aaa 100644
--- a/crates/tor_interface/arti_client_tor_client/enum.Error.html
+++ b/crates/tor_interface/arti_client_tor_client/enum.Error.html
@@ -1,4 +1,4 @@
-Error in tor_interface::arti_client_tor_client - Rust pub enum Error {
+Error in tor_interface::arti_client_tor_client - Rust
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/arti_client_tor_client/struct.ArtiClientTorClient.html b/crates/tor_interface/arti_client_tor_client/struct.ArtiClientTorClient.html
index bb80ab0b..94c72264 100644
--- a/crates/tor_interface/arti_client_tor_client/struct.ArtiClientTorClient.html
+++ b/crates/tor_interface/arti_client_tor_client/struct.ArtiClientTorClient.html
@@ -1,4 +1,4 @@
-ArtiClientTorClient in tor_interface::arti_client_tor_client - Rust pub struct ArtiClientTorClient { /* private fields */ }
Expand description
The ArtiClientTorClient
is an in-process arti-client
-based TorProvider
.
+ArtiClientTorClient in tor_interface::arti_client_tor_client - Rust pub struct ArtiClientTorClient { /* private fields */ }
Expand description
The ArtiClientTorClient
is an in-process arti-client
-based TorProvider
.
Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
diff --git a/crates/tor_interface/arti_process/enum.Error.html b/crates/tor_interface/arti_process/enum.Error.html
index 31d77eee..96640c5e 100644
--- a/crates/tor_interface/arti_process/enum.Error.html
+++ b/crates/tor_interface/arti_process/enum.Error.html
@@ -1,15 +1,17 @@
-Error in tor_interface::arti_process - Rust pub enum Error {
- NotImplemented(),
+Error in tor_interface::arti_process - Rust pub enum Error {
ArtiBinPathNotAbsolute(String),
ArtiDataDirectoryPathNotAbsolute(String),
ArtiDataDirectoryCreationFailed(Error),
ArtiDataDirectoryPathExistsAsFile(String),
+ ArtiDataDirectorySetPermissionsFailed(Error),
ArtiTomlFileCreationFailed(Error),
ArtiTomlFileWriteFailed(Error),
+ RpcTomlFileCreationFailed(Error),
+ RpcTomlFileWriteFailed(Error),
ArtiProcessStartFailed(Error),
ArtiProcessStdoutTakeFailed(),
ArtiStdoutReadThreadSpawnFailed(Error),
-}
Variants§
§NotImplemented()
§ArtiBinPathNotAbsolute(String)
§ArtiDataDirectoryPathNotAbsolute(String)
§ArtiDataDirectoryCreationFailed(Error)
§ArtiDataDirectoryPathExistsAsFile(String)
§ArtiTomlFileCreationFailed(Error)
§ArtiTomlFileWriteFailed(Error)
§ArtiProcessStartFailed(Error)
§ArtiProcessStdoutTakeFailed()
§ArtiStdoutReadThreadSpawnFailed(Error)
Trait Implementations§
Source§impl Error for Error
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more1.0.0 · Source§fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations§
§impl Freeze for Error
§impl !RefUnwindSafe for Error
§impl Send for Error
§impl Sync for Error
§impl Unpin for Error
§impl !UnwindSafe for Error
Blanket Implementations§
Source§impl<T> Any for Twhere
+}Variants§
§ArtiBinPathNotAbsolute(String)
§ArtiDataDirectoryPathNotAbsolute(String)
§ArtiDataDirectoryCreationFailed(Error)
§ArtiDataDirectoryPathExistsAsFile(String)
§ArtiDataDirectorySetPermissionsFailed(Error)
§ArtiTomlFileCreationFailed(Error)
§ArtiTomlFileWriteFailed(Error)
§RpcTomlFileCreationFailed(Error)
§RpcTomlFileWriteFailed(Error)
§ArtiProcessStartFailed(Error)
§ArtiProcessStdoutTakeFailed()
§ArtiStdoutReadThreadSpawnFailed(Error)
Trait Implementations§
Source§impl Error for Error
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more1.0.0 · Source§fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations§
§impl Freeze for Error
§impl !RefUnwindSafe for Error
§impl Send for Error
§impl Sync for Error
§impl Unpin for Error
§impl !UnwindSafe for Error
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/arti_process/index.html b/crates/tor_interface/arti_process/index.html
index 8cbd3596..7434261a 100644
--- a/crates/tor_interface/arti_process/index.html
+++ b/crates/tor_interface/arti_process/index.html
@@ -1 +1 @@
-tor_interface::arti_process - Rust
\ No newline at end of file
+tor_interface::arti_process - Rust
\ No newline at end of file
diff --git a/crates/tor_interface/arti_tor_client/enum.ArtiTorClientConfig.html b/crates/tor_interface/arti_tor_client/enum.ArtiTorClientConfig.html
index 26f2a72c..96fc5421 100644
--- a/crates/tor_interface/arti_tor_client/enum.ArtiTorClientConfig.html
+++ b/crates/tor_interface/arti_tor_client/enum.ArtiTorClientConfig.html
@@ -1,4 +1,4 @@
-ArtiTorClientConfig in tor_interface::arti_tor_client - Rust pub enum ArtiTorClientConfig {
+ArtiTorClientConfig in tor_interface::arti_tor_client - Rust
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
Source§impl<T> DynClone for Twhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/arti_tor_client/enum.Error.html b/crates/tor_interface/arti_tor_client/enum.Error.html
index 6d6c872c..2f818e6c 100644
--- a/crates/tor_interface/arti_tor_client/enum.Error.html
+++ b/crates/tor_interface/arti_tor_client/enum.Error.html
@@ -1,4 +1,4 @@
-Error in tor_interface::arti_tor_client - Rust pub enum Error {
+Error in tor_interface::arti_tor_client - Rust
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/arti_tor_client/index.html b/crates/tor_interface/arti_tor_client/index.html
index 8c65cd2c..3394d125 100644
--- a/crates/tor_interface/arti_tor_client/index.html
+++ b/crates/tor_interface/arti_tor_client/index.html
@@ -1,2 +1,2 @@
-tor_interface::arti_tor_client - Rust Expand description
Implementation of an out-of-process arti
-based TorProvider
+tor_interface::arti_tor_client - Rust Expand description
Implementation of an out-of-process arti
-based TorProvider
Structs§
Enums§
ArtiTorClient
-specific error type
\ No newline at end of file
diff --git a/crates/tor_interface/arti_tor_client/struct.ArtiTorClient.html b/crates/tor_interface/arti_tor_client/struct.ArtiTorClient.html
index 4708f4aa..effa231b 100644
--- a/crates/tor_interface/arti_tor_client/struct.ArtiTorClient.html
+++ b/crates/tor_interface/arti_tor_client/struct.ArtiTorClient.html
@@ -1,20 +1,20 @@
-ArtiTorClient in tor_interface::arti_tor_client - Rust pub struct ArtiTorClient { /* private fields */ }
Implementations§
Source§impl ArtiTorClient
Sourcepub fn new(config: ArtiTorClientConfig) -> Result<Self, Error>
Trait Implementations§
Source§impl TorProvider for ArtiTorClient
Source§fn update(&mut self) -> Result<Vec<TorEvent>, Error>
Process and return TorEvent
s handled by this TorProvider
.Source§fn add_client_auth(
+ArtiTorClient in tor_interface::arti_tor_client - Rust pub struct ArtiTorClient { /* private fields */ }
Implementations§
Source§impl ArtiTorClient
Sourcepub fn new(config: ArtiTorClientConfig) -> Result<Self, Error>
Trait Implementations§
Source§impl TorProvider for ArtiTorClient
Source§fn update(&mut self) -> Result<Vec<TorEvent>, Error>
Process and return TorEvent
s handled by this TorProvider
.Source§fn add_client_auth(
&mut self,
_service_id: &V3OnionServiceId,
_client_auth: &X25519PrivateKey,
-) -> Result<(), Error>
Add v3 onion-service authorisation credentials, allowing this TorProvider
to connect to an onion-service whose service-descriptor is encrypted using the assocciated x25519 public key.Source§fn remove_client_auth(
+) -> Result<(), Error>
Add v3 onion-service authorisation credentials, allowing this TorProvider
to connect to an onion-service whose service-descriptor is encrypted using the assocciated x25519 public key.Source§fn remove_client_auth(
&mut self,
_service_id: &V3OnionServiceId,
-) -> Result<(), Error>
Remove a previously added client authorisation credential. This TorProvider
will be unable to connect to the onion-service associated with the removed credentail.Source§fn connect(
+) -> Result<(), Error>
Remove a previously added client authorisation credential. This TorProvider
will be unable to connect to the onion-service associated with the removed credentail.Source§fn connect(
&mut self,
target: TargetAddr,
circuit_token: Option<CircuitToken>,
-) -> Result<OnionStream, Error>
Anonymously connect to the address specified by target
over the Tor Network and return the associated OnionStream
. Read moreSource§fn listener(
+) -> Result<OnionStream, Error>
Anonymously connect to the address specified by target
over the Tor Network and return the associated OnionStream
. Read moreSource§fn listener(
&mut self,
_private_key: &Ed25519PrivateKey,
_virt_port: u16,
_authorized_clients: Option<&[X25519PublicKey]>,
-) -> Result<OnionListener, Error>
Anonymously start an onion-service and return the associated OnionListener
. Read moreSource§fn generate_token(&mut self) -> CircuitToken
Create a new CircuitToken
.Source§fn release_token(&mut self, token: CircuitToken)
Releaes a previously generated CircuitToken
.Auto Trait Implementations§
§impl !Freeze for ArtiTorClient
§impl RefUnwindSafe for ArtiTorClient
§impl Send for ArtiTorClient
§impl Sync for ArtiTorClient
§impl Unpin for ArtiTorClient
§impl UnwindSafe for ArtiTorClient
Blanket Implementations§
Source§impl<T> Any for Twhere
+) -> Result<OnionListener, Error>Anonymously start an onion-service and return the associated OnionListener
. Read moreSource§fn generate_token(&mut self) -> CircuitToken
Create a new CircuitToken
.Source§fn release_token(&mut self, token: CircuitToken)
Releaes a previously generated CircuitToken
.
Auto Trait Implementations§
§impl !Freeze for ArtiTorClient
§impl RefUnwindSafe for ArtiTorClient
§impl Send for ArtiTorClient
§impl Sync for ArtiTorClient
§impl Unpin for ArtiTorClient
§impl UnwindSafe for ArtiTorClient
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
diff --git a/crates/tor_interface/censorship_circumvention/enum.BridgeLineError.html b/crates/tor_interface/censorship_circumvention/enum.BridgeLineError.html
index f1f3f5d4..cd90ec5e 100644
--- a/crates/tor_interface/censorship_circumvention/enum.BridgeLineError.html
+++ b/crates/tor_interface/censorship_circumvention/enum.BridgeLineError.html
@@ -1,4 +1,4 @@
-BridgeLineError in tor_interface::censorship_circumvention - Rust pub enum BridgeLineError {
+BridgeLineError in tor_interface::censorship_circumvention - Rust
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/censorship_circumvention/enum.PluggableTransportConfigError.html b/crates/tor_interface/censorship_circumvention/enum.PluggableTransportConfigError.html
index f9452fd4..240a4264 100644
--- a/crates/tor_interface/censorship_circumvention/enum.PluggableTransportConfigError.html
+++ b/crates/tor_interface/censorship_circumvention/enum.PluggableTransportConfigError.html
@@ -1,4 +1,4 @@
-PluggableTransportConfigError in tor_interface::censorship_circumvention - Rust pub enum PluggableTransportConfigError {
+PluggableTransportConfigError in tor_interface::censorship_circumvention - Rust pub enum PluggableTransportConfigError {
TransportNameInvalid(String),
BinaryPathInvalid(String, String),
}
Expand description
Error returned on failure to construct a PluggableTransportConfig
@@ -16,13 +16,17 @@
T: ?Sized,Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/censorship_circumvention/struct.BridgeLine.html b/crates/tor_interface/censorship_circumvention/struct.BridgeLine.html
index f9f7eccb..21befadf 100644
--- a/crates/tor_interface/censorship_circumvention/struct.BridgeLine.html
+++ b/crates/tor_interface/censorship_circumvention/struct.BridgeLine.html
@@ -1,4 +1,4 @@
-BridgeLine in tor_interface::censorship_circumvention - Rust pub struct BridgeLine { /* private fields */ }
Expand description
Configuration for a bridge line to be used with a pluggable-transport
+BridgeLine in tor_interface::censorship_circumvention - Rust pub struct BridgeLine { /* private fields */ }
Expand description
Configuration for a bridge line to be used with a pluggable-transport
Implementations§
Source§impl BridgeLine
A BridgeLine
contains the information required to connect to a bridge through the means of a particular pluggable-transport (defined in a PluggableTransportConfi
). For more information, see:
- https://tb-manual.torproject.org/bridges/
@@ -28,13 +28,17 @@
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
Source§impl<T> DynClone for Twhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/censorship_circumvention/struct.PluggableTransportConfig.html b/crates/tor_interface/censorship_circumvention/struct.PluggableTransportConfig.html
index 64f145f0..c1bd745c 100644
--- a/crates/tor_interface/censorship_circumvention/struct.PluggableTransportConfig.html
+++ b/crates/tor_interface/censorship_circumvention/struct.PluggableTransportConfig.html
@@ -1,4 +1,4 @@
-PluggableTransportConfig in tor_interface::censorship_circumvention - Rust pub struct PluggableTransportConfig { /* private fields */ }
Expand description
Configuration for a pluggable-transport
+PluggableTransportConfig in tor_interface::censorship_circumvention - Rust pub struct PluggableTransportConfig { /* private fields */ }
Expand description
Configuration for a pluggable-transport
Implementations§
Source§impl PluggableTransportConfig
Configuration struct for a pluggable-transport which conforms to the v1.0 pluggable-transport specification
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
Source§impl<T> DynClone for Twhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/legacy_tor_client/enum.Error.html b/crates/tor_interface/legacy_tor_client/enum.Error.html
index 352718b9..61c0058e 100644
--- a/crates/tor_interface/legacy_tor_client/enum.Error.html
+++ b/crates/tor_interface/legacy_tor_client/enum.Error.html
@@ -1,4 +1,4 @@
-Error in tor_interface::legacy_tor_client - Rust pub enum Error {
+Error in tor_interface::legacy_tor_client - Rust
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/legacy_tor_client/enum.LegacyTorClientConfig.html b/crates/tor_interface/legacy_tor_client/enum.LegacyTorClientConfig.html
index 1f8493ba..9028d6cc 100644
--- a/crates/tor_interface/legacy_tor_client/enum.LegacyTorClientConfig.html
+++ b/crates/tor_interface/legacy_tor_client/enum.LegacyTorClientConfig.html
@@ -1,4 +1,4 @@
-LegacyTorClientConfig in tor_interface::legacy_tor_client - Rust pub enum LegacyTorClientConfig {
+LegacyTorClientConfig in tor_interface::legacy_tor_client - Rust
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
Source§impl<T> DynClone for Twhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/legacy_tor_client/struct.LegacyTorClient.html b/crates/tor_interface/legacy_tor_client/struct.LegacyTorClient.html
index fc184648..0f284a64 100644
--- a/crates/tor_interface/legacy_tor_client/struct.LegacyTorClient.html
+++ b/crates/tor_interface/legacy_tor_client/struct.LegacyTorClient.html
@@ -1,4 +1,4 @@
-LegacyTorClient in tor_interface::legacy_tor_client - Rust pub struct LegacyTorClient { /* private fields */ }
Expand description
A LegacyTorClient
implements the TorProvider
trait using a legacy c-tor daemon backend.
+LegacyTorClient in tor_interface::legacy_tor_client - Rust pub struct LegacyTorClient { /* private fields */ }
Expand description
A LegacyTorClient
implements the TorProvider
trait using a legacy c-tor daemon backend.
The tor process can either be launched and owned by LegacyTorClient
, or it can use an already running tor-daemon. When using an already runnng tor-daemon, the TorProvider::bootstrap()
automatically succeeds, presuming the connected tor-daemon has successfully bootstrapped.
The minimum supported c-tor is version 0.4.6.1.
Implementations§
Source§impl LegacyTorClient
Sourcepub fn new(config: LegacyTorClientConfig) -> Result<LegacyTorClient, Error>
Construct a new LegacyTorClient
from a LegacyTorClientConfig
.
@@ -31,13 +31,17 @@
T: ?Sized,Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
diff --git a/crates/tor_interface/legacy_tor_version/enum.Error.html b/crates/tor_interface/legacy_tor_version/enum.Error.html
index 1df5df1d..19464207 100644
--- a/crates/tor_interface/legacy_tor_version/enum.Error.html
+++ b/crates/tor_interface/legacy_tor_version/enum.Error.html
@@ -1,4 +1,4 @@
-Error in tor_interface::legacy_tor_version - Rust pub enum Error {
+Error in tor_interface::legacy_tor_version - Rust pub enum Error {
ParseError(String),
}
Expand description
LegacyTorVersion
-specific error type
Variants§
Trait Implementations§
Source§impl Error for Error
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more1.0.0 · Source§fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations§
§impl Freeze for Error
§impl RefUnwindSafe for Error
§impl Send for Error
§impl Sync for Error
§impl Unpin for Error
§impl UnwindSafe for Error
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/legacy_tor_version/struct.LegacyTorVersion.html b/crates/tor_interface/legacy_tor_version/struct.LegacyTorVersion.html
index 4e011b2d..4c1a94e5 100644
--- a/crates/tor_interface/legacy_tor_version/struct.LegacyTorVersion.html
+++ b/crates/tor_interface/legacy_tor_version/struct.LegacyTorVersion.html
@@ -1,4 +1,4 @@
-LegacyTorVersion in tor_interface::legacy_tor_version - Rust pub struct LegacyTorVersion { /* private fields */ }
Expand description
Type representing a legacy c-tor daemon’s version number. This version conforms c-tor’s version-spec.
+LegacyTorVersion in tor_interface::legacy_tor_version - Rust pub struct LegacyTorVersion { /* private fields */ }
Expand description
Type representing a legacy c-tor daemon’s version number. This version conforms c-tor’s version-spec.
Implementations§
Source§impl LegacyTorVersion
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
Source§impl<T> DynClone for Twhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/mock_tor_client/enum.Error.html b/crates/tor_interface/mock_tor_client/enum.Error.html
index 8bd0b5a3..10e96269 100644
--- a/crates/tor_interface/mock_tor_client/enum.Error.html
+++ b/crates/tor_interface/mock_tor_client/enum.Error.html
@@ -1,4 +1,4 @@
-Error in tor_interface::mock_tor_client - Rust pub enum Error {
+Error in tor_interface::mock_tor_client - Rust
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/mock_tor_client/struct.MockTorClient.html b/crates/tor_interface/mock_tor_client/struct.MockTorClient.html
index 5c282bf8..110c0d65 100644
--- a/crates/tor_interface/mock_tor_client/struct.MockTorClient.html
+++ b/crates/tor_interface/mock_tor_client/struct.MockTorClient.html
@@ -1,4 +1,4 @@
-MockTorClient in tor_interface::mock_tor_client - Rust pub struct MockTorClient { /* private fields */ }
Expand description
A mock TorProvider
implementation for testing.
+MockTorClient in tor_interface::mock_tor_client - Rust pub struct MockTorClient { /* private fields */ }
Expand description
A mock TorProvider
implementation for testing.
MockTorClient
implements the TorProvider
trait. It creates a fake, in-process Tor Network using local socekts and listeners. No actual traffic ever leaves the local host.
Mock onion-services can be created, connected to, and communiccated with. Connecting to clearnet targets always succeeds by connecting to single local endpoint, but will never send any traffic to connecting clients.
Implementations§
Source§impl MockTorClient
Sourcepub fn new() -> MockTorClient
Construt a new MockTorClient
.
@@ -30,13 +30,17 @@
T: ?Sized,Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
diff --git a/crates/tor_interface/proxy/enum.ProxyConfig.html b/crates/tor_interface/proxy/enum.ProxyConfig.html
index 32d77ca0..36706da1 100644
--- a/crates/tor_interface/proxy/enum.ProxyConfig.html
+++ b/crates/tor_interface/proxy/enum.ProxyConfig.html
@@ -1,4 +1,4 @@
-ProxyConfig in tor_interface::proxy - Rust pub enum ProxyConfig {
+ProxyConfig in tor_interface::proxy - Rust pub enum ProxyConfig {
Socks4(Socks4ProxyConfig),
Socks5(Socks5ProxyConfig),
Https(HttpsProxyConfig),
@@ -19,13 +19,17 @@
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
Source§impl<T> DynClone for Twhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/proxy/enum.ProxyConfigError.html b/crates/tor_interface/proxy/enum.ProxyConfigError.html
index 0ed51311..5ee2abf0 100644
--- a/crates/tor_interface/proxy/enum.ProxyConfigError.html
+++ b/crates/tor_interface/proxy/enum.ProxyConfigError.html
@@ -1,4 +1,4 @@
-ProxyConfigError in tor_interface::proxy - Rust pub enum ProxyConfigError {
+ProxyConfigError in tor_interface::proxy - Rust
pub enum Error {
+Error in gosling::context - Rust pub enum Error {
InvalidArgument(String),
TorNotConnected(),
HandshakeHandleNotFound(HandshakeHandle),
@@ -36,13 +36,17 @@
T: ?Sized,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
diff --git a/crates/gosling/context/struct.Context.html b/crates/gosling/context/struct.Context.html
index 2c3697e4..dc264e76 100644
--- a/crates/gosling/context/struct.Context.html
+++ b/crates/gosling/context/struct.Context.html
@@ -1,4 +1,4 @@
-pub struct Context { /* private fields */ }
Expand description
The gosling protocol implementation.
+pub struct Context { /* private fields */ }
Expand description
The gosling protocol implementation.
The Context
object provides various methods for starting and progressing identity and endpoint handshakes. The general usage pattern developers will follow is to construct a Context
object, connect to the Tor Network using Context::bootstrap()
, optionally start an identity or endpoint servers, and listen for and handle incoming identity and endpoint clients using Context::update()
and the various associated methods. Depending on the application’s requirements, the developer can also initiate identity and endpoint handshakes as necessary.
The Gosling Protocol specification can be found here:
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
+ T: Any,
fn fmt_binary(self) -> FmtBinary<Self>where
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
diff --git a/crates/search-index.js b/crates/search-index.js
index 3247f111..a1242d8e 100644
--- a/crates/search-index.js
+++ b/crates/search-index.js
@@ -1,4 +1,4 @@
-var searchIndex = new Map(JSON.parse('[["gosling",{"t":"CFGPPPPPPPPPPGIPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","n":["context","Context","ContextEvent","EndpointClientError","EndpointClientHandshakeCompleted","EndpointClientHandshakeFailed","EndpointServerChannelRequestReceived","EndpointServerError","EndpointServerHandshakeCompleted","EndpointServerHandshakeFailed","EndpointServerHandshakeRejected","EndpointServerHandshakeStarted","EndpointServerPublished","Error","HandshakeHandle","HandshakeHandleNotFound","HonkRpc","IdentityClientChallengeReceived","IdentityClientError","IdentityClientHandshakeCompleted","IdentityClientHandshakeFailed","IdentityServerChallengeResponseReceived","IdentityServerEndpointRequestReceived","IdentityServerError","IdentityServerHandshakeCompleted","IdentityServerHandshakeFailed","IdentityServerHandshakeRejected","IdentityServerHandshakeStarted","IdentityServerPublished","IncorrectUsage","InvalidArgument","Io","TorBootstrapCompleted","TorBootstrapStatusReceived","TorCrypto","TorLogReceived","TorNotConnected","TorProvider","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","connect","endpoint_client_abort_handshake","endpoint_client_begin_handshake","endpoint_server_handle_channel_request_received","endpoint_server_start","endpoint_server_stop","fmt","","","from","","","","","","","generate_circuit_token","identity_client_abort_handshake","identity_client_begin_handshake","identity_client_handle_challenge_received","identity_server_handle_challenge_response_received","identity_server_handle_endpoint_request_received","identity_server_start","identity_server_stop","into","","","into_any","","","into_any_arc","","into_any_rc","","","new","release_circuit_token","report","source","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","vzip","","","challenge_response","challenge_response_valid","channel_name","","client_allowed","","client_auth_private_key","client_auth_public_key","client_auth_signature_valid","client_proof_signature_valid","","client_requested_channel_valid","client_requested_endpoint_valid","client_service_id","","","","endpoint_challenge","endpoint_name","","","endpoint_private_key","endpoint_service_id","","","","handle","","","","","","","","","","","","","","","","identity_service_id","line","progress","reason","","","","requested_channel","requested_endpoint","stream","","summary","tag"],"q":[[0,"gosling"],[1,"gosling::context"],[108,"gosling::context::ContextEvent"],[163,"core::any"],[164,"core::result"],[165,"tor_interface::tor_provider"],[166,"core::option"],[167,"tor_interface::tor_crypto"],[168,"alloc::string"],[169,"core::fmt"],[170,"honk_rpc::honk_rpc"],[171,"std::io::error"],[172,"bson::document"],[173,"alloc::boxed"],[174,"alloc::sync"],[175,"alloc::rc"],[176,"core::time"],[177,"tor_error::report"],[178,"core::error"],[179,"tor_persist::slug"],[180,"alloc::collections::vec_deque"]],"i":"```lBj00100000``11010000100000111001011h210210021021000000221022222100000000021021210210022202102120210210021EbEdEfEh2EjElEn55225F`1Fb5Fd43Ff4580715FhFj5<6;Fl;FnG`7<;Gb;GdGf7542:;EfEh22","f":"``````````````````````````````````````{b{{b{d}}}}00{{{b{f}}}{{b{fd}}}}00{{{b{fh}}}{{n{jl}}}}{b{{b{c}}}{}}00{{{b{f}}}{{b{fc}}}{}}00{{{b{fh}}A`{Ad{Ab}}}{{n{Afl}}}}{{{b{fh}}Ah}{{n{jl}}}}{{{b{fh}}AjAlAn}{{n{Ahl}}}}{{{b{fh}}AhB`}{{n{jl}}}}{{{b{fh}}BbAnAjBd}{{n{jl}}}}{{{b{fh}}Aj}{{n{jl}}}}{{{b{l}}{b{fBf}}}Bh}0{{{b{Bj}}{b{fBf}}}Bh}{cc{}}{Bll}{Bnl}2{C`l}{Cbl}4{{{b{fh}}}Ab}<{{{b{fh}}AjAn}{{n{Ahl}}}}{{{b{fh}}AhCd}{{n{jl}}}}<{{{b{fh}}AhB`B`Cd}{{n{jl}}}}{{{b{fh}}}{{n{jl}}}}0{{}c{}}00{{{Cf{c}}}{{Cf{d}}}{}}00{{{Ch{c}}}{{Ch{d}}}{}}0{{{Cj{c}}}{{Cj{d}}}{}}00{{{Cf{Cl}}CnCnD`Db{Ad{D`}}Bb}{{n{hl}}}}{{{b{fh}}Ab}j}{b{{Df{Dd}}}}{{{b{l}}}{{Ad{{b{Dh}}}}}}{bAn}{c{{n{e}}}{}{}}00{{}{{n{c}}}{}}00{b{{n{DjDl}}}}{{}{{n{c}}}{}}00{bDn}00{{{b{fh}}}{{n{{E`{Bj}}l}}}}{{}c{}}00```````````````````````````````````````````````````````","D":"Nl","p":[[1,"reference",null,null,1],[10,"Any",163],[0,"mut"],[5,"Context",1],[1,"unit"],[6,"Error",1],[6,"Result",164,null,1],[6,"TargetAddr",165],[8,"CircuitToken",165],[6,"Option",166,null,1],[5,"OnionStream",165],[8,"HandshakeHandle",1],[5,"V3OnionServiceId",167],[5,"X25519PrivateKey",167],[5,"String",168],[1,"bool"],[5,"Ed25519PrivateKey",167],[5,"X25519PublicKey",167],[5,"Formatter",169],[8,"Result",169],[6,"ContextEvent",1],[6,"Error",165],[6,"Error",167],[6,"Error",170],[5,"Error",171],[5,"Document",172],[5,"Box",173,null,1],[5,"Arc",174,null,1],[5,"Rc",175,null,1],[10,"TorProvider",165],[1,"u16"],[5,"Duration",176],[1,"i32"],[5,"ReportHelper",177],[5,"Report",177],[10,"Error",178],[5,"Slug",179],[6,"BadSlug",179],[5,"TypeId",163],[5,"VecDeque",180],[15,"IdentityServerChallengeResponseReceived",108],[15,"IdentityServerHandshakeRejected",108],[15,"EndpointClientHandshakeCompleted",108],[15,"EndpointServerHandshakeCompleted",108],[15,"EndpointServerHandshakeRejected",108],[15,"IdentityClientHandshakeCompleted",108],[15,"IdentityServerHandshakeCompleted",108],[15,"IdentityServerEndpointRequestReceived",108],[15,"EndpointServerChannelRequestReceived",108],[15,"IdentityClientChallengeReceived",108],[15,"EndpointServerPublished",108],[15,"IdentityClientHandshakeFailed",108],[15,"IdentityServerHandshakeStarted",108],[15,"IdentityServerHandshakeFailed",108],[15,"EndpointClientHandshakeFailed",108],[15,"EndpointServerHandshakeStarted",108],[15,"EndpointServerHandshakeFailed",108],[15,"TorLogReceived",108],[15,"TorBootstrapStatusReceived",108]],"r":[],"b":[[57,"impl-Debug-for-Error"],[58,"impl-Display-for-Error"],[61,"impl-From%3CError%3E-for-Error"],[62,"impl-From%3CError%3E-for-Error"],[64,"impl-From%3CError%3E-for-Error"],[65,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAC0ACAAnAAUALgAFADoAAgA+AAEAQQABAE8ABwBZAA8AagACAA==","P":[[45,"T"],[51,""],[60,"T"],[61,""],[63,"T"],[64,""],[66,"T"],[67,""],[75,"U"],[78,"T"],[86,""],[91,"U,T"],[94,"U"],[97,""],[98,"Target"],[101,""],[105,"V"]]}],["honk_rpc",{"t":"CKPPPPPSSGPGPPPPPPPPIPPPPGPPPPPPFPPPPPNNNNNNNNNNNNNNNMNNNNNNNNNHNNHHHNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNOOOOO","n":["honk_rpc","ApiSet","BsonDocumentParseFailed","BsonDocumentSizeTooLarge","BsonDocumentSizeTooSmall","BsonParseFailed","BsonWriteFailed","DEFAULT_MAX_MESSAGE_SIZE","DEFAULT_MAX_WAIT_TIME","Error","","ErrorCode","InvalidMaxMesageSize","MessageConversionFailed","MessageParseFailed","MessageReadTimedOut","MessageTooBig","MessageVersionIncompatible","Pending","ReaderReadFailed","RequestCookie","RequestCookieInvalid","RequestFunctionInvalid","RequestNamespaceInvalid","RequestVersionInvalid","Response","ResponseCookieInvalid","ResponseStateInvalid","Runtime","SectionIdUnknown","SectionParseFailed","SectionTooLarge","Session","Success","Unknown","UnknownErrorSectionReceived","WriterFlushFailed","WriterWriteFailed","borrow","","","","borrow_mut","","","","client_call","client_drain_responses","client_next_response","eq","equivalent","","","exec_function","fmt","","","","from","","","","","get_error_section_size","get_max_message_size","get_max_wait_time","get_message_overhead","get_request_section_size","get_response_section_size","into","","","","into_stream","namespace","new","next_result","set_max_message_size","set_max_wait_time","source","to_string","","try_from","","","","try_into","","","","type_id","","","","update","","vzip","","","","cookie","","","error_code","result"],"q":[[0,"honk_rpc"],[1,"honk_rpc::honk_rpc"],[100,"honk_rpc::honk_rpc::Response"],[105,"bson::document"],[106,"core::result"],[107,"std::io"],[108,"core::marker"],[109,"alloc::collections::vec_deque::drain"],[110,"core::option"],[111,"bson::bson"],[112,"core::fmt"],[113,"alloc::string"],[114,"core::time"],[115,"core::error"],[116,"core::any"]],"i":"``A`00B`1```Aj`22121102`1111`111112`012220f2310230002222Bd334421334`11```2134101011434213421342134012134ClCnD`01","f":"``````````````````````````````````````{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{{b{d{f{c}}}}{b{h}}{b{h}}jl}{{Ab{nA`}}}{AdAfAh}}{{{b{d{f{c}}}}}{{Al{Aj}}}{AdAfAh}}{{{b{d{f{c}}}}}{{An{Aj}}}{AdAfAh}}{{{b{B`}}{b{B`}}}Bb}{{b{b{c}}}Bb{}}00{{{b{dBd}}{b{h}}jl{An{n}}}{{An{{Ab{{An{Bf}}B`}}}}}}{{{b{B`}}{b{dBh}}}Bj}0{{{b{A`}}{b{dBh}}}Bj}0{cc{}}00{jB`}1{{{An{n}}{An{Bl}}{An{Bf}}}{{Ab{BnA`}}}}{{{b{{f{c}}}}}Bn{AdAfAh}}{{{b{{f{c}}}}}C`{AdAfAh}}{{}{{Ab{BnA`}}}}{{{An{n}}{An{Bl}}Bl{An{j}}{An{l}}}{{Ab{BnA`}}}}{{{An{Bf}}}{{Ab{BnA`}}}}{{}c{}}000{{{f{c}}}c{AdAfAh}}{{{b{Bd}}}{{b{h}}}}{c{{f{c}}}{AdAfAh}}{{{b{dBd}}}{{An{{Cb{n{Ab{{An{Bf}}B`}}}}}}}}{{{b{d{f{c}}}}j}{{Ab{CdA`}}}{AdAfAh}}{{{b{d{f{c}}}}C`}Cd{AdAfAh}}{{{b{A`}}}{{An{{b{Cf}}}}}}{bBl}0{c{{Ab{e}}}{}{}}000{{}{{Ab{c}}}{}}000{bCh}000{{{b{dBd}}}Cd}{{{b{d{f{c}}}}{An{{b{d{Cj{{b{dBd}}}}}}}}}{{Ab{CdA`}}}{AdAfAh}}{{}c{}}000`````","D":"Hj","p":[[1,"reference",null,null,1],[0,"mut"],[5,"Session",1],[1,"str"],[1,"i32"],[5,"Document",105],[8,"RequestCookie",1],[6,"Error",1],[6,"Result",106,null,1],[10,"Read",107],[10,"Write",107],[10,"Send",108],[6,"Response",1],[5,"Drain",109],[6,"Option",110,null,1],[6,"ErrorCode",1],[1,"bool"],[10,"ApiSet",1],[6,"Bson",111],[5,"Formatter",112],[8,"Result",112],[5,"String",113],[1,"usize"],[5,"Duration",114],[1,"tuple",null,null,1],[1,"unit"],[10,"Error",115],[5,"TypeId",116],[1,"slice"],[15,"Pending",100],[15,"Success",100],[15,"Error",100]],"r":[],"b":[[54,"impl-Debug-for-ErrorCode"],[55,"impl-Display-for-ErrorCode"],[56,"impl-Display-for-Error"],[57,"impl-Debug-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACQABwABAAAAJwAHADIAAwA3AAMAPgAAAFAADgBhAAMA","P":[[38,"T"],[46,"RW"],[49,""],[50,"K"],[53,""],[58,"T"],[61,""],[62,"T"],[63,""],[64,"RW"],[66,""],[69,"U"],[73,"RW"],[74,""],[75,"RW"],[76,""],[77,"RW"],[79,""],[82,"U,T"],[86,"U"],[90,""],[95,"RW"],[96,"V"]]}],["tor_interface",{"t":"CCCCCCCCCCPPPPFGPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPPPPGPNNNNNNNNNNNNNNNNNNNNPPPPFGPPGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOPPPPFGPPPFGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPGPPPFGPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOGFPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPGFPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPFGGPFPFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPSSSSSSSFFFGPPPGFSSFFSSSSSSPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPIPFGPPGFFPPFPPGGKPNNNNNMNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNOOOOO","n":["arti_client_tor_client","arti_process","arti_tor_client","censorship_circumvention","legacy_tor_client","legacy_tor_version","mock_tor_client","proxy","tor_crypto","tor_provider","ArtiClientConfigBuilderError","ArtiClientError","ArtiClientOnionServiceLaunchError","ArtiClientTorAddrError","ArtiClientTorClient","Error","NotImplemented","OnionServiceConfigBuilderError","TcpListenerAcceptFailed","TcpListenerBindFailed","TcpListenerLocalAddrFailed","TcpStreamConnectFailed","TcpStreamIntoFailed","TorKeyMgrError","add_client_auth","as_any","","as_any_mut","","bootstrap","borrow","","borrow_mut","","connect","fmt","","from","","generate_token","into","","into_any","","into_any_arc","","into_any_rc","","listener","new","release_token","remove_client_auth","report","source","to_string","try_from","","try_into","","try_into_slug","try_octets_into","","type_id","","update","vzip","","ArtiBinPathNotAbsolute","ArtiDataDirectoryCreationFailed","ArtiDataDirectoryPathExistsAsFile","ArtiDataDirectoryPathNotAbsolute","ArtiProcessStartFailed","ArtiProcessStdoutTakeFailed","ArtiStdoutReadThreadSpawnFailed","ArtiTomlFileCreationFailed","ArtiTomlFileWriteFailed","Error","NotImplemented","as_any","as_any_mut","borrow","borrow_mut","fmt","","from","into","into_any","into_any_arc","into_any_rc","report","source","to_string","try_from","try_into","try_into_slug","try_octets_into","type_id","vzip","ArtiNotBootstrapped","ArtiOpenStreamFailed","ArtiProcessCreationFailed","ArtiRpcConnectFailed","ArtiTorClient","ArtiTorClientConfig","BundledArti","CircuitTokenInvalid","Error","NotImplemented","SystemArti","__clone_box","add_client_auth","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","connect","fmt","","","from","","","generate_token","into","","","into_any","","","into_any_arc","","","into_any_rc","","","listener","new","release_token","remove_client_auth","report","source","to_owned","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","vzip","","","arti_bin_path","data_directory","AddressMissing","AddressParseFailed","AddressPortInvalid","BinaryPathInvalid","BridgeLine","BridgeLineError","FingerprintInvalid","FingerprintMissing","KeyValueInvalid","PluggableTransportConfig","PluggableTransportConfigError","TransportMissing","TransportNameInvalid","","__clone_box","","add_option","address","as_any","","","","as_any_mut","","","","as_legacy_tor_setconf_value","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fingerprint","fmt","","","","","","from","","","","from_str","into","","","","into_any","","","","into_any_arc","","","","into_any_rc","","","","keyvalues","new","","options","path_to_binary","report","","to_owned","","to_string","","transport","transports","try_from","","","","try_into","","","","try_into_slug","","try_octets_into","","","","type_id","","","","vzip","","","","AddOnionFailed","BridgeTransportNotSupported","BridgeTransportTypeMultiplyDefined","BundledTor","CircuitTokenInvalid","DelOnionFailed","Error","GetInfoNetListenersSocksFailed","GetInfoVersionFailed","LegacyControlStreamCreationFailed","LegacyTorClient","LegacyTorClientConfig","LegacyTorControllerCreationFailed","LegacyTorNotBootstrapped","LegacyTorProcessAuthenticationFailed","LegacyTorProcessCreationFailed","LegacyTorProcessTooOld","NoSocksListenersFound","NotImplemented","OnionClientAuthAddFailed","OnionClientAuthRemoveFailed","PluggableTransportBinaryNameNotUtf8Representnable","PluggableTransportConfigDirectoryCreationFailed","PluggableTransportConfigError","PluggableTransportDirectoryNameCollision","PluggableTransportSymlinkCreationFailed","PluggableTransportSymlinkRemovalFailed","SetConfDisableNetwork0Failed","SetConfFailed","SetEventsFailed","Socks5ConnectionFailed","SystemTor","TcpListenerBindFailed","TcpListenerLocalAddrFailed","WaitAsyncEventsFailed","__clone_box","add_client_auth","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","connect","fmt","","","from","","","generate_token","into","","","into_any","","","into_any_arc","","","into_any_rc","","","listener","new","release_token","remove_client_auth","report","source","to_owned","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","version","vzip","","","allowed_ports","bridge_lines","data_directory","pluggable_transports","proxy_settings","tor_bin_path","tor_control_addr","tor_control_passwd","tor_socks_addr","Error","LegacyTorVersion","ParseError","__clone_box","as_any","","as_any_mut","","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","eq","fmt","","from","","from_str","into","","into_any","","into_any_arc","","into_any_rc","","new","partial_cmp","report","to_owned","to_string","","try_from","","try_into","","try_into_slug","","try_octets_into","","type_id","","vzip","","ClientAlreadyBootstrapped","ClientNotBootstrapped","ConnectFailed","Error","MockTorClient","NotImplemented","OnionServiceAuthInvalid","OnionServiceNotFound","OnionServiceNotPublished","OnionServiceRequiresOnionAuth","TcpListenerBindFailed","TcpListenerLocalAddrFailed","add_client_auth","as_any","","as_any_mut","","bootstrap","borrow","","borrow_mut","","connect","default","drop","fmt","","from","","generate_token","into","","into_any","","into_any_arc","","into_any_rc","","listener","new","release_token","remove_client_auth","report","source","to_string","try_from","","try_into","","try_into_slug","try_octets_into","","type_id","","update","vzip","","Generic","Https","HttpsProxyConfig","ProxyConfig","ProxyConfigError","Socks4","Socks4ProxyConfig","Socks5","Socks5ProxyConfig","__clone_box","","","","as_any","","","","","as_any_mut","","","","","borrow","","","","","borrow_mut","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","fmt","","","","","","from","","","","","","","","into","","","","","into_any","","","","","into_any_arc","","","","","into_any_rc","","","","","new","","","report","to_owned","","","","to_string","try_from","","","","","try_into","","","","","try_into_slug","try_octets_into","","","","","type_id","","","","","vzip","","","","","ConversionError","ED25519_PRIVATE_KEYBLOB_BASE64_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_HEADER_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_SIZE","ED25519_PRIVATE_KEY_SIZE","ED25519_PUBLIC_KEY_SIZE","ED25519_SIGNATURE_SIZE","Ed25519PrivateKey","Ed25519PublicKey","Ed25519Signature","Error","KeyInvalid","One","ParseError","SignBit","V3OnionServiceId","V3_ONION_SERVICE_ID_STRING_LENGTH","V3_ONION_SERVICE_ID_STRING_SIZE","X25519PrivateKey","X25519PublicKey","X25519_PRIVATE_KEY_BASE64_LENGTH","X25519_PRIVATE_KEY_BASE64_SIZE","X25519_PRIVATE_KEY_SIZE","X25519_PUBLIC_KEY_BASE32_LENGTH","X25519_PUBLIC_KEY_BASE32_SIZE","X25519_PUBLIC_KEY_SIZE","Zero","__clone_box","","","","","","","as_any","","","","","","","","as_any_mut","","","","","","","","as_bytes","","","borrow","","","","","","","","borrow_mut","","","","","","","","clone","","","","","","","clone_into","","","","","","","clone_to_uninit","","","","","","","cmp","compare","eq","","","","","","equivalent","","","","","","fmt","","","","","","","","","from","","","","","","","","","from_base32","from_base64","from_key_blob","from_private_key","","","from_private_x25519","from_public_key","from_raw","","","","","from_service_id","from_string","generate","","hash","","into","","","","","","","","into_any","","","","","","","","into_any_arc","","","","","","","","into_any_rc","","","","","","","","is_valid","partial_cmp","report","sign_message","","to_base32","to_base64","to_bytes","","","to_key_blob","to_owned","","","","","","","to_string","","try_from","","","","","","","","try_into","","","","","","","","try_into_slug","","try_octets_into","","","","","","","","type_id","","","","","","","","verify","verify_x25519","vzip","","","","","","","","BootstrapComplete","BootstrapStatus","CircuitToken","Domain","DomainAddr","Error","Generic","LogReceived","OnionAddr","OnionAddrV3","OnionListener","OnionService","OnionServicePublished","OnionStream","ParseFailure","Socket","TargetAddr","TorEvent","TorProvider","V3","__clone_box","","","","accept","add_client_auth","as_any","","","","","","","","as_any_mut","","","","","","","","bootstrap","borrow","","","","","","","","borrow_mut","","","","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","cmp","","","compare","","","connect","deref","deref_mut","domain","drop","eq","","","equivalent","","","","","","","","","flush","fmt","","","","","","","","","","","","from","","","","","","","","","","","","","from_str","","","generate_token","hash","","","into","","","","","","","","into_any","","","","","","","","into_any_arc","","","","","","","into_any_rc","","","","","","","","listener","local_addr","new","partial_cmp","","","peer_addr","port","read","release_token","remove_client_auth","report","service_id","set_nonblocking","to_owned","","","","to_string","","","","","try_clone","try_from","","","","","","","","","try_into","","","","","","","","try_into_slug","","","","","try_octets_into","","","","","","","","type_id","","","","","","","","update","virt_port","vzip","","","","","","","","write","","line","progress","service_id","summary","tag"],"q":[[0,"tor_interface"],[10,"tor_interface::arti_client_tor_client"],[67,"tor_interface::arti_process"],[98,"tor_interface::arti_tor_client"],[172,"tor_interface::arti_tor_client::ArtiTorClientConfig"],[174,"tor_interface::censorship_circumvention"],[278,"tor_interface::legacy_tor_client"],[377,"tor_interface::legacy_tor_client::LegacyTorClientConfig"],[386,"tor_interface::legacy_tor_version"],[433,"tor_interface::mock_tor_client"],[490,"tor_interface::proxy"],[604,"tor_interface::tor_crypto"],[842,"tor_interface::tor_provider"],[1074,"tor_interface::tor_provider::TorEvent"],[1079,"core::result"],[1080,"core::any"],[1081,"core::option"],[1082,"core::fmt"],[1083,"alloc::boxed"],[1084,"alloc::sync"],[1085,"alloc::rc"],[1086,"tokio::runtime::runtime"],[1087,"std::path"],[1088,"tor_error::report"],[1089,"core::error"],[1090,"alloc::string"],[1091,"tor_persist::slug"],[1092,"alloc::vec"],[1093,"dyn_clone::sealed"],[1094,"core::net::socket_addr"],[1095,"core::cmp"],[1096,"core::hash"],[1097,"std::io::error"],[1098,"der::error"]],"i":"``````````Al000``00000000d010100101011010010101010000111010110101001Dh00000000`000000000000000000000Eb000``Dn1`100Dl0210210021021111022102100210210210210000221202102120210210021Il0El00Ej``111``101EdEf1012031203012031203101010012203312030120312031203120301011231023011203120323120312031203Fh00Ff11`111``111111111111111111101110Fd02102100210211110221021002102102102100002212021021202102100021In00000J`00``FnFj1010101000001110010101010001010101010101010Gf00``0000000Gd01010010100011010010101010000111010110101001H`Gn```0`0`GhGjGl342103421034210342103210321032103442103421033334210342103421034210321042103442103421034421034210342103Hj```````````0Hh1````````````0BhHbHfjBlh657432106574321064105743210657432106543210654321065432106005432101110005774321005743210661254105054321405210574321065743210657432106574321060075212532554321067057432106574321067057432106574321063357432106Dd0`Ad``n2```12`01```IdIb1If4C`I`1534267Aj264537801264537802645378045374537453745345310032453444555333066445533778026666645377805371453264537802645378064537802645378010445303011642453764537026453378026453780645372645378026453780142645378000JbJdJf11","f":"````````````````````````{{{f{bd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{{{f{bd}}}{{A`{ln}}}}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{bd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Al}}{f{bAn}}}B`}0{cc{}}0{{{f{bd}}}Af}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}0{{{f{bd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{{{Bd{Cb}}{f{Cd}}}{{A`{dAl}}}}{{{f{bd}}Af}l}{{{f{bd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Al}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0{fDb}0{{{f{bd}}}{{A`{{Df{Dd}}n}}}}{{}c{}}0```````````{f{{f{Ab}}}}{{{f{b}}}{{f{bAb}}}}{f{{f{c}}}{}}{{{f{b}}}{{f{bc}}}{}}{{{f{Dh}}{f{bAn}}}B`}0{cc{}}{{}c{}}{{{Bb{c}}}{{Bb{Ab}}}{}}{{{Bd{c}}}{{Bd{Ab}}}{}}{{{Bf{c}}}{{Bf{Ab}}}{}}{f{{Ch{Cf}}}}{{{f{Dh}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}{{}{{A`{c}}}{}}{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}{fDb}{{}c{}}```````````{{fDj}l}{{{f{bDl}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}00{{{f{b}}}{{f{bAb}}}}00{{{f{bDl}}}{{A`{ln}}}}{f{{f{c}}}{}}00{{{f{b}}}{{f{bc}}}{}}00{{{f{Dn}}}Dn}{{f{f{bc}}}l{}}{{fE`}l}{{{f{bDl}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Eb}}{f{bAn}}}B`}0{{{f{Dn}}{f{bAn}}}B`}{cc{}}00{{{f{bDl}}}Af}{{}c{}}00{{{Bb{c}}}{{Bb{Ab}}}{}}00{{{Bd{c}}}{{Bd{Ab}}}{}}00{{{Bf{c}}}{{Bf{Ab}}}{}}00{{{f{bDl}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{Dn{{A`{Dln}}}}{{{f{bDl}}Af}l}{{{f{bDl}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Eb}}}{{Ah{{f{Cj}}}}}}{fc{}}{fCl}{c{{A`{e}}}{}{}}00{{}{{A`{c}}}{}}00{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}00{fDb}00{{{f{bDl}}}{{A`{{Df{Dd}}n}}}}{{}c{}}00````````````````{{fDj}l}0{{{f{bEd}}Cl}l}{{{f{Ef}}}{{f{Eh}}}}{f{{f{Ab}}}}000{{{f{b}}}{{f{bAb}}}}000{{{f{Ef}}}Cl}{f{{f{c}}}{}}000{{{f{b}}}{{f{bc}}}{}}000{{{f{Ed}}}Ed}{{{f{Ef}}}Ef}{{f{f{bc}}}l{}}0{{fE`}l}0{{{f{Ef}}}{{f{Cl}}}}{{{f{Ed}}{f{bAn}}}B`}{{{f{Ej}}{f{bAn}}}B`}0{{{f{Ef}}{f{bAn}}}B`}{{{f{El}}{f{bAn}}}B`}0{cc{}}000{{{f{En}}}{{A`{Efc}}}{}}{{}c{}}000{{{Bb{c}}}{{Bb{Ab}}}{}}000{{{Bd{c}}}{{Bd{Ab}}}{}}000{{{Bf{c}}}{{Bf{Ab}}}{}}000{{{f{Ef}}}{{f{{Df{{F`{ClCl}}}}}}}}{{{Df{Cl}}Fb}{{A`{EdEj}}}}{{ClEhCl{Df{{F`{ClCl}}}}}{{A`{EfEl}}}}{{{f{Ed}}}{{f{{Df{Cl}}}}}}{{{f{Ed}}}{{f{Fb}}}}{f{{Ch{Cf}}}}0{fc{}}0{fCl}0{{{f{Ef}}}{{f{Cl}}}}5{c{{A`{e}}}{}{}}000{{}{{A`{c}}}{}}000{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}000{fDb}000{{}c{}}000```````````````````````````````````{{fDj}l}{{{f{bFd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}00{{{f{b}}}{{f{bAb}}}}00{{{f{bFd}}}{{A`{ln}}}}{f{{f{c}}}{}}00{{{f{b}}}{{f{bc}}}{}}00{{{f{Ff}}}Ff}{{f{f{bc}}}l{}}{{fE`}l}{{{f{bFd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Fh}}{f{bAn}}}B`}0{{{f{Ff}}{f{bAn}}}B`}{cc{}}00{{{f{bFd}}}Af}{{}c{}}00{{{Bb{c}}}{{Bb{Ab}}}{}}00{{{Bd{c}}}{{Bd{Ab}}}{}}00{{{Bf{c}}}{{Bf{Ab}}}{}}00{{{f{bFd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{Ff{{A`{FdFh}}}}{{{f{bFd}}Af}l}{{{f{bFd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Fh}}}{{Ah{{f{Cj}}}}}}{fc{}}{fCl}{c{{A`{e}}}{}{}}00{{}{{A`{c}}}{}}00{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}00{fDb}00{{{f{bFd}}}{{A`{{Df{Dd}}n}}}}{{{f{bFd}}}Fj}{{}c{}}00````````````{{fDj}l}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{Fj}}}Fj}{{f{f{bc}}}l{}}{{fE`}l}{{{f{Fj}}{f{Fj}}}Fl}{{{f{Fn}}{f{bAn}}}B`}0{cc{}}0{{{f{En}}}{{A`{Fjc}}}{}}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}0{{G`G`G`{Ah{G`}}{Ah{{f{En}}}}}{{A`{FjFn}}}}{{{f{Fj}}{f{Fj}}}{{Ah{Gb}}}}{f{{Ch{Cf}}}}{fc{}}{fCl}{{{f{Fj}}}Cl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}0{fDb}0{{}c{}}0````````````{{{f{bGd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{{{f{bGd}}}{{A`{ln}}}}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{bGd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{}Gd}{{{f{bGd}}}l}{{{f{Gf}}{f{bAn}}}B`}0{cc{}}0{{{f{bGd}}}Af}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}0{{{f{bGd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}9{{{f{bGd}}Af}l}{{{f{bGd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Gf}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0{fDb}0{{{f{bGd}}}{{A`{{Df{Dd}}n}}}}{{}c{}}0`````````{{fDj}l}000{f{{f{Ab}}}}0000{{{f{b}}}{{f{bAb}}}}0000{f{{f{c}}}{}}0000{{{f{b}}}{{f{bc}}}{}}0000{{{f{Gh}}}Gh}{{{f{Gj}}}Gj}{{{f{Gl}}}Gl}{{{f{Gn}}}Gn}{{f{f{bc}}}l{}}000{{fE`}l}000{{{f{H`}}{f{bAn}}}B`}0{{{f{Gh}}{f{bAn}}}B`}{{{f{Gj}}{f{bAn}}}B`}{{{f{Gl}}{f{bAn}}}B`}{{{f{Gn}}{f{bAn}}}B`}{cc{}}000{GhGn}{GjGn}2{GlGn}{{}c{}}0000{{{Bb{c}}}{{Bb{Ab}}}{}}0000{{{Bd{c}}}{{Bd{Ab}}}{}}0000{{{Bf{c}}}{{Bf{Ab}}}{}}0000{Ad{{A`{GhH`}}}}{{Ad{Ah{Cl}}{Ah{Cl}}}{{A`{GjH`}}}}{{Ad{Ah{Cl}}{Ah{Cl}}}{{A`{GlH`}}}}{f{{Ch{Cf}}}}{fc{}}000{fCl}{c{{A`{e}}}{}{}}0000{{}{{A`{c}}}{}}0000{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0000{fDb}0000{{}c{}}0000````````````````````````````{{fDj}l}000000{f{{f{Ab}}}}0000000{{{f{b}}}{{f{bAb}}}}0000000{{{f{Hb}}}{{f{{Hd{E`}}}}}}{{{f{Bl}}}{{f{{Hd{E`}}}}}}{{{f{h}}}{{f{{Hd{E`}}}}}}{f{{f{c}}}{}}0000000{{{f{b}}}{{f{bc}}}{}}0000000{{{f{Bh}}}Bh}{{{f{Hb}}}Hb}{{{f{Hf}}}Hf}{{{f{j}}}j}{{{f{Bl}}}Bl}{{{f{h}}}h}{{{f{Hh}}}Hh}{{f{f{bc}}}l{}}000000{{fE`}l}000000{{{f{h}}{f{h}}}Gb}{{f{f{c}}}Gb{}}{{{f{Bh}}{f{Bh}}}Fl}{{{f{Hb}}{f{Hb}}}Fl}{{{f{Hf}}{f{Hf}}}Fl}{{{f{j}}{f{j}}}Fl}{{{f{Bl}}{f{Bl}}}Fl}{{{f{h}}{f{h}}}Fl}{{f{f{c}}}Fl{}}00000{{{f{Bh}}{f{bAn}}}B`}{{{f{Hj}}{f{bAn}}}B`}0{{{f{Hb}}{f{bAn}}}B`}{{{f{Hf}}{f{bAn}}}B`}{{{f{j}}{f{bAn}}}B`}{{{f{Bl}}{f{bAn}}}B`}{{{f{h}}{f{bAn}}}B`}0{cc{}}0000000{FlHh}{{{f{En}}}{{A`{BlHj}}}}{{{f{En}}}{{A`{jHj}}}}{{{f{En}}}{{A`{BhHj}}}}{{{f{Bh}}}Hb}{{{f{j}}}Bl}{{{f{Bh}}}h}{{{f{j}}}{{A`{{F`{BhHh}}Hj}}}}{{{f{Hb}}}h}{{{f{{Hd{E`}}}}}{{A`{BhHj}}}}{{{f{{Hd{E`}}}}}{{A`{HbHj}}}}{{{f{{Hd{E`}}}}}{{A`{HfHj}}}}{{{f{{Hd{E`}}}}}{{A`{jHj}}}}{{{f{{Hd{E`}}}}}Bl}{{{f{h}}}{{A`{HbHj}}}}{{{f{En}}}{{A`{hHj}}}}{{}Bh}{{}j}{{{f{Bl}}{f{bc}}}lHl}{{{f{h}}{f{bc}}}lHl}{{}c{}}0000000{{{Bb{c}}}{{Bb{Ab}}}{}}0000000{{{Bd{c}}}{{Bd{Ab}}}{}}0000000{{{Bf{c}}}{{Bf{Ab}}}{}}0000000{{{f{En}}}Fl}{{{f{h}}{f{h}}}{{Ah{Gb}}}}{f{{Ch{Cf}}}}{{{f{Bh}}{f{{Bn{E`}}}}}Hf}{{{f{j}}{f{{Bn{E`}}}}}{{A`{{F`{HfHh}}Hj}}}}{{{f{Bl}}}Cl}{{{f{j}}}Cl}{{{f{Bh}}}{{Hd{E`}}}}{{{f{Hf}}}{{Hd{E`}}}}{{{f{j}}}{{Hd{E`}}}}{{{f{Bh}}}Cl}{fc{}}000000{fCl}0{c{{A`{e}}}{}{}}0000000{{}{{A`{c}}}{}}0000000{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}0000000{fDb}0000000{{{f{Hf}}{f{{Bn{E`}}}}{f{Hb}}}Fl}{{{f{Hf}}{f{{Bn{E`}}}}{f{Bl}}Hh}Fl}{{}c{}}0000000````````````````````{{fDj}l}000{{{f{C`}}}{{A`{{Ah{Aj}}Hn}}}}{{{f{bI`}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0000000{{{f{b}}}{{f{bAb}}}}0000000{{{f{bI`}}}{{A`{ln}}}}{f{{f{c}}}{}}0000000{{{f{b}}}{{f{bc}}}{}}0000000{{{f{Ib}}}Ib}{{{f{Id}}}Id}{{{f{If}}}If}{{{f{Ad}}}Ad}{{f{f{bc}}}l{}}000{{fE`}l}000{{{f{Ib}}{f{Ib}}}Gb}{{{f{Id}}{f{Id}}}Gb}{{{f{If}}{f{If}}}Gb}{{f{f{c}}}Gb{}}00{{{f{bI`}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Aj}}}{{f{c}}}{}}{{{f{bAj}}}{{f{bc}}}{}}{{{f{If}}}{{f{En}}}}{{{f{bC`}}}l}{{{f{Ib}}{f{Ib}}}Fl}{{{f{Id}}{f{Id}}}Fl}{{{f{If}}{f{If}}}Fl}{{f{f{c}}}Fl{}}00000000{{{f{bAj}}}{{A`{lHn}}}}{{{f{n}}{f{bAn}}}B`}0{{{f{Ib}}{f{bAn}}}B`}0{{{f{Id}}{f{bAn}}}B`}0{{{f{If}}{f{bAn}}}B`}0{{{f{Ad}}{f{bAn}}}B`}0{{{f{Dd}}{f{bAn}}}B`}{{{f{Aj}}{f{bAn}}}B`}{cc{}}{Ebn}{Aln}{Fhn}{Gfn}44444{{{F`{hBj}}}Ad}55{{{f{En}}}{{A`{Idc}}}{}}{{{f{En}}}{{A`{Ifc}}}{}}{{{f{En}}}{{A`{Adc}}}{}}{{{f{bI`}}}Af}{{{f{Ib}}{f{bc}}}lHl}{{{f{Id}}{f{bc}}}lHl}{{{f{If}}{f{bc}}}lHl}{{}c{}}0000000{{{Bb{c}}}{{Bb{Ab}}}{}}0000000{{{Bd{c}}}{{Bd{Ab}}}{}}000000{{{Bf{c}}}{{Bf{Ab}}}{}}0000000{{{f{bI`}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{{{f{Aj}}}{{Ah{Id}}}}{{hBj}Ib}{{{f{Ib}}{f{Ib}}}{{Ah{Gb}}}}{{{f{Id}}{f{Id}}}{{Ah{Gb}}}}{{{f{If}}{f{If}}}{{Ah{Gb}}}}{{{f{Aj}}}{{Ah{Ad}}}}{{{f{If}}}Bj}{{{f{bAj}}{f{b{Bn{E`}}}}}{{A`{IhHn}}}}{{{f{bI`}}Af}l}{{{f{bI`}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Ib}}}{{f{h}}}}{{{f{C`}}Fl}{{A`{lHn}}}}{fc{}}000{fCl}0000{{{f{Aj}}}{{A`{AjHn}}}}{c{{A`{e}}}{}{}}0000{{{F`{ClBj}}}{{A`{Ifc}}}{}}111{{}{{A`{c}}}{}}0000000{f{{A`{CnD`}}}}0000{{}{{A`{c}}}{}}0000000{fDb}0000000{{{f{bI`}}}{{A`{{Df{Dd}}n}}}}{{{f{Ib}}}Bj}{{}c{}}0000000{{{f{b}}{f{{Bn{E`}}}}}{{A`{lIj}}}}{{{f{bAj}}{f{{Bn{E`}}}}}{{A`{IhHn}}}}`````","D":"AMh","p":[[0,"mut"],[5,"ArtiClientTorClient",10],[1,"reference",null,null,1],[5,"V3OnionServiceId",604],[5,"X25519PrivateKey",604],[1,"unit"],[6,"Error",842],[6,"Result",1079,null,1],[10,"Any",1080],[6,"TargetAddr",842],[8,"CircuitToken",842],[6,"Option",1081,null,1],[5,"OnionStream",842],[6,"Error",10],[5,"Formatter",1082],[8,"Result",1082],[5,"Box",1083,null,1],[5,"Arc",1084,null,1],[5,"Rc",1085,null,1],[5,"Ed25519PrivateKey",604],[1,"u16"],[5,"X25519PublicKey",604],[1,"slice"],[5,"OnionListener",842],[5,"Runtime",1086],[5,"Path",1087],[5,"ReportHelper",1088],[5,"Report",1088],[10,"Error",1089],[5,"String",1090],[5,"Slug",1091],[6,"BadSlug",1091],[5,"TypeId",1080],[6,"TorEvent",842],[5,"Vec",1092],[6,"Error",67],[5,"Private",1093],[5,"ArtiTorClient",98],[6,"ArtiTorClientConfig",98],[1,"u8"],[6,"Error",98],[5,"PluggableTransportConfig",174],[5,"BridgeLine",174],[6,"SocketAddr",1094],[6,"PluggableTransportConfigError",174],[6,"BridgeLineError",174],[1,"str"],[1,"tuple",null,null,1],[5,"PathBuf",1087],[5,"LegacyTorClient",278],[6,"LegacyTorClientConfig",278],[6,"Error",278],[5,"LegacyTorVersion",386],[1,"bool"],[6,"Error",386],[1,"u32"],[6,"Ordering",1095],[5,"MockTorClient",433],[6,"Error",433],[5,"Socks4ProxyConfig",490],[5,"Socks5ProxyConfig",490],[5,"HttpsProxyConfig",490],[6,"ProxyConfig",490],[6,"ProxyConfigError",490],[5,"Ed25519PublicKey",604],[1,"array"],[5,"Ed25519Signature",604],[6,"SignBit",604],[6,"Error",604],[10,"Hasher",1096],[5,"Error",1097],[10,"TorProvider",842],[5,"OnionAddrV3",842],[6,"OnionAddr",842],[5,"DomainAddr",842],[1,"usize"],[5,"Error",1098],[15,"BundledArti",172],[15,"BundledTor",377],[15,"SystemTor",377],[15,"LogReceived",1074],[15,"BootstrapStatus",1074],[15,"OnionServicePublished",1074]],"r":[],"b":[[35,"impl-Debug-for-Error"],[36,"impl-Display-for-Error"],[82,"impl-Display-for-Error"],[83,"impl-Debug-for-Error"],[128,"impl-Display-for-Error"],[129,"impl-Debug-for-Error"],[217,"impl-Debug-for-PluggableTransportConfigError"],[218,"impl-Display-for-PluggableTransportConfigError"],[220,"impl-Display-for-BridgeLineError"],[221,"impl-Debug-for-BridgeLineError"],[332,"impl-Debug-for-Error"],[333,"impl-Display-for-Error"],[402,"impl-Display-for-Error"],[403,"impl-Debug-for-Error"],[458,"impl-Display-for-Error"],[459,"impl-Debug-for-Error"],[535,"impl-Debug-for-ProxyConfigError"],[536,"impl-Display-for-ProxyConfigError"],[545,"impl-From%3CSocks4ProxyConfig%3E-for-ProxyConfig"],[546,"impl-From%3CSocks5ProxyConfig%3E-for-ProxyConfig"],[548,"impl-From%3CHttpsProxyConfig%3E-for-ProxyConfig"],[710,"impl-Debug-for-Error"],[711,"impl-Display-for-Error"],[716,"impl-Debug-for-V3OnionServiceId"],[717,"impl-Display-for-V3OnionServiceId"],[937,"impl-Display-for-Error"],[938,"impl-Debug-for-Error"],[939,"impl-Debug-for-OnionAddrV3"],[940,"impl-Display-for-OnionAddrV3"],[941,"impl-Debug-for-OnionAddr"],[942,"impl-Display-for-OnionAddr"],[943,"impl-Display-for-DomainAddr"],[944,"impl-Debug-for-DomainAddr"],[945,"impl-Display-for-TargetAddr"],[946,"impl-Debug-for-TargetAddr"],[950,"impl-From%3CError%3E-for-Error"],[951,"impl-From%3CError%3E-for-Error"],[952,"impl-From%3CError%3E-for-Error"],[953,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAEsDPgACAAAACwADABEAFAAoAAAAKwAGADMAIQBXABMAbAAXAIcAAACLACMAvQABAMEABwDKAA0A2QAFAOMAAADoAAsA+QAFAAEBGwAeAQIAIgEtAFMBAABXAQkAYgETAHcBCwCFAQ8AlwEAAJoBBQChARMAtwEVAM8BAADSAQYA2gEQAPQBKQAiAgEAJQIAACsCDgA9Ah8AagIAAHgCFwCTAjsA1wIAAOkCAQDzAhcADAMBABYDKgBDAwcAXgMEAGUDDwB2AyEAmQMBAJwDGQC3AwMAwAMAAMMDAgDHAwIA0gMWAOwDAgDxAwAA9AMAAPcDCAABBCUAKQQJAA==","P":[[30,"T"],[34,""],[37,"T"],[39,""],[40,"U"],[42,"T"],[48,""],[55,"U,T"],[57,"U"],[59,""],[60,"Target"],[62,""],[65,"V"],[78,""],[80,"T"],[82,""],[84,"T"],[85,"U"],[86,"T"],[89,""],[92,"U,T"],[93,"U"],[94,""],[95,"Target"],[96,""],[97,"V"],[109,""],[118,"T"],[124,""],[125,"T"],[126,""],[131,"T"],[134,""],[135,"U"],[138,"T"],[147,""],[153,"T"],[154,""],[155,"U,T"],[158,"U"],[161,""],[162,"Target"],[165,""],[169,"V"],[188,""],[201,"T"],[209,""],[211,"T"],[213,""],[222,"T"],[226,"FromStr::Err"],[227,"U"],[231,"T"],[243,""],[250,"T"],[252,""],[256,"U,T"],[260,"U"],[264,""],[266,"Target"],[270,""],[274,"V"],[313,""],[322,"T"],[328,""],[329,"T"],[330,""],[335,"T"],[338,""],[339,"U"],[342,"T"],[351,""],[357,"T"],[358,""],[359,"U,T"],[362,"U"],[365,""],[366,"Target"],[369,""],[374,"V"],[389,""],[394,"T"],[398,""],[399,"T"],[400,""],[404,"T"],[406,"FromStr::Err"],[407,"U"],[409,"T"],[415,""],[418,"T"],[419,""],[421,"U,T"],[423,"U"],[425,""],[427,"Target"],[429,""],[431,"V"],[445,""],[451,"T"],[455,""],[460,"T"],[462,""],[463,"U"],[465,"T"],[471,""],[478,"U,T"],[480,"U"],[482,""],[483,"Target"],[485,""],[488,"V"],[499,""],[513,"T"],[523,""],[527,"T"],[531,""],[541,"T"],[545,""],[547,"T"],[548,""],[549,"U"],[554,"T"],[569,""],[573,"T"],[577,""],[578,"U,T"],[583,"U"],[588,""],[589,"Target"],[594,""],[599,"V"],[632,""],[658,"T"],[674,""],[681,"T"],[688,""],[696,"K"],[697,""],[703,"K"],[709,""],[718,"T"],[726,""],[744,"__H"],[746,"U"],[754,"T"],[778,""],[789,"T"],[796,""],[798,"U,T"],[806,"U"],[814,""],[816,"Target"],[824,""],[834,"V"],[862,""],[885,"T"],[901,""],[905,"T"],[909,""],[916,"K"],[919,""],[920,"Deref::Target"],[922,""],[927,"K"],[936,""],[949,"T"],[950,""],[954,"T"],[959,""],[960,"T"],[962,"FromStr::Err"],[965,""],[966,"__H"],[969,"U"],[977,"T"],[1000,""],[1014,"T"],[1018,""],[1024,"U,T"],[1029,"TryFrom::Error"],[1030,"U,T"],[1033,"U"],[1041,""],[1046,"Target"],[1054,""],[1064,"V"],[1072,""]]}]]'));
+var searchIndex = new Map(JSON.parse('[["gosling",{"t":"CFGPPPPPPPPPPGIPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","n":["context","Context","ContextEvent","EndpointClientError","EndpointClientHandshakeCompleted","EndpointClientHandshakeFailed","EndpointServerChannelRequestReceived","EndpointServerError","EndpointServerHandshakeCompleted","EndpointServerHandshakeFailed","EndpointServerHandshakeRejected","EndpointServerHandshakeStarted","EndpointServerPublished","Error","HandshakeHandle","HandshakeHandleNotFound","HonkRpc","IdentityClientChallengeReceived","IdentityClientError","IdentityClientHandshakeCompleted","IdentityClientHandshakeFailed","IdentityServerChallengeResponseReceived","IdentityServerEndpointRequestReceived","IdentityServerError","IdentityServerHandshakeCompleted","IdentityServerHandshakeFailed","IdentityServerHandshakeRejected","IdentityServerHandshakeStarted","IdentityServerPublished","IncorrectUsage","InvalidArgument","Io","TorBootstrapCompleted","TorBootstrapStatusReceived","TorCrypto","TorLogReceived","TorNotConnected","TorProvider","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","connect","endpoint_client_abort_handshake","endpoint_client_begin_handshake","endpoint_server_handle_channel_request_received","endpoint_server_start","endpoint_server_stop","fmt","","","from","","","","","","","generate_circuit_token","identity_client_abort_handshake","identity_client_begin_handshake","identity_client_handle_challenge_received","identity_server_handle_challenge_response_received","identity_server_handle_endpoint_request_received","identity_server_start","identity_server_stop","into","","","into_any","","","into_any_arc","","into_any_rc","","","into_any_send","","","into_any_sync","","new","release_circuit_token","report","source","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","vzip","","","challenge_response","challenge_response_valid","channel_name","","client_allowed","","client_auth_private_key","client_auth_public_key","client_auth_signature_valid","client_proof_signature_valid","","client_requested_channel_valid","client_requested_endpoint_valid","client_service_id","","","","endpoint_challenge","endpoint_name","","","endpoint_private_key","endpoint_service_id","","","","handle","","","","","","","","","","","","","","","","identity_service_id","line","progress","reason","","","","requested_channel","requested_endpoint","stream","","summary","tag"],"q":[[0,"gosling"],[1,"gosling::context"],[113,"gosling::context::ContextEvent"],[168,"core::any"],[169,"core::result"],[170,"tor_interface::tor_provider"],[171,"core::option"],[172,"tor_interface::tor_crypto"],[173,"alloc::string"],[174,"core::fmt"],[175,"honk_rpc::honk_rpc"],[176,"std::io::error"],[177,"bson::document"],[178,"alloc::boxed"],[179,"alloc::sync"],[180,"alloc::rc"],[181,"core::time"],[182,"tor_error::report"],[183,"core::error"],[184,"tor_persist::slug"],[185,"alloc::collections::vec_deque"]],"i":"```lBj00100000``11010000100000111001011h21021002102100000022102222210000000002102121021021210022202102120210210021EbEdEfEh2EjElEn55225F`1Fb5Fd43Ff4580715FhFj5<6;Fl;FnG`7<;Gb;GdGf7542:;EfEh22","f":"``````````````````````````````````````{b{{b{d}}}}00{{{b{f}}}{{b{fd}}}}00{{{b{fh}}}{{n{jl}}}}{b{{b{c}}}{}}00{{{b{f}}}{{b{fc}}}{}}00{{{b{fh}}A`{Ad{Ab}}}{{n{Afl}}}}{{{b{fh}}Ah}{{n{jl}}}}{{{b{fh}}AjAlAn}{{n{Ahl}}}}{{{b{fh}}AhB`}{{n{jl}}}}{{{b{fh}}BbAnAjBd}{{n{jl}}}}{{{b{fh}}Aj}{{n{jl}}}}{{{b{l}}{b{fBf}}}Bh}0{{{b{Bj}}{b{fBf}}}Bh}{cc{}}{Bll}{Bnl}{C`l}{Cbl}44{{{b{fh}}}Ab}<{{{b{fh}}AjAn}{{n{Ahl}}}}{{{b{fh}}AhCd}{{n{jl}}}}<{{{b{fh}}AhB`B`Cd}{{n{jl}}}}{{{b{fh}}}{{n{jl}}}}0{{}c{}}00{{{Cf{c}}}{{Cf{d}}}{}}00{{{Ch{c}}}{{Ch{d}}}{}}0{{{Cj{c}}}{{Cj{d}}}{}}0022222{{{Cf{Cl}}CnCnD`Db{Ad{D`}}Bb}{{n{hl}}}}{{{b{fh}}Ab}j}{b{{Df{Dd}}}}{{{b{l}}}{{Ad{{b{Dh}}}}}}{bAn}{c{{n{e}}}{}{}}00{{}{{n{c}}}{}}00{b{{n{DjDl}}}}{{}{{n{c}}}{}}00{bDn}00{{{b{fh}}}{{n{{E`{Bj}}l}}}}{{}c{}}00```````````````````````````````````````````````````````","D":"Nl","p":[[1,"reference",null,null,1],[10,"Any",168],[0,"mut"],[5,"Context",1],[1,"unit"],[6,"Error",1],[6,"Result",169,null,1],[6,"TargetAddr",170],[8,"CircuitToken",170],[6,"Option",171,null,1],[5,"OnionStream",170],[8,"HandshakeHandle",1],[5,"V3OnionServiceId",172],[5,"X25519PrivateKey",172],[5,"String",173],[1,"bool"],[5,"Ed25519PrivateKey",172],[5,"X25519PublicKey",172],[5,"Formatter",174],[8,"Result",174],[6,"ContextEvent",1],[6,"Error",170],[6,"Error",172],[6,"Error",175],[5,"Error",176],[5,"Document",177],[5,"Box",178,null,1],[5,"Arc",179,null,1],[5,"Rc",180,null,1],[10,"TorProvider",170],[1,"u16"],[5,"Duration",181],[1,"i32"],[5,"ReportHelper",182],[5,"Report",182],[10,"Error",183],[5,"Slug",184],[6,"BadSlug",184],[5,"TypeId",168],[5,"VecDeque",185],[15,"IdentityServerChallengeResponseReceived",113],[15,"IdentityServerHandshakeRejected",113],[15,"EndpointClientHandshakeCompleted",113],[15,"EndpointServerHandshakeCompleted",113],[15,"EndpointServerHandshakeRejected",113],[15,"IdentityClientHandshakeCompleted",113],[15,"IdentityServerHandshakeCompleted",113],[15,"IdentityServerEndpointRequestReceived",113],[15,"EndpointServerChannelRequestReceived",113],[15,"IdentityClientChallengeReceived",113],[15,"EndpointServerPublished",113],[15,"IdentityClientHandshakeFailed",113],[15,"IdentityServerHandshakeStarted",113],[15,"IdentityServerHandshakeFailed",113],[15,"EndpointClientHandshakeFailed",113],[15,"EndpointServerHandshakeStarted",113],[15,"EndpointServerHandshakeFailed",113],[15,"TorLogReceived",113],[15,"TorBootstrapStatusReceived",113]],"r":[],"b":[[57,"impl-Display-for-Error"],[58,"impl-Debug-for-Error"],[61,"impl-From%3CError%3E-for-Error"],[62,"impl-From%3CError%3E-for-Error"],[63,"impl-From%3CError%3E-for-Error"],[64,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADIABwAnAAUALgAFADoAAgA+AAMATwAMAF4ADwBvAAIA","P":[[45,"T"],[51,""],[60,"T"],[61,""],[65,"T"],[67,""],[75,"U"],[78,"T"],[91,""],[96,"U,T"],[99,"U"],[102,""],[103,"Target"],[106,""],[110,"V"]]}],["honk_rpc",{"t":"CKPPPPPSSGPGPPPPPPPPIPPPPGPPPPPPFPPPPPNNNNNNNNNNNNNNNMNNNNNNNNNHNNHHHNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNOOOOO","n":["honk_rpc","ApiSet","BsonDocumentParseFailed","BsonDocumentSizeTooLarge","BsonDocumentSizeTooSmall","BsonParseFailed","BsonWriteFailed","DEFAULT_MAX_MESSAGE_SIZE","DEFAULT_MAX_WAIT_TIME","Error","","ErrorCode","InvalidMaxMesageSize","MessageConversionFailed","MessageParseFailed","MessageReadTimedOut","MessageTooBig","MessageVersionIncompatible","Pending","ReaderReadFailed","RequestCookie","RequestCookieInvalid","RequestFunctionInvalid","RequestNamespaceInvalid","RequestVersionInvalid","Response","ResponseCookieInvalid","ResponseStateInvalid","Runtime","SectionIdUnknown","SectionParseFailed","SectionTooLarge","Session","Success","Unknown","UnknownErrorSectionReceived","WriterFlushFailed","WriterWriteFailed","borrow","","","","borrow_mut","","","","client_call","client_drain_responses","client_next_response","eq","equivalent","","","exec_function","fmt","","","","from","","","","","get_error_section_size","get_max_message_size","get_max_wait_time","get_message_overhead","get_request_section_size","get_response_section_size","into","","","","into_stream","namespace","new","next_result","set_max_message_size","set_max_wait_time","source","to_string","","try_from","","","","try_into","","","","type_id","","","","update","","vzip","","","","cookie","","","error_code","result"],"q":[[0,"honk_rpc"],[1,"honk_rpc::honk_rpc"],[100,"honk_rpc::honk_rpc::Response"],[105,"bson::document"],[106,"core::result"],[107,"std::io"],[108,"core::marker"],[109,"alloc::collections::vec_deque::drain"],[110,"core::option"],[111,"bson::bson"],[112,"core::fmt"],[113,"alloc::string"],[114,"core::time"],[115,"core::error"],[116,"core::any"]],"i":"``A`00B`1```Aj`22121102`1111`111112`012220f2310230002222Bd334421334`11```2134101011434213421342134012134ClCnD`01","f":"``````````````````````````````````````{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{{b{d{f{c}}}}{b{h}}{b{h}}jl}{{Ab{nA`}}}{AdAfAh}}{{{b{d{f{c}}}}}{{Al{Aj}}}{AdAfAh}}{{{b{d{f{c}}}}}{{An{Aj}}}{AdAfAh}}{{{b{B`}}{b{B`}}}Bb}{{b{b{c}}}Bb{}}00{{{b{dBd}}{b{h}}jl{An{n}}}{{An{{Ab{{An{Bf}}B`}}}}}}{{{b{B`}}{b{dBh}}}Bj}0{{{b{A`}}{b{dBh}}}Bj}0{cc{}}00{jB`}1{{{An{n}}{An{Bl}}{An{Bf}}}{{Ab{BnA`}}}}{{{b{{f{c}}}}}Bn{AdAfAh}}{{{b{{f{c}}}}}C`{AdAfAh}}{{}{{Ab{BnA`}}}}{{{An{n}}{An{Bl}}Bl{An{j}}{An{l}}}{{Ab{BnA`}}}}{{{An{Bf}}}{{Ab{BnA`}}}}{{}c{}}000{{{f{c}}}c{AdAfAh}}{{{b{Bd}}}{{b{h}}}}{c{{f{c}}}{AdAfAh}}{{{b{dBd}}}{{An{{Cb{n{Ab{{An{Bf}}B`}}}}}}}}{{{b{d{f{c}}}}j}{{Ab{CdA`}}}{AdAfAh}}{{{b{d{f{c}}}}C`}Cd{AdAfAh}}{{{b{A`}}}{{An{{b{Cf}}}}}}{bBl}0{c{{Ab{e}}}{}{}}000{{}{{Ab{c}}}{}}000{bCh}000{{{b{dBd}}}Cd}{{{b{d{f{c}}}}{An{{b{d{Cj{{b{dBd}}}}}}}}}{{Ab{CdA`}}}{AdAfAh}}{{}c{}}000`````","D":"Hj","p":[[1,"reference",null,null,1],[0,"mut"],[5,"Session",1],[1,"str"],[1,"i32"],[5,"Document",105],[8,"RequestCookie",1],[6,"Error",1],[6,"Result",106,null,1],[10,"Read",107],[10,"Write",107],[10,"Send",108],[6,"Response",1],[5,"Drain",109],[6,"Option",110,null,1],[6,"ErrorCode",1],[1,"bool"],[10,"ApiSet",1],[6,"Bson",111],[5,"Formatter",112],[8,"Result",112],[5,"String",113],[1,"usize"],[5,"Duration",114],[1,"tuple",null,null,1],[1,"unit"],[10,"Error",115],[5,"TypeId",116],[1,"slice"],[15,"Pending",100],[15,"Success",100],[15,"Error",100]],"r":[],"b":[[54,"impl-Debug-for-ErrorCode"],[55,"impl-Display-for-ErrorCode"],[56,"impl-Display-for-Error"],[57,"impl-Debug-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACQABwABAAAAJwAHADIAAwA3AAMAPgAAAFAADgBhAAMA","P":[[38,"T"],[46,"RW"],[49,""],[50,"K"],[53,""],[58,"T"],[61,""],[62,"T"],[63,""],[64,"RW"],[66,""],[69,"U"],[73,"RW"],[74,""],[75,"RW"],[76,""],[77,"RW"],[79,""],[82,"U,T"],[86,"U"],[90,""],[95,"RW"],[96,"V"]]}],["tor_interface",{"t":"CCCCCCCCCCPPPPFGPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPPPPPGPPNNNNNNNNNNNNNNNNNNNNNNPPPPFGPPGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOPPPPFGPPPFGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPGPPPFGPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOGFPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPGFPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPFGGPFPFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPSSSSSSSFFFGPPPGFSSFFSSSSSSPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPIPFGPPGFFPPFPPGGKPNNNNNMNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNOOOOO","n":["arti_client_tor_client","arti_process","arti_tor_client","censorship_circumvention","legacy_tor_client","legacy_tor_version","mock_tor_client","proxy","tor_crypto","tor_provider","ArtiClientConfigBuilderError","ArtiClientError","ArtiClientOnionServiceLaunchError","ArtiClientTorAddrError","ArtiClientTorClient","Error","NotImplemented","OnionServiceConfigBuilderError","TcpListenerAcceptFailed","TcpListenerBindFailed","TcpListenerLocalAddrFailed","TcpStreamConnectFailed","TcpStreamIntoFailed","TorKeyMgrError","add_client_auth","as_any","","as_any_mut","","bootstrap","borrow","","borrow_mut","","connect","fmt","","from","","generate_token","into","","into_any","","into_any_arc","","into_any_rc","","into_any_send","","into_any_sync","","listener","new","release_token","remove_client_auth","report","source","to_string","try_from","","try_into","","try_into_slug","try_octets_into","","type_id","","update","vzip","","ArtiBinPathNotAbsolute","ArtiDataDirectoryCreationFailed","ArtiDataDirectoryPathExistsAsFile","ArtiDataDirectoryPathNotAbsolute","ArtiDataDirectorySetPermissionsFailed","ArtiProcessStartFailed","ArtiProcessStdoutTakeFailed","ArtiStdoutReadThreadSpawnFailed","ArtiTomlFileCreationFailed","ArtiTomlFileWriteFailed","Error","RpcTomlFileCreationFailed","RpcTomlFileWriteFailed","as_any","as_any_mut","borrow","borrow_mut","fmt","","from","into","into_any","into_any_arc","into_any_rc","into_any_send","into_any_sync","report","source","to_string","try_from","try_into","try_into_slug","try_octets_into","type_id","vzip","ArtiNotBootstrapped","ArtiOpenStreamFailed","ArtiProcessCreationFailed","ArtiRpcConnectFailed","ArtiTorClient","ArtiTorClientConfig","BundledArti","CircuitTokenInvalid","Error","NotImplemented","SystemArti","__clone_box","add_client_auth","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","connect","fmt","","","from","","","generate_token","into","","","into_any","","","into_any_arc","","","into_any_rc","","","into_any_send","","","into_any_sync","","","listener","new","release_token","remove_client_auth","report","source","to_owned","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","vzip","","","arti_bin_path","data_directory","AddressMissing","AddressParseFailed","AddressPortInvalid","BinaryPathInvalid","BridgeLine","BridgeLineError","FingerprintInvalid","FingerprintMissing","KeyValueInvalid","PluggableTransportConfig","PluggableTransportConfigError","TransportMissing","TransportNameInvalid","","__clone_box","","add_option","address","as_any","","","","as_any_mut","","","","as_legacy_tor_setconf_value","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fingerprint","fmt","","","","","","from","","","","from_str","into","","","","into_any","","","","into_any_arc","","","","into_any_rc","","","","into_any_send","","","","into_any_sync","","","","keyvalues","new","","options","path_to_binary","report","","to_owned","","to_string","","transport","transports","try_from","","","","try_into","","","","try_into_slug","","try_octets_into","","","","type_id","","","","vzip","","","","AddOnionFailed","BridgeTransportNotSupported","BridgeTransportTypeMultiplyDefined","BundledTor","CircuitTokenInvalid","DelOnionFailed","Error","GetInfoNetListenersSocksFailed","GetInfoVersionFailed","LegacyControlStreamCreationFailed","LegacyTorClient","LegacyTorClientConfig","LegacyTorControllerCreationFailed","LegacyTorNotBootstrapped","LegacyTorProcessAuthenticationFailed","LegacyTorProcessCreationFailed","LegacyTorProcessTooOld","NoSocksListenersFound","NotImplemented","OnionClientAuthAddFailed","OnionClientAuthRemoveFailed","PluggableTransportBinaryNameNotUtf8Representnable","PluggableTransportConfigDirectoryCreationFailed","PluggableTransportConfigError","PluggableTransportDirectoryNameCollision","PluggableTransportSymlinkCreationFailed","PluggableTransportSymlinkRemovalFailed","SetConfDisableNetwork0Failed","SetConfFailed","SetEventsFailed","Socks5ConnectionFailed","SystemTor","TcpListenerBindFailed","TcpListenerLocalAddrFailed","WaitAsyncEventsFailed","__clone_box","add_client_auth","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","connect","fmt","","","from","","","generate_token","into","","","into_any","","","into_any_arc","","","into_any_rc","","","into_any_send","","","into_any_sync","","","listener","new","release_token","remove_client_auth","report","source","to_owned","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","version","vzip","","","allowed_ports","bridge_lines","data_directory","pluggable_transports","proxy_settings","tor_bin_path","tor_control_addr","tor_control_passwd","tor_socks_addr","Error","LegacyTorVersion","ParseError","__clone_box","as_any","","as_any_mut","","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","eq","fmt","","from","","from_str","into","","into_any","","into_any_arc","","into_any_rc","","into_any_send","","into_any_sync","","new","partial_cmp","report","to_owned","to_string","","try_from","","try_into","","try_into_slug","","try_octets_into","","type_id","","vzip","","ClientAlreadyBootstrapped","ClientNotBootstrapped","ConnectFailed","Error","MockTorClient","NotImplemented","OnionServiceAuthInvalid","OnionServiceNotFound","OnionServiceNotPublished","OnionServiceRequiresOnionAuth","TcpListenerBindFailed","TcpListenerLocalAddrFailed","add_client_auth","as_any","","as_any_mut","","bootstrap","borrow","","borrow_mut","","connect","default","drop","fmt","","from","","generate_token","into","","into_any","","into_any_arc","","into_any_rc","","into_any_send","","into_any_sync","","listener","new","release_token","remove_client_auth","report","source","to_string","try_from","","try_into","","try_into_slug","try_octets_into","","type_id","","update","vzip","","Generic","Https","HttpsProxyConfig","ProxyConfig","ProxyConfigError","Socks4","Socks4ProxyConfig","Socks5","Socks5ProxyConfig","__clone_box","","","","as_any","","","","","as_any_mut","","","","","borrow","","","","","borrow_mut","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","fmt","","","","","","from","","","","","","","","into","","","","","into_any","","","","","into_any_arc","","","","","into_any_rc","","","","","into_any_send","","","","","into_any_sync","","","","","new","","","report","to_owned","","","","to_string","try_from","","","","","try_into","","","","","try_into_slug","try_octets_into","","","","","type_id","","","","","vzip","","","","","ConversionError","ED25519_PRIVATE_KEYBLOB_BASE64_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_HEADER_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_SIZE","ED25519_PRIVATE_KEY_SIZE","ED25519_PUBLIC_KEY_SIZE","ED25519_SIGNATURE_SIZE","Ed25519PrivateKey","Ed25519PublicKey","Ed25519Signature","Error","KeyInvalid","One","ParseError","SignBit","V3OnionServiceId","V3_ONION_SERVICE_ID_STRING_LENGTH","V3_ONION_SERVICE_ID_STRING_SIZE","X25519PrivateKey","X25519PublicKey","X25519_PRIVATE_KEY_BASE64_LENGTH","X25519_PRIVATE_KEY_BASE64_SIZE","X25519_PRIVATE_KEY_SIZE","X25519_PUBLIC_KEY_BASE32_LENGTH","X25519_PUBLIC_KEY_BASE32_SIZE","X25519_PUBLIC_KEY_SIZE","Zero","__clone_box","","","","","","","as_any","","","","","","","","as_any_mut","","","","","","","","as_bytes","","","borrow","","","","","","","","borrow_mut","","","","","","","","clone","","","","","","","clone_into","","","","","","","clone_to_uninit","","","","","","","cmp","compare","eq","","","","","","equivalent","","","","","","fmt","","","","","","","","","from","","","","","","","","","from_base32","from_base64","from_key_blob","from_private_key","","","from_private_x25519","from_public_key","from_raw","","","","","from_service_id","from_string","generate","","hash","","into","","","","","","","","into_any","","","","","","","","into_any_arc","","","","","","","","into_any_rc","","","","","","","","into_any_send","","","","","","","","into_any_sync","","","","","","","","is_valid","partial_cmp","report","sign_message","","to_base32","to_base64","to_bytes","","","to_key_blob","to_owned","","","","","","","to_string","","try_from","","","","","","","","try_into","","","","","","","","try_into_slug","","try_octets_into","","","","","","","","type_id","","","","","","","","verify","verify_x25519","vzip","","","","","","","","BootstrapComplete","BootstrapStatus","CircuitToken","Domain","DomainAddr","Error","Generic","LogReceived","OnionAddr","OnionAddrV3","OnionListener","OnionService","OnionServicePublished","OnionStream","ParseFailure","Socket","TargetAddr","TorEvent","TorProvider","V3","__clone_box","","","","accept","add_client_auth","as_any","","","","","","","","as_any_mut","","","","","","","","bootstrap","borrow","","","","","","","","borrow_mut","","","","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","cmp","","","compare","","","connect","deref","deref_mut","domain","drop","eq","","","equivalent","","","","","","","","","flush","fmt","","","","","","","","","","","","from","","","","","","","","","","","","","from_str","","","generate_token","hash","","","into","","","","","","","","into_any","","","","","","","","into_any_arc","","","","","","","into_any_rc","","","","","","","","into_any_send","","","","","","","","into_any_sync","","","","","","","listener","local_addr","new","partial_cmp","","","peer_addr","port","read","release_token","remove_client_auth","report","service_id","set_nonblocking","to_owned","","","","to_string","","","","","try_clone","try_from","","","","","","","","","try_into","","","","","","","","try_into_slug","","","","","try_octets_into","","","","","","","","type_id","","","","","","","","update","virt_port","vzip","","","","","","","","write","","line","progress","service_id","summary","tag"],"q":[[0,"tor_interface"],[10,"tor_interface::arti_client_tor_client"],[71,"tor_interface::arti_process"],[106,"tor_interface::arti_tor_client"],[186,"tor_interface::arti_tor_client::ArtiTorClientConfig"],[188,"tor_interface::censorship_circumvention"],[300,"tor_interface::legacy_tor_client"],[405,"tor_interface::legacy_tor_client::LegacyTorClientConfig"],[414,"tor_interface::legacy_tor_version"],[465,"tor_interface::mock_tor_client"],[526,"tor_interface::proxy"],[650,"tor_interface::tor_crypto"],[904,"tor_interface::tor_provider"],[1151,"tor_interface::tor_provider::TorEvent"],[1156,"core::result"],[1157,"core::any"],[1158,"core::option"],[1159,"core::fmt"],[1160,"alloc::boxed"],[1161,"alloc::sync"],[1162,"alloc::rc"],[1163,"tokio::runtime::runtime"],[1164,"std::path"],[1165,"tor_error::report"],[1166,"core::error"],[1167,"alloc::string"],[1168,"tor_persist::slug"],[1169,"alloc::vec"],[1170,"dyn_clone::sealed"],[1171,"core::net::socket_addr"],[1172,"core::cmp"],[1173,"core::hash"],[1174,"std::io::error"],[1175,"der::error"]],"i":"``````````Al000``00000000d0101001010110100101010101010000111010110101001Dh000000000`000000000000000000000000Eb000``Dn1`100Dl0210210021021111022102100210210210210210210000221202102120210210021Il0El00Ej``111``101EdEf101203120301203120310101001220331203012031203120312031203120301011231023011203120323120312031203Fh00Ff11`111``111111111111111111101110Fd02102100210211110221021002102102102102102100002212021021202102100021In00000J`00``FnFj10101010000011100101010101010001010101010101010Gf00``0000000Gd010100101000110100101010101010000111010110101001H`Gn```0`0`GhGjGl3421034210342103421032103210321034421034210333342103421034210342103421034210321042103442103421034421034210342103Hj```````````0Hh1````````````0BhHbHfjBlh6574321065743210641057432106574321065432106543210654321060054321011100057743210057432106612541050543214052105743210657432106574321065743210657432106574321060075212532554321067057432106574321067057432106574321063357432106Dd0`Ad``n2```12`01```IdIb1If4C`I`1534267Aj264537801264537802645378045374537453745345310032453444555333066445533778026666645377805371453264537802645378064537802645378026453780645378010445303011642453764537026453378026453780645372645378026453780142645378000JbJdJf11","f":"````````````````````````{{{f{bd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{{{f{bd}}}{{A`{ln}}}}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{bd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Al}}{f{bAn}}}B`}0{cc{}}0{{{f{bd}}}Af}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}02222{{{f{bd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{{{Bd{Cb}}{f{Cd}}}{{A`{dAl}}}}{{{f{bd}}Af}l}{{{f{bd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Al}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0{fDb}0{{{f{bd}}}{{A`{{Df{Dd}}n}}}}{{}c{}}0`````````````{f{{f{Ab}}}}{{{f{b}}}{{f{bAb}}}}{f{{f{c}}}{}}{{{f{b}}}{{f{bc}}}{}}{{{f{Dh}}{f{bAn}}}B`}0{cc{}}{{}c{}}{{{Bb{c}}}{{Bb{Ab}}}{}}{{{Bd{c}}}{{Bd{Ab}}}{}}{{{Bf{c}}}{{Bf{Ab}}}{}}22{f{{Ch{Cf}}}}{{{f{Dh}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}{{}{{A`{c}}}{}}{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}{fDb}{{}c{}}```````````{{fDj}l}{{{f{bDl}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}00{{{f{b}}}{{f{bAb}}}}00{{{f{bDl}}}{{A`{ln}}}}{f{{f{c}}}{}}00{{{f{b}}}{{f{bc}}}{}}00{{{f{Dn}}}Dn}{{f{f{bc}}}l{}}{{fE`}l}{{{f{bDl}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Eb}}{f{bAn}}}B`}0{{{f{Dn}}{f{bAn}}}B`}{cc{}}00{{{f{bDl}}}Af}{{}c{}}00{{{Bb{c}}}{{Bb{Ab}}}{}}00{{{Bd{c}}}{{Bd{Ab}}}{}}00{{{Bf{c}}}{{Bf{Ab}}}{}}00222222{{{f{bDl}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{Dn{{A`{Dln}}}}{{{f{bDl}}Af}l}{{{f{bDl}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Eb}}}{{Ah{{f{Cj}}}}}}{fc{}}{fCl}{c{{A`{e}}}{}{}}00{{}{{A`{c}}}{}}00{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}00{fDb}00{{{f{bDl}}}{{A`{{Df{Dd}}n}}}}{{}c{}}00````````````````{{fDj}l}0{{{f{bEd}}Cl}l}{{{f{Ef}}}{{f{Eh}}}}{f{{f{Ab}}}}000{{{f{b}}}{{f{bAb}}}}000{{{f{Ef}}}Cl}{f{{f{c}}}{}}000{{{f{b}}}{{f{bc}}}{}}000{{{f{Ed}}}Ed}{{{f{Ef}}}Ef}{{f{f{bc}}}l{}}0{{fE`}l}0{{{f{Ef}}}{{f{Cl}}}}{{{f{Ed}}{f{bAn}}}B`}{{{f{Ej}}{f{bAn}}}B`}0{{{f{Ef}}{f{bAn}}}B`}{{{f{El}}{f{bAn}}}B`}0{cc{}}000{{{f{En}}}{{A`{Efc}}}{}}{{}c{}}000{{{Bb{c}}}{{Bb{Ab}}}{}}000{{{Bd{c}}}{{Bd{Ab}}}{}}000{{{Bf{c}}}{{Bf{Ab}}}{}}00022222222{{{f{Ef}}}{{f{{Df{{F`{ClCl}}}}}}}}{{{Df{Cl}}Fb}{{A`{EdEj}}}}{{ClEhCl{Df{{F`{ClCl}}}}}{{A`{EfEl}}}}{{{f{Ed}}}{{f{{Df{Cl}}}}}}{{{f{Ed}}}{{f{Fb}}}}{f{{Ch{Cf}}}}0{fc{}}0{fCl}0{{{f{Ef}}}{{f{Cl}}}}5{c{{A`{e}}}{}{}}000{{}{{A`{c}}}{}}000{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}000{fDb}000{{}c{}}000```````````````````````````````````{{fDj}l}{{{f{bFd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}00{{{f{b}}}{{f{bAb}}}}00{{{f{bFd}}}{{A`{ln}}}}{f{{f{c}}}{}}00{{{f{b}}}{{f{bc}}}{}}00{{{f{Ff}}}Ff}{{f{f{bc}}}l{}}{{fE`}l}{{{f{bFd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Fh}}{f{bAn}}}B`}0{{{f{Ff}}{f{bAn}}}B`}{cc{}}00{{{f{bFd}}}Af}{{}c{}}00{{{Bb{c}}}{{Bb{Ab}}}{}}00{{{Bd{c}}}{{Bd{Ab}}}{}}00{{{Bf{c}}}{{Bf{Ab}}}{}}00222222{{{f{bFd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{Ff{{A`{FdFh}}}}{{{f{bFd}}Af}l}{{{f{bFd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Fh}}}{{Ah{{f{Cj}}}}}}{fc{}}{fCl}{c{{A`{e}}}{}{}}00{{}{{A`{c}}}{}}00{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}00{fDb}00{{{f{bFd}}}{{A`{{Df{Dd}}n}}}}{{{f{bFd}}}Fj}{{}c{}}00````````````{{fDj}l}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{Fj}}}Fj}{{f{f{bc}}}l{}}{{fE`}l}{{{f{Fj}}{f{Fj}}}Fl}{{{f{Fn}}{f{bAn}}}B`}0{cc{}}0{{{f{En}}}{{A`{Fjc}}}{}}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}02222{{G`G`G`{Ah{G`}}{Ah{{f{En}}}}}{{A`{FjFn}}}}{{{f{Fj}}{f{Fj}}}{{Ah{Gb}}}}{f{{Ch{Cf}}}}{fc{}}{fCl}{{{f{Fj}}}Cl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}0{fDb}0{{}c{}}0````````````{{{f{bGd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{{{f{bGd}}}{{A`{ln}}}}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{bGd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{}Gd}{{{f{bGd}}}l}{{{f{Gf}}{f{bAn}}}B`}0{cc{}}0{{{f{bGd}}}Af}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}02222{{{f{bGd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}9{{{f{bGd}}Af}l}{{{f{bGd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Gf}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0{fDb}0{{{f{bGd}}}{{A`{{Df{Dd}}n}}}}{{}c{}}0`````````{{fDj}l}000{f{{f{Ab}}}}0000{{{f{b}}}{{f{bAb}}}}0000{f{{f{c}}}{}}0000{{{f{b}}}{{f{bc}}}{}}0000{{{f{Gh}}}Gh}{{{f{Gj}}}Gj}{{{f{Gl}}}Gl}{{{f{Gn}}}Gn}{{f{f{bc}}}l{}}000{{fE`}l}000{{{f{H`}}{f{bAn}}}B`}0{{{f{Gh}}{f{bAn}}}B`}{{{f{Gj}}{f{bAn}}}B`}{{{f{Gl}}{f{bAn}}}B`}{{{f{Gn}}{f{bAn}}}B`}{cc{}}000{GjGn}{GhGn}2{GlGn}{{}c{}}0000{{{Bb{c}}}{{Bb{Ab}}}{}}0000{{{Bd{c}}}{{Bd{Ab}}}{}}0000{{{Bf{c}}}{{Bf{Ab}}}{}}00002222222222{Ad{{A`{GhH`}}}}{{Ad{Ah{Cl}}{Ah{Cl}}}{{A`{GjH`}}}}{{Ad{Ah{Cl}}{Ah{Cl}}}{{A`{GlH`}}}}{f{{Ch{Cf}}}}{fc{}}000{fCl}{c{{A`{e}}}{}{}}0000{{}{{A`{c}}}{}}0000{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0000{fDb}0000{{}c{}}0000````````````````````````````{{fDj}l}000000{f{{f{Ab}}}}0000000{{{f{b}}}{{f{bAb}}}}0000000{{{f{Hb}}}{{f{{Hd{E`}}}}}}{{{f{Bl}}}{{f{{Hd{E`}}}}}}{{{f{h}}}{{f{{Hd{E`}}}}}}{f{{f{c}}}{}}0000000{{{f{b}}}{{f{bc}}}{}}0000000{{{f{Bh}}}Bh}{{{f{Hb}}}Hb}{{{f{Hf}}}Hf}{{{f{j}}}j}{{{f{Bl}}}Bl}{{{f{h}}}h}{{{f{Hh}}}Hh}{{f{f{bc}}}l{}}000000{{fE`}l}000000{{{f{h}}{f{h}}}Gb}{{f{f{c}}}Gb{}}{{{f{Bh}}{f{Bh}}}Fl}{{{f{Hb}}{f{Hb}}}Fl}{{{f{Hf}}{f{Hf}}}Fl}{{{f{j}}{f{j}}}Fl}{{{f{Bl}}{f{Bl}}}Fl}{{{f{h}}{f{h}}}Fl}{{f{f{c}}}Fl{}}00000{{{f{Bh}}{f{bAn}}}B`}{{{f{Hj}}{f{bAn}}}B`}0{{{f{Hb}}{f{bAn}}}B`}{{{f{Hf}}{f{bAn}}}B`}{{{f{j}}{f{bAn}}}B`}{{{f{Bl}}{f{bAn}}}B`}{{{f{h}}{f{bAn}}}B`}0{cc{}}0000000{FlHh}{{{f{En}}}{{A`{BlHj}}}}{{{f{En}}}{{A`{jHj}}}}{{{f{En}}}{{A`{BhHj}}}}{{{f{Bh}}}Hb}{{{f{j}}}Bl}{{{f{Bh}}}h}{{{f{j}}}{{A`{{F`{BhHh}}Hj}}}}{{{f{Hb}}}h}{{{f{{Hd{E`}}}}}{{A`{BhHj}}}}{{{f{{Hd{E`}}}}}{{A`{HbHj}}}}{{{f{{Hd{E`}}}}}{{A`{HfHj}}}}{{{f{{Hd{E`}}}}}{{A`{jHj}}}}{{{f{{Hd{E`}}}}}Bl}{{{f{h}}}{{A`{HbHj}}}}{{{f{En}}}{{A`{hHj}}}}{{}Bh}{{}j}{{{f{Bl}}{f{bc}}}lHl}{{{f{h}}{f{bc}}}lHl}{{}c{}}0000000{{{Bb{c}}}{{Bb{Ab}}}{}}0000000{{{Bd{c}}}{{Bd{Ab}}}{}}0000000{{{Bf{c}}}{{Bf{Ab}}}{}}00000002222222222222222{{{f{En}}}Fl}{{{f{h}}{f{h}}}{{Ah{Gb}}}}{f{{Ch{Cf}}}}{{{f{Bh}}{f{{Bn{E`}}}}}Hf}{{{f{j}}{f{{Bn{E`}}}}}{{A`{{F`{HfHh}}Hj}}}}{{{f{Bl}}}Cl}{{{f{j}}}Cl}{{{f{Bh}}}{{Hd{E`}}}}{{{f{Hf}}}{{Hd{E`}}}}{{{f{j}}}{{Hd{E`}}}}{{{f{Bh}}}Cl}{fc{}}000000{fCl}0{c{{A`{e}}}{}{}}0000000{{}{{A`{c}}}{}}0000000{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}0000000{fDb}0000000{{{f{Hf}}{f{{Bn{E`}}}}{f{Hb}}}Fl}{{{f{Hf}}{f{{Bn{E`}}}}{f{Bl}}Hh}Fl}{{}c{}}0000000````````````````````{{fDj}l}000{{{f{C`}}}{{A`{{Ah{Aj}}Hn}}}}{{{f{bI`}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0000000{{{f{b}}}{{f{bAb}}}}0000000{{{f{bI`}}}{{A`{ln}}}}{f{{f{c}}}{}}0000000{{{f{b}}}{{f{bc}}}{}}0000000{{{f{Ib}}}Ib}{{{f{Id}}}Id}{{{f{If}}}If}{{{f{Ad}}}Ad}{{f{f{bc}}}l{}}000{{fE`}l}000{{{f{Ib}}{f{Ib}}}Gb}{{{f{Id}}{f{Id}}}Gb}{{{f{If}}{f{If}}}Gb}{{f{f{c}}}Gb{}}00{{{f{bI`}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Aj}}}{{f{c}}}{}}{{{f{bAj}}}{{f{bc}}}{}}{{{f{If}}}{{f{En}}}}{{{f{bC`}}}l}{{{f{Ib}}{f{Ib}}}Fl}{{{f{Id}}{f{Id}}}Fl}{{{f{If}}{f{If}}}Fl}{{f{f{c}}}Fl{}}00000000{{{f{bAj}}}{{A`{lHn}}}}{{{f{n}}{f{bAn}}}B`}0{{{f{Ib}}{f{bAn}}}B`}0{{{f{Id}}{f{bAn}}}B`}0{{{f{If}}{f{bAn}}}B`}0{{{f{Ad}}{f{bAn}}}B`}0{{{f{Dd}}{f{bAn}}}B`}{{{f{Aj}}{f{bAn}}}B`}{cc{}}{Aln}{Fhn}2{Gfn}{Ebn}444{{{F`{hBj}}}Ad}555{{{f{En}}}{{A`{Idc}}}{}}{{{f{En}}}{{A`{Ifc}}}{}}{{{f{En}}}{{A`{Adc}}}{}}{{{f{bI`}}}Af}{{{f{Ib}}{f{bc}}}lHl}{{{f{Id}}{f{bc}}}lHl}{{{f{If}}{f{bc}}}lHl}{{}c{}}0000000{{{Bb{c}}}{{Bb{Ab}}}{}}0000000{{{Bd{c}}}{{Bd{Ab}}}{}}000000{{{Bf{c}}}{{Bf{Ab}}}{}}0000000222222222222222{{{f{bI`}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{{{f{Aj}}}{{Ah{Id}}}}{{hBj}Ib}{{{f{Ib}}{f{Ib}}}{{Ah{Gb}}}}{{{f{Id}}{f{Id}}}{{Ah{Gb}}}}{{{f{If}}{f{If}}}{{Ah{Gb}}}}{{{f{Aj}}}{{Ah{Ad}}}}{{{f{If}}}Bj}{{{f{bAj}}{f{b{Bn{E`}}}}}{{A`{IhHn}}}}{{{f{bI`}}Af}l}{{{f{bI`}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Ib}}}{{f{h}}}}{{{f{C`}}Fl}{{A`{lHn}}}}{fc{}}000{fCl}0000{{{f{Aj}}}{{A`{AjHn}}}}{c{{A`{e}}}{}{}}000{{{F`{ClBj}}}{{A`{Ifc}}}{}}1111{{}{{A`{c}}}{}}0000000{f{{A`{CnD`}}}}0000{{}{{A`{c}}}{}}0000000{fDb}0000000{{{f{bI`}}}{{A`{{Df{Dd}}n}}}}{{{f{Ib}}}Bj}{{}c{}}0000000{{{f{b}}{f{{Bn{E`}}}}}{{A`{lIj}}}}{{{f{bAj}}{f{{Bn{E`}}}}}{{A`{IhHn}}}}`````","D":"AMh","p":[[0,"mut"],[5,"ArtiClientTorClient",10],[1,"reference",null,null,1],[5,"V3OnionServiceId",650],[5,"X25519PrivateKey",650],[1,"unit"],[6,"Error",904],[6,"Result",1156,null,1],[10,"Any",1157],[6,"TargetAddr",904],[8,"CircuitToken",904],[6,"Option",1158,null,1],[5,"OnionStream",904],[6,"Error",10],[5,"Formatter",1159],[8,"Result",1159],[5,"Box",1160,null,1],[5,"Arc",1161,null,1],[5,"Rc",1162,null,1],[5,"Ed25519PrivateKey",650],[1,"u16"],[5,"X25519PublicKey",650],[1,"slice"],[5,"OnionListener",904],[5,"Runtime",1163],[5,"Path",1164],[5,"ReportHelper",1165],[5,"Report",1165],[10,"Error",1166],[5,"String",1167],[5,"Slug",1168],[6,"BadSlug",1168],[5,"TypeId",1157],[6,"TorEvent",904],[5,"Vec",1169],[6,"Error",71],[5,"Private",1170],[5,"ArtiTorClient",106],[6,"ArtiTorClientConfig",106],[1,"u8"],[6,"Error",106],[5,"PluggableTransportConfig",188],[5,"BridgeLine",188],[6,"SocketAddr",1171],[6,"PluggableTransportConfigError",188],[6,"BridgeLineError",188],[1,"str"],[1,"tuple",null,null,1],[5,"PathBuf",1164],[5,"LegacyTorClient",300],[6,"LegacyTorClientConfig",300],[6,"Error",300],[5,"LegacyTorVersion",414],[1,"bool"],[6,"Error",414],[1,"u32"],[6,"Ordering",1172],[5,"MockTorClient",465],[6,"Error",465],[5,"Socks4ProxyConfig",526],[5,"Socks5ProxyConfig",526],[5,"HttpsProxyConfig",526],[6,"ProxyConfig",526],[6,"ProxyConfigError",526],[5,"Ed25519PublicKey",650],[1,"array"],[5,"Ed25519Signature",650],[6,"SignBit",650],[6,"Error",650],[10,"Hasher",1173],[5,"Error",1174],[10,"TorProvider",904],[5,"OnionAddrV3",904],[6,"OnionAddr",904],[5,"DomainAddr",904],[1,"usize"],[5,"Error",1175],[15,"BundledArti",186],[15,"BundledTor",405],[15,"SystemTor",405],[15,"LogReceived",1151],[15,"BootstrapStatus",1151],[15,"OnionServicePublished",1151]],"r":[],"b":[[35,"impl-Debug-for-Error"],[36,"impl-Display-for-Error"],[88,"impl-Display-for-Error"],[89,"impl-Debug-for-Error"],[136,"impl-Display-for-Error"],[137,"impl-Debug-for-Error"],[231,"impl-Debug-for-PluggableTransportConfigError"],[232,"impl-Display-for-PluggableTransportConfigError"],[234,"impl-Display-for-BridgeLineError"],[235,"impl-Debug-for-BridgeLineError"],[354,"impl-Display-for-Error"],[355,"impl-Debug-for-Error"],[430,"impl-Display-for-Error"],[431,"impl-Debug-for-Error"],[490,"impl-Display-for-Error"],[491,"impl-Debug-for-Error"],[571,"impl-Debug-for-ProxyConfigError"],[572,"impl-Display-for-ProxyConfigError"],[581,"impl-From%3CSocks5ProxyConfig%3E-for-ProxyConfig"],[582,"impl-From%3CSocks4ProxyConfig%3E-for-ProxyConfig"],[584,"impl-From%3CHttpsProxyConfig%3E-for-ProxyConfig"],[756,"impl-Debug-for-Error"],[757,"impl-Display-for-Error"],[762,"impl-Display-for-V3OnionServiceId"],[763,"impl-Debug-for-V3OnionServiceId"],[999,"impl-Display-for-Error"],[1000,"impl-Debug-for-Error"],[1001,"impl-Display-for-OnionAddrV3"],[1002,"impl-Debug-for-OnionAddrV3"],[1003,"impl-Debug-for-OnionAddr"],[1004,"impl-Display-for-OnionAddr"],[1005,"impl-Display-for-DomainAddr"],[1006,"impl-Debug-for-DomainAddr"],[1007,"impl-Display-for-TargetAddr"],[1008,"impl-Debug-for-TargetAddr"],[1012,"impl-From%3CError%3E-for-Error"],[1013,"impl-From%3CError%3E-for-Error"],[1015,"impl-From%3CError%3E-for-Error"],[1016,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJgDPwACAAAACwADABEAFAAoAAAAKwAKADcAIwBdABUAdAAXAI8AAACTACkAywABAM8ABwDYAA0A5wAFAPEAAAD2ABMADwEFABcBGwA0AQIAOAEtAGkBAABtAQ8AfgETAJMBCwChAQ8AswEAALYBCQDBARMA1wEVAO8BAADyAQoA/gEQABgCKQBGAgEASQIAAE8CGABrAh8AmAIAAKYCFwDBAjsABQMAABcDAQAhAycASgMBAFQDKgCBAwcAnAMEAKMDDwC0AyEA1wMBANoDGQD1AwEA+AMBAP0DAAABBAIABQQCABAEJQA5BAIAPgQAAEEEAABEBAgATgQlAHYECQA=","P":[[30,"T"],[34,""],[37,"T"],[39,""],[40,"U"],[42,"T"],[52,""],[59,"U,T"],[61,"U"],[63,""],[64,"Target"],[66,""],[69,"V"],[84,""],[86,"T"],[88,""],[90,"T"],[91,"U"],[92,"T"],[97,""],[100,"U,T"],[101,"U"],[102,""],[103,"Target"],[104,""],[105,"V"],[117,""],[126,"T"],[132,""],[133,"T"],[134,""],[139,"T"],[142,""],[143,"U"],[146,"T"],[161,""],[167,"T"],[168,""],[169,"U,T"],[172,"U"],[175,""],[176,"Target"],[179,""],[183,"V"],[202,""],[215,"T"],[223,""],[225,"T"],[227,""],[236,"T"],[240,"FromStr::Err"],[241,"U"],[245,"T"],[265,""],[272,"T"],[274,""],[278,"U,T"],[282,"U"],[286,""],[288,"Target"],[292,""],[296,"V"],[335,""],[344,"T"],[350,""],[351,"T"],[352,""],[357,"T"],[360,""],[361,"U"],[364,"T"],[379,""],[385,"T"],[386,""],[387,"U,T"],[390,"U"],[393,""],[394,"Target"],[397,""],[402,"V"],[417,""],[422,"T"],[426,""],[427,"T"],[428,""],[432,"T"],[434,"FromStr::Err"],[435,"U"],[437,"T"],[447,""],[450,"T"],[451,""],[453,"U,T"],[455,"U"],[457,""],[459,"Target"],[461,""],[463,"V"],[477,""],[483,"T"],[487,""],[492,"T"],[494,""],[495,"U"],[497,"T"],[507,""],[514,"U,T"],[516,"U"],[518,""],[519,"Target"],[521,""],[524,"V"],[535,""],[549,"T"],[559,""],[563,"T"],[567,""],[577,"T"],[581,""],[583,"T"],[584,""],[585,"U"],[590,"T"],[615,""],[619,"T"],[623,""],[624,"U,T"],[629,"U"],[634,""],[635,"Target"],[640,""],[645,"V"],[678,""],[704,"T"],[720,""],[727,"T"],[734,""],[742,"K"],[743,""],[749,"K"],[755,""],[764,"T"],[772,""],[790,"__H"],[792,"U"],[800,"T"],[840,""],[851,"T"],[858,""],[860,"U,T"],[868,"U"],[876,""],[878,"Target"],[886,""],[896,"V"],[924,""],[947,"T"],[963,""],[967,"T"],[971,""],[978,"K"],[981,""],[982,"Deref::Target"],[984,""],[989,"K"],[998,""],[1011,"T"],[1012,""],[1014,"T"],[1015,""],[1017,"T"],[1020,""],[1021,"T"],[1024,"FromStr::Err"],[1027,""],[1028,"__H"],[1031,"U"],[1039,"T"],[1077,""],[1091,"T"],[1095,""],[1101,"U,T"],[1105,"TryFrom::Error"],[1106,"U,T"],[1110,"U"],[1118,""],[1123,"Target"],[1131,""],[1141,"V"],[1149,""]]}]]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
-//{"start":39,"fragment_lengths":[6092,3738,25982]}
\ No newline at end of file
+//{"start":39,"fragment_lengths":[6125,3738,26832]}
\ No newline at end of file
diff --git a/crates/src/tor_interface/arti_process.rs.html b/crates/src/tor_interface/arti_process.rs.html
index cbd69e72..d0c12890 100644
--- a/crates/src/tor_interface/arti_process.rs.html
+++ b/crates/src/tor_interface/arti_process.rs.html
@@ -162,22 +162,84 @@
161
162
163
-164// standard
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
diff --git a/crates/search-index.js b/crates/search-index.js
index 3247f111..a1242d8e 100644
--- a/crates/search-index.js
+++ b/crates/search-index.js
@@ -1,4 +1,4 @@
-var searchIndex = new Map(JSON.parse('[["gosling",{"t":"CFGPPPPPPPPPPGIPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","n":["context","Context","ContextEvent","EndpointClientError","EndpointClientHandshakeCompleted","EndpointClientHandshakeFailed","EndpointServerChannelRequestReceived","EndpointServerError","EndpointServerHandshakeCompleted","EndpointServerHandshakeFailed","EndpointServerHandshakeRejected","EndpointServerHandshakeStarted","EndpointServerPublished","Error","HandshakeHandle","HandshakeHandleNotFound","HonkRpc","IdentityClientChallengeReceived","IdentityClientError","IdentityClientHandshakeCompleted","IdentityClientHandshakeFailed","IdentityServerChallengeResponseReceived","IdentityServerEndpointRequestReceived","IdentityServerError","IdentityServerHandshakeCompleted","IdentityServerHandshakeFailed","IdentityServerHandshakeRejected","IdentityServerHandshakeStarted","IdentityServerPublished","IncorrectUsage","InvalidArgument","Io","TorBootstrapCompleted","TorBootstrapStatusReceived","TorCrypto","TorLogReceived","TorNotConnected","TorProvider","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","connect","endpoint_client_abort_handshake","endpoint_client_begin_handshake","endpoint_server_handle_channel_request_received","endpoint_server_start","endpoint_server_stop","fmt","","","from","","","","","","","generate_circuit_token","identity_client_abort_handshake","identity_client_begin_handshake","identity_client_handle_challenge_received","identity_server_handle_challenge_response_received","identity_server_handle_endpoint_request_received","identity_server_start","identity_server_stop","into","","","into_any","","","into_any_arc","","into_any_rc","","","new","release_circuit_token","report","source","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","vzip","","","challenge_response","challenge_response_valid","channel_name","","client_allowed","","client_auth_private_key","client_auth_public_key","client_auth_signature_valid","client_proof_signature_valid","","client_requested_channel_valid","client_requested_endpoint_valid","client_service_id","","","","endpoint_challenge","endpoint_name","","","endpoint_private_key","endpoint_service_id","","","","handle","","","","","","","","","","","","","","","","identity_service_id","line","progress","reason","","","","requested_channel","requested_endpoint","stream","","summary","tag"],"q":[[0,"gosling"],[1,"gosling::context"],[108,"gosling::context::ContextEvent"],[163,"core::any"],[164,"core::result"],[165,"tor_interface::tor_provider"],[166,"core::option"],[167,"tor_interface::tor_crypto"],[168,"alloc::string"],[169,"core::fmt"],[170,"honk_rpc::honk_rpc"],[171,"std::io::error"],[172,"bson::document"],[173,"alloc::boxed"],[174,"alloc::sync"],[175,"alloc::rc"],[176,"core::time"],[177,"tor_error::report"],[178,"core::error"],[179,"tor_persist::slug"],[180,"alloc::collections::vec_deque"]],"i":"```lBj00100000``11010000100000111001011h210210021021000000221022222100000000021021210210022202102120210210021EbEdEfEh2EjElEn55225F`1Fb5Fd43Ff4580715FhFj5<6;Fl;FnG`7<;Gb;GdGf7542:;EfEh22","f":"``````````````````````````````````````{b{{b{d}}}}00{{{b{f}}}{{b{fd}}}}00{{{b{fh}}}{{n{jl}}}}{b{{b{c}}}{}}00{{{b{f}}}{{b{fc}}}{}}00{{{b{fh}}A`{Ad{Ab}}}{{n{Afl}}}}{{{b{fh}}Ah}{{n{jl}}}}{{{b{fh}}AjAlAn}{{n{Ahl}}}}{{{b{fh}}AhB`}{{n{jl}}}}{{{b{fh}}BbAnAjBd}{{n{jl}}}}{{{b{fh}}Aj}{{n{jl}}}}{{{b{l}}{b{fBf}}}Bh}0{{{b{Bj}}{b{fBf}}}Bh}{cc{}}{Bll}{Bnl}2{C`l}{Cbl}4{{{b{fh}}}Ab}<{{{b{fh}}AjAn}{{n{Ahl}}}}{{{b{fh}}AhCd}{{n{jl}}}}<{{{b{fh}}AhB`B`Cd}{{n{jl}}}}{{{b{fh}}}{{n{jl}}}}0{{}c{}}00{{{Cf{c}}}{{Cf{d}}}{}}00{{{Ch{c}}}{{Ch{d}}}{}}0{{{Cj{c}}}{{Cj{d}}}{}}00{{{Cf{Cl}}CnCnD`Db{Ad{D`}}Bb}{{n{hl}}}}{{{b{fh}}Ab}j}{b{{Df{Dd}}}}{{{b{l}}}{{Ad{{b{Dh}}}}}}{bAn}{c{{n{e}}}{}{}}00{{}{{n{c}}}{}}00{b{{n{DjDl}}}}{{}{{n{c}}}{}}00{bDn}00{{{b{fh}}}{{n{{E`{Bj}}l}}}}{{}c{}}00```````````````````````````````````````````````````````","D":"Nl","p":[[1,"reference",null,null,1],[10,"Any",163],[0,"mut"],[5,"Context",1],[1,"unit"],[6,"Error",1],[6,"Result",164,null,1],[6,"TargetAddr",165],[8,"CircuitToken",165],[6,"Option",166,null,1],[5,"OnionStream",165],[8,"HandshakeHandle",1],[5,"V3OnionServiceId",167],[5,"X25519PrivateKey",167],[5,"String",168],[1,"bool"],[5,"Ed25519PrivateKey",167],[5,"X25519PublicKey",167],[5,"Formatter",169],[8,"Result",169],[6,"ContextEvent",1],[6,"Error",165],[6,"Error",167],[6,"Error",170],[5,"Error",171],[5,"Document",172],[5,"Box",173,null,1],[5,"Arc",174,null,1],[5,"Rc",175,null,1],[10,"TorProvider",165],[1,"u16"],[5,"Duration",176],[1,"i32"],[5,"ReportHelper",177],[5,"Report",177],[10,"Error",178],[5,"Slug",179],[6,"BadSlug",179],[5,"TypeId",163],[5,"VecDeque",180],[15,"IdentityServerChallengeResponseReceived",108],[15,"IdentityServerHandshakeRejected",108],[15,"EndpointClientHandshakeCompleted",108],[15,"EndpointServerHandshakeCompleted",108],[15,"EndpointServerHandshakeRejected",108],[15,"IdentityClientHandshakeCompleted",108],[15,"IdentityServerHandshakeCompleted",108],[15,"IdentityServerEndpointRequestReceived",108],[15,"EndpointServerChannelRequestReceived",108],[15,"IdentityClientChallengeReceived",108],[15,"EndpointServerPublished",108],[15,"IdentityClientHandshakeFailed",108],[15,"IdentityServerHandshakeStarted",108],[15,"IdentityServerHandshakeFailed",108],[15,"EndpointClientHandshakeFailed",108],[15,"EndpointServerHandshakeStarted",108],[15,"EndpointServerHandshakeFailed",108],[15,"TorLogReceived",108],[15,"TorBootstrapStatusReceived",108]],"r":[],"b":[[57,"impl-Debug-for-Error"],[58,"impl-Display-for-Error"],[61,"impl-From%3CError%3E-for-Error"],[62,"impl-From%3CError%3E-for-Error"],[64,"impl-From%3CError%3E-for-Error"],[65,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAC0ACAAnAAUALgAFADoAAgA+AAEAQQABAE8ABwBZAA8AagACAA==","P":[[45,"T"],[51,""],[60,"T"],[61,""],[63,"T"],[64,""],[66,"T"],[67,""],[75,"U"],[78,"T"],[86,""],[91,"U,T"],[94,"U"],[97,""],[98,"Target"],[101,""],[105,"V"]]}],["honk_rpc",{"t":"CKPPPPPSSGPGPPPPPPPPIPPPPGPPPPPPFPPPPPNNNNNNNNNNNNNNNMNNNNNNNNNHNNHHHNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNOOOOO","n":["honk_rpc","ApiSet","BsonDocumentParseFailed","BsonDocumentSizeTooLarge","BsonDocumentSizeTooSmall","BsonParseFailed","BsonWriteFailed","DEFAULT_MAX_MESSAGE_SIZE","DEFAULT_MAX_WAIT_TIME","Error","","ErrorCode","InvalidMaxMesageSize","MessageConversionFailed","MessageParseFailed","MessageReadTimedOut","MessageTooBig","MessageVersionIncompatible","Pending","ReaderReadFailed","RequestCookie","RequestCookieInvalid","RequestFunctionInvalid","RequestNamespaceInvalid","RequestVersionInvalid","Response","ResponseCookieInvalid","ResponseStateInvalid","Runtime","SectionIdUnknown","SectionParseFailed","SectionTooLarge","Session","Success","Unknown","UnknownErrorSectionReceived","WriterFlushFailed","WriterWriteFailed","borrow","","","","borrow_mut","","","","client_call","client_drain_responses","client_next_response","eq","equivalent","","","exec_function","fmt","","","","from","","","","","get_error_section_size","get_max_message_size","get_max_wait_time","get_message_overhead","get_request_section_size","get_response_section_size","into","","","","into_stream","namespace","new","next_result","set_max_message_size","set_max_wait_time","source","to_string","","try_from","","","","try_into","","","","type_id","","","","update","","vzip","","","","cookie","","","error_code","result"],"q":[[0,"honk_rpc"],[1,"honk_rpc::honk_rpc"],[100,"honk_rpc::honk_rpc::Response"],[105,"bson::document"],[106,"core::result"],[107,"std::io"],[108,"core::marker"],[109,"alloc::collections::vec_deque::drain"],[110,"core::option"],[111,"bson::bson"],[112,"core::fmt"],[113,"alloc::string"],[114,"core::time"],[115,"core::error"],[116,"core::any"]],"i":"``A`00B`1```Aj`22121102`1111`111112`012220f2310230002222Bd334421334`11```2134101011434213421342134012134ClCnD`01","f":"``````````````````````````````````````{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{{b{d{f{c}}}}{b{h}}{b{h}}jl}{{Ab{nA`}}}{AdAfAh}}{{{b{d{f{c}}}}}{{Al{Aj}}}{AdAfAh}}{{{b{d{f{c}}}}}{{An{Aj}}}{AdAfAh}}{{{b{B`}}{b{B`}}}Bb}{{b{b{c}}}Bb{}}00{{{b{dBd}}{b{h}}jl{An{n}}}{{An{{Ab{{An{Bf}}B`}}}}}}{{{b{B`}}{b{dBh}}}Bj}0{{{b{A`}}{b{dBh}}}Bj}0{cc{}}00{jB`}1{{{An{n}}{An{Bl}}{An{Bf}}}{{Ab{BnA`}}}}{{{b{{f{c}}}}}Bn{AdAfAh}}{{{b{{f{c}}}}}C`{AdAfAh}}{{}{{Ab{BnA`}}}}{{{An{n}}{An{Bl}}Bl{An{j}}{An{l}}}{{Ab{BnA`}}}}{{{An{Bf}}}{{Ab{BnA`}}}}{{}c{}}000{{{f{c}}}c{AdAfAh}}{{{b{Bd}}}{{b{h}}}}{c{{f{c}}}{AdAfAh}}{{{b{dBd}}}{{An{{Cb{n{Ab{{An{Bf}}B`}}}}}}}}{{{b{d{f{c}}}}j}{{Ab{CdA`}}}{AdAfAh}}{{{b{d{f{c}}}}C`}Cd{AdAfAh}}{{{b{A`}}}{{An{{b{Cf}}}}}}{bBl}0{c{{Ab{e}}}{}{}}000{{}{{Ab{c}}}{}}000{bCh}000{{{b{dBd}}}Cd}{{{b{d{f{c}}}}{An{{b{d{Cj{{b{dBd}}}}}}}}}{{Ab{CdA`}}}{AdAfAh}}{{}c{}}000`````","D":"Hj","p":[[1,"reference",null,null,1],[0,"mut"],[5,"Session",1],[1,"str"],[1,"i32"],[5,"Document",105],[8,"RequestCookie",1],[6,"Error",1],[6,"Result",106,null,1],[10,"Read",107],[10,"Write",107],[10,"Send",108],[6,"Response",1],[5,"Drain",109],[6,"Option",110,null,1],[6,"ErrorCode",1],[1,"bool"],[10,"ApiSet",1],[6,"Bson",111],[5,"Formatter",112],[8,"Result",112],[5,"String",113],[1,"usize"],[5,"Duration",114],[1,"tuple",null,null,1],[1,"unit"],[10,"Error",115],[5,"TypeId",116],[1,"slice"],[15,"Pending",100],[15,"Success",100],[15,"Error",100]],"r":[],"b":[[54,"impl-Debug-for-ErrorCode"],[55,"impl-Display-for-ErrorCode"],[56,"impl-Display-for-Error"],[57,"impl-Debug-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACQABwABAAAAJwAHADIAAwA3AAMAPgAAAFAADgBhAAMA","P":[[38,"T"],[46,"RW"],[49,""],[50,"K"],[53,""],[58,"T"],[61,""],[62,"T"],[63,""],[64,"RW"],[66,""],[69,"U"],[73,"RW"],[74,""],[75,"RW"],[76,""],[77,"RW"],[79,""],[82,"U,T"],[86,"U"],[90,""],[95,"RW"],[96,"V"]]}],["tor_interface",{"t":"CCCCCCCCCCPPPPFGPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPPPPGPNNNNNNNNNNNNNNNNNNNNPPPPFGPPGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOPPPPFGPPPFGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPGPPPFGPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOGFPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPGFPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPFGGPFPFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPSSSSSSSFFFGPPPGFSSFFSSSSSSPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPIPFGPPGFFPPFPPGGKPNNNNNMNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNOOOOO","n":["arti_client_tor_client","arti_process","arti_tor_client","censorship_circumvention","legacy_tor_client","legacy_tor_version","mock_tor_client","proxy","tor_crypto","tor_provider","ArtiClientConfigBuilderError","ArtiClientError","ArtiClientOnionServiceLaunchError","ArtiClientTorAddrError","ArtiClientTorClient","Error","NotImplemented","OnionServiceConfigBuilderError","TcpListenerAcceptFailed","TcpListenerBindFailed","TcpListenerLocalAddrFailed","TcpStreamConnectFailed","TcpStreamIntoFailed","TorKeyMgrError","add_client_auth","as_any","","as_any_mut","","bootstrap","borrow","","borrow_mut","","connect","fmt","","from","","generate_token","into","","into_any","","into_any_arc","","into_any_rc","","listener","new","release_token","remove_client_auth","report","source","to_string","try_from","","try_into","","try_into_slug","try_octets_into","","type_id","","update","vzip","","ArtiBinPathNotAbsolute","ArtiDataDirectoryCreationFailed","ArtiDataDirectoryPathExistsAsFile","ArtiDataDirectoryPathNotAbsolute","ArtiProcessStartFailed","ArtiProcessStdoutTakeFailed","ArtiStdoutReadThreadSpawnFailed","ArtiTomlFileCreationFailed","ArtiTomlFileWriteFailed","Error","NotImplemented","as_any","as_any_mut","borrow","borrow_mut","fmt","","from","into","into_any","into_any_arc","into_any_rc","report","source","to_string","try_from","try_into","try_into_slug","try_octets_into","type_id","vzip","ArtiNotBootstrapped","ArtiOpenStreamFailed","ArtiProcessCreationFailed","ArtiRpcConnectFailed","ArtiTorClient","ArtiTorClientConfig","BundledArti","CircuitTokenInvalid","Error","NotImplemented","SystemArti","__clone_box","add_client_auth","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","connect","fmt","","","from","","","generate_token","into","","","into_any","","","into_any_arc","","","into_any_rc","","","listener","new","release_token","remove_client_auth","report","source","to_owned","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","vzip","","","arti_bin_path","data_directory","AddressMissing","AddressParseFailed","AddressPortInvalid","BinaryPathInvalid","BridgeLine","BridgeLineError","FingerprintInvalid","FingerprintMissing","KeyValueInvalid","PluggableTransportConfig","PluggableTransportConfigError","TransportMissing","TransportNameInvalid","","__clone_box","","add_option","address","as_any","","","","as_any_mut","","","","as_legacy_tor_setconf_value","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fingerprint","fmt","","","","","","from","","","","from_str","into","","","","into_any","","","","into_any_arc","","","","into_any_rc","","","","keyvalues","new","","options","path_to_binary","report","","to_owned","","to_string","","transport","transports","try_from","","","","try_into","","","","try_into_slug","","try_octets_into","","","","type_id","","","","vzip","","","","AddOnionFailed","BridgeTransportNotSupported","BridgeTransportTypeMultiplyDefined","BundledTor","CircuitTokenInvalid","DelOnionFailed","Error","GetInfoNetListenersSocksFailed","GetInfoVersionFailed","LegacyControlStreamCreationFailed","LegacyTorClient","LegacyTorClientConfig","LegacyTorControllerCreationFailed","LegacyTorNotBootstrapped","LegacyTorProcessAuthenticationFailed","LegacyTorProcessCreationFailed","LegacyTorProcessTooOld","NoSocksListenersFound","NotImplemented","OnionClientAuthAddFailed","OnionClientAuthRemoveFailed","PluggableTransportBinaryNameNotUtf8Representnable","PluggableTransportConfigDirectoryCreationFailed","PluggableTransportConfigError","PluggableTransportDirectoryNameCollision","PluggableTransportSymlinkCreationFailed","PluggableTransportSymlinkRemovalFailed","SetConfDisableNetwork0Failed","SetConfFailed","SetEventsFailed","Socks5ConnectionFailed","SystemTor","TcpListenerBindFailed","TcpListenerLocalAddrFailed","WaitAsyncEventsFailed","__clone_box","add_client_auth","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","connect","fmt","","","from","","","generate_token","into","","","into_any","","","into_any_arc","","","into_any_rc","","","listener","new","release_token","remove_client_auth","report","source","to_owned","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","version","vzip","","","allowed_ports","bridge_lines","data_directory","pluggable_transports","proxy_settings","tor_bin_path","tor_control_addr","tor_control_passwd","tor_socks_addr","Error","LegacyTorVersion","ParseError","__clone_box","as_any","","as_any_mut","","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","eq","fmt","","from","","from_str","into","","into_any","","into_any_arc","","into_any_rc","","new","partial_cmp","report","to_owned","to_string","","try_from","","try_into","","try_into_slug","","try_octets_into","","type_id","","vzip","","ClientAlreadyBootstrapped","ClientNotBootstrapped","ConnectFailed","Error","MockTorClient","NotImplemented","OnionServiceAuthInvalid","OnionServiceNotFound","OnionServiceNotPublished","OnionServiceRequiresOnionAuth","TcpListenerBindFailed","TcpListenerLocalAddrFailed","add_client_auth","as_any","","as_any_mut","","bootstrap","borrow","","borrow_mut","","connect","default","drop","fmt","","from","","generate_token","into","","into_any","","into_any_arc","","into_any_rc","","listener","new","release_token","remove_client_auth","report","source","to_string","try_from","","try_into","","try_into_slug","try_octets_into","","type_id","","update","vzip","","Generic","Https","HttpsProxyConfig","ProxyConfig","ProxyConfigError","Socks4","Socks4ProxyConfig","Socks5","Socks5ProxyConfig","__clone_box","","","","as_any","","","","","as_any_mut","","","","","borrow","","","","","borrow_mut","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","fmt","","","","","","from","","","","","","","","into","","","","","into_any","","","","","into_any_arc","","","","","into_any_rc","","","","","new","","","report","to_owned","","","","to_string","try_from","","","","","try_into","","","","","try_into_slug","try_octets_into","","","","","type_id","","","","","vzip","","","","","ConversionError","ED25519_PRIVATE_KEYBLOB_BASE64_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_HEADER_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_SIZE","ED25519_PRIVATE_KEY_SIZE","ED25519_PUBLIC_KEY_SIZE","ED25519_SIGNATURE_SIZE","Ed25519PrivateKey","Ed25519PublicKey","Ed25519Signature","Error","KeyInvalid","One","ParseError","SignBit","V3OnionServiceId","V3_ONION_SERVICE_ID_STRING_LENGTH","V3_ONION_SERVICE_ID_STRING_SIZE","X25519PrivateKey","X25519PublicKey","X25519_PRIVATE_KEY_BASE64_LENGTH","X25519_PRIVATE_KEY_BASE64_SIZE","X25519_PRIVATE_KEY_SIZE","X25519_PUBLIC_KEY_BASE32_LENGTH","X25519_PUBLIC_KEY_BASE32_SIZE","X25519_PUBLIC_KEY_SIZE","Zero","__clone_box","","","","","","","as_any","","","","","","","","as_any_mut","","","","","","","","as_bytes","","","borrow","","","","","","","","borrow_mut","","","","","","","","clone","","","","","","","clone_into","","","","","","","clone_to_uninit","","","","","","","cmp","compare","eq","","","","","","equivalent","","","","","","fmt","","","","","","","","","from","","","","","","","","","from_base32","from_base64","from_key_blob","from_private_key","","","from_private_x25519","from_public_key","from_raw","","","","","from_service_id","from_string","generate","","hash","","into","","","","","","","","into_any","","","","","","","","into_any_arc","","","","","","","","into_any_rc","","","","","","","","is_valid","partial_cmp","report","sign_message","","to_base32","to_base64","to_bytes","","","to_key_blob","to_owned","","","","","","","to_string","","try_from","","","","","","","","try_into","","","","","","","","try_into_slug","","try_octets_into","","","","","","","","type_id","","","","","","","","verify","verify_x25519","vzip","","","","","","","","BootstrapComplete","BootstrapStatus","CircuitToken","Domain","DomainAddr","Error","Generic","LogReceived","OnionAddr","OnionAddrV3","OnionListener","OnionService","OnionServicePublished","OnionStream","ParseFailure","Socket","TargetAddr","TorEvent","TorProvider","V3","__clone_box","","","","accept","add_client_auth","as_any","","","","","","","","as_any_mut","","","","","","","","bootstrap","borrow","","","","","","","","borrow_mut","","","","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","cmp","","","compare","","","connect","deref","deref_mut","domain","drop","eq","","","equivalent","","","","","","","","","flush","fmt","","","","","","","","","","","","from","","","","","","","","","","","","","from_str","","","generate_token","hash","","","into","","","","","","","","into_any","","","","","","","","into_any_arc","","","","","","","into_any_rc","","","","","","","","listener","local_addr","new","partial_cmp","","","peer_addr","port","read","release_token","remove_client_auth","report","service_id","set_nonblocking","to_owned","","","","to_string","","","","","try_clone","try_from","","","","","","","","","try_into","","","","","","","","try_into_slug","","","","","try_octets_into","","","","","","","","type_id","","","","","","","","update","virt_port","vzip","","","","","","","","write","","line","progress","service_id","summary","tag"],"q":[[0,"tor_interface"],[10,"tor_interface::arti_client_tor_client"],[67,"tor_interface::arti_process"],[98,"tor_interface::arti_tor_client"],[172,"tor_interface::arti_tor_client::ArtiTorClientConfig"],[174,"tor_interface::censorship_circumvention"],[278,"tor_interface::legacy_tor_client"],[377,"tor_interface::legacy_tor_client::LegacyTorClientConfig"],[386,"tor_interface::legacy_tor_version"],[433,"tor_interface::mock_tor_client"],[490,"tor_interface::proxy"],[604,"tor_interface::tor_crypto"],[842,"tor_interface::tor_provider"],[1074,"tor_interface::tor_provider::TorEvent"],[1079,"core::result"],[1080,"core::any"],[1081,"core::option"],[1082,"core::fmt"],[1083,"alloc::boxed"],[1084,"alloc::sync"],[1085,"alloc::rc"],[1086,"tokio::runtime::runtime"],[1087,"std::path"],[1088,"tor_error::report"],[1089,"core::error"],[1090,"alloc::string"],[1091,"tor_persist::slug"],[1092,"alloc::vec"],[1093,"dyn_clone::sealed"],[1094,"core::net::socket_addr"],[1095,"core::cmp"],[1096,"core::hash"],[1097,"std::io::error"],[1098,"der::error"]],"i":"``````````Al000``00000000d010100101011010010101010000111010110101001Dh00000000`000000000000000000000Eb000``Dn1`100Dl0210210021021111022102100210210210210000221202102120210210021Il0El00Ej``111``101EdEf1012031203012031203101010012203312030120312031203120301011231023011203120323120312031203Fh00Ff11`111``111111111111111111101110Fd02102100210211110221021002102102102100002212021021202102100021In00000J`00``FnFj1010101000001110010101010001010101010101010Gf00``0000000Gd01010010100011010010101010000111010110101001H`Gn```0`0`GhGjGl342103421034210342103210321032103442103421033334210342103421034210321042103442103421034421034210342103Hj```````````0Hh1````````````0BhHbHfjBlh657432106574321064105743210657432106543210654321065432106005432101110005774321005743210661254105054321405210574321065743210657432106574321060075212532554321067057432106574321067057432106574321063357432106Dd0`Ad``n2```12`01```IdIb1If4C`I`1534267Aj264537801264537802645378045374537453745345310032453444555333066445533778026666645377805371453264537802645378064537802645378010445303011642453764537026453378026453780645372645378026453780142645378000JbJdJf11","f":"````````````````````````{{{f{bd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{{{f{bd}}}{{A`{ln}}}}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{bd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Al}}{f{bAn}}}B`}0{cc{}}0{{{f{bd}}}Af}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}0{{{f{bd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{{{Bd{Cb}}{f{Cd}}}{{A`{dAl}}}}{{{f{bd}}Af}l}{{{f{bd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Al}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0{fDb}0{{{f{bd}}}{{A`{{Df{Dd}}n}}}}{{}c{}}0```````````{f{{f{Ab}}}}{{{f{b}}}{{f{bAb}}}}{f{{f{c}}}{}}{{{f{b}}}{{f{bc}}}{}}{{{f{Dh}}{f{bAn}}}B`}0{cc{}}{{}c{}}{{{Bb{c}}}{{Bb{Ab}}}{}}{{{Bd{c}}}{{Bd{Ab}}}{}}{{{Bf{c}}}{{Bf{Ab}}}{}}{f{{Ch{Cf}}}}{{{f{Dh}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}{{}{{A`{c}}}{}}{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}{fDb}{{}c{}}```````````{{fDj}l}{{{f{bDl}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}00{{{f{b}}}{{f{bAb}}}}00{{{f{bDl}}}{{A`{ln}}}}{f{{f{c}}}{}}00{{{f{b}}}{{f{bc}}}{}}00{{{f{Dn}}}Dn}{{f{f{bc}}}l{}}{{fE`}l}{{{f{bDl}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Eb}}{f{bAn}}}B`}0{{{f{Dn}}{f{bAn}}}B`}{cc{}}00{{{f{bDl}}}Af}{{}c{}}00{{{Bb{c}}}{{Bb{Ab}}}{}}00{{{Bd{c}}}{{Bd{Ab}}}{}}00{{{Bf{c}}}{{Bf{Ab}}}{}}00{{{f{bDl}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{Dn{{A`{Dln}}}}{{{f{bDl}}Af}l}{{{f{bDl}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Eb}}}{{Ah{{f{Cj}}}}}}{fc{}}{fCl}{c{{A`{e}}}{}{}}00{{}{{A`{c}}}{}}00{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}00{fDb}00{{{f{bDl}}}{{A`{{Df{Dd}}n}}}}{{}c{}}00````````````````{{fDj}l}0{{{f{bEd}}Cl}l}{{{f{Ef}}}{{f{Eh}}}}{f{{f{Ab}}}}000{{{f{b}}}{{f{bAb}}}}000{{{f{Ef}}}Cl}{f{{f{c}}}{}}000{{{f{b}}}{{f{bc}}}{}}000{{{f{Ed}}}Ed}{{{f{Ef}}}Ef}{{f{f{bc}}}l{}}0{{fE`}l}0{{{f{Ef}}}{{f{Cl}}}}{{{f{Ed}}{f{bAn}}}B`}{{{f{Ej}}{f{bAn}}}B`}0{{{f{Ef}}{f{bAn}}}B`}{{{f{El}}{f{bAn}}}B`}0{cc{}}000{{{f{En}}}{{A`{Efc}}}{}}{{}c{}}000{{{Bb{c}}}{{Bb{Ab}}}{}}000{{{Bd{c}}}{{Bd{Ab}}}{}}000{{{Bf{c}}}{{Bf{Ab}}}{}}000{{{f{Ef}}}{{f{{Df{{F`{ClCl}}}}}}}}{{{Df{Cl}}Fb}{{A`{EdEj}}}}{{ClEhCl{Df{{F`{ClCl}}}}}{{A`{EfEl}}}}{{{f{Ed}}}{{f{{Df{Cl}}}}}}{{{f{Ed}}}{{f{Fb}}}}{f{{Ch{Cf}}}}0{fc{}}0{fCl}0{{{f{Ef}}}{{f{Cl}}}}5{c{{A`{e}}}{}{}}000{{}{{A`{c}}}{}}000{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}000{fDb}000{{}c{}}000```````````````````````````````````{{fDj}l}{{{f{bFd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}00{{{f{b}}}{{f{bAb}}}}00{{{f{bFd}}}{{A`{ln}}}}{f{{f{c}}}{}}00{{{f{b}}}{{f{bc}}}{}}00{{{f{Ff}}}Ff}{{f{f{bc}}}l{}}{{fE`}l}{{{f{bFd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Fh}}{f{bAn}}}B`}0{{{f{Ff}}{f{bAn}}}B`}{cc{}}00{{{f{bFd}}}Af}{{}c{}}00{{{Bb{c}}}{{Bb{Ab}}}{}}00{{{Bd{c}}}{{Bd{Ab}}}{}}00{{{Bf{c}}}{{Bf{Ab}}}{}}00{{{f{bFd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{Ff{{A`{FdFh}}}}{{{f{bFd}}Af}l}{{{f{bFd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Fh}}}{{Ah{{f{Cj}}}}}}{fc{}}{fCl}{c{{A`{e}}}{}{}}00{{}{{A`{c}}}{}}00{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}00{fDb}00{{{f{bFd}}}{{A`{{Df{Dd}}n}}}}{{{f{bFd}}}Fj}{{}c{}}00````````````{{fDj}l}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{Fj}}}Fj}{{f{f{bc}}}l{}}{{fE`}l}{{{f{Fj}}{f{Fj}}}Fl}{{{f{Fn}}{f{bAn}}}B`}0{cc{}}0{{{f{En}}}{{A`{Fjc}}}{}}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}0{{G`G`G`{Ah{G`}}{Ah{{f{En}}}}}{{A`{FjFn}}}}{{{f{Fj}}{f{Fj}}}{{Ah{Gb}}}}{f{{Ch{Cf}}}}{fc{}}{fCl}{{{f{Fj}}}Cl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}0{fDb}0{{}c{}}0````````````{{{f{bGd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{{{f{bGd}}}{{A`{ln}}}}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{bGd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{}Gd}{{{f{bGd}}}l}{{{f{Gf}}{f{bAn}}}B`}0{cc{}}0{{{f{bGd}}}Af}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}0{{{f{bGd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}9{{{f{bGd}}Af}l}{{{f{bGd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Gf}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0{fDb}0{{{f{bGd}}}{{A`{{Df{Dd}}n}}}}{{}c{}}0`````````{{fDj}l}000{f{{f{Ab}}}}0000{{{f{b}}}{{f{bAb}}}}0000{f{{f{c}}}{}}0000{{{f{b}}}{{f{bc}}}{}}0000{{{f{Gh}}}Gh}{{{f{Gj}}}Gj}{{{f{Gl}}}Gl}{{{f{Gn}}}Gn}{{f{f{bc}}}l{}}000{{fE`}l}000{{{f{H`}}{f{bAn}}}B`}0{{{f{Gh}}{f{bAn}}}B`}{{{f{Gj}}{f{bAn}}}B`}{{{f{Gl}}{f{bAn}}}B`}{{{f{Gn}}{f{bAn}}}B`}{cc{}}000{GhGn}{GjGn}2{GlGn}{{}c{}}0000{{{Bb{c}}}{{Bb{Ab}}}{}}0000{{{Bd{c}}}{{Bd{Ab}}}{}}0000{{{Bf{c}}}{{Bf{Ab}}}{}}0000{Ad{{A`{GhH`}}}}{{Ad{Ah{Cl}}{Ah{Cl}}}{{A`{GjH`}}}}{{Ad{Ah{Cl}}{Ah{Cl}}}{{A`{GlH`}}}}{f{{Ch{Cf}}}}{fc{}}000{fCl}{c{{A`{e}}}{}{}}0000{{}{{A`{c}}}{}}0000{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0000{fDb}0000{{}c{}}0000````````````````````````````{{fDj}l}000000{f{{f{Ab}}}}0000000{{{f{b}}}{{f{bAb}}}}0000000{{{f{Hb}}}{{f{{Hd{E`}}}}}}{{{f{Bl}}}{{f{{Hd{E`}}}}}}{{{f{h}}}{{f{{Hd{E`}}}}}}{f{{f{c}}}{}}0000000{{{f{b}}}{{f{bc}}}{}}0000000{{{f{Bh}}}Bh}{{{f{Hb}}}Hb}{{{f{Hf}}}Hf}{{{f{j}}}j}{{{f{Bl}}}Bl}{{{f{h}}}h}{{{f{Hh}}}Hh}{{f{f{bc}}}l{}}000000{{fE`}l}000000{{{f{h}}{f{h}}}Gb}{{f{f{c}}}Gb{}}{{{f{Bh}}{f{Bh}}}Fl}{{{f{Hb}}{f{Hb}}}Fl}{{{f{Hf}}{f{Hf}}}Fl}{{{f{j}}{f{j}}}Fl}{{{f{Bl}}{f{Bl}}}Fl}{{{f{h}}{f{h}}}Fl}{{f{f{c}}}Fl{}}00000{{{f{Bh}}{f{bAn}}}B`}{{{f{Hj}}{f{bAn}}}B`}0{{{f{Hb}}{f{bAn}}}B`}{{{f{Hf}}{f{bAn}}}B`}{{{f{j}}{f{bAn}}}B`}{{{f{Bl}}{f{bAn}}}B`}{{{f{h}}{f{bAn}}}B`}0{cc{}}0000000{FlHh}{{{f{En}}}{{A`{BlHj}}}}{{{f{En}}}{{A`{jHj}}}}{{{f{En}}}{{A`{BhHj}}}}{{{f{Bh}}}Hb}{{{f{j}}}Bl}{{{f{Bh}}}h}{{{f{j}}}{{A`{{F`{BhHh}}Hj}}}}{{{f{Hb}}}h}{{{f{{Hd{E`}}}}}{{A`{BhHj}}}}{{{f{{Hd{E`}}}}}{{A`{HbHj}}}}{{{f{{Hd{E`}}}}}{{A`{HfHj}}}}{{{f{{Hd{E`}}}}}{{A`{jHj}}}}{{{f{{Hd{E`}}}}}Bl}{{{f{h}}}{{A`{HbHj}}}}{{{f{En}}}{{A`{hHj}}}}{{}Bh}{{}j}{{{f{Bl}}{f{bc}}}lHl}{{{f{h}}{f{bc}}}lHl}{{}c{}}0000000{{{Bb{c}}}{{Bb{Ab}}}{}}0000000{{{Bd{c}}}{{Bd{Ab}}}{}}0000000{{{Bf{c}}}{{Bf{Ab}}}{}}0000000{{{f{En}}}Fl}{{{f{h}}{f{h}}}{{Ah{Gb}}}}{f{{Ch{Cf}}}}{{{f{Bh}}{f{{Bn{E`}}}}}Hf}{{{f{j}}{f{{Bn{E`}}}}}{{A`{{F`{HfHh}}Hj}}}}{{{f{Bl}}}Cl}{{{f{j}}}Cl}{{{f{Bh}}}{{Hd{E`}}}}{{{f{Hf}}}{{Hd{E`}}}}{{{f{j}}}{{Hd{E`}}}}{{{f{Bh}}}Cl}{fc{}}000000{fCl}0{c{{A`{e}}}{}{}}0000000{{}{{A`{c}}}{}}0000000{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}0000000{fDb}0000000{{{f{Hf}}{f{{Bn{E`}}}}{f{Hb}}}Fl}{{{f{Hf}}{f{{Bn{E`}}}}{f{Bl}}Hh}Fl}{{}c{}}0000000````````````````````{{fDj}l}000{{{f{C`}}}{{A`{{Ah{Aj}}Hn}}}}{{{f{bI`}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0000000{{{f{b}}}{{f{bAb}}}}0000000{{{f{bI`}}}{{A`{ln}}}}{f{{f{c}}}{}}0000000{{{f{b}}}{{f{bc}}}{}}0000000{{{f{Ib}}}Ib}{{{f{Id}}}Id}{{{f{If}}}If}{{{f{Ad}}}Ad}{{f{f{bc}}}l{}}000{{fE`}l}000{{{f{Ib}}{f{Ib}}}Gb}{{{f{Id}}{f{Id}}}Gb}{{{f{If}}{f{If}}}Gb}{{f{f{c}}}Gb{}}00{{{f{bI`}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Aj}}}{{f{c}}}{}}{{{f{bAj}}}{{f{bc}}}{}}{{{f{If}}}{{f{En}}}}{{{f{bC`}}}l}{{{f{Ib}}{f{Ib}}}Fl}{{{f{Id}}{f{Id}}}Fl}{{{f{If}}{f{If}}}Fl}{{f{f{c}}}Fl{}}00000000{{{f{bAj}}}{{A`{lHn}}}}{{{f{n}}{f{bAn}}}B`}0{{{f{Ib}}{f{bAn}}}B`}0{{{f{Id}}{f{bAn}}}B`}0{{{f{If}}{f{bAn}}}B`}0{{{f{Ad}}{f{bAn}}}B`}0{{{f{Dd}}{f{bAn}}}B`}{{{f{Aj}}{f{bAn}}}B`}{cc{}}{Ebn}{Aln}{Fhn}{Gfn}44444{{{F`{hBj}}}Ad}55{{{f{En}}}{{A`{Idc}}}{}}{{{f{En}}}{{A`{Ifc}}}{}}{{{f{En}}}{{A`{Adc}}}{}}{{{f{bI`}}}Af}{{{f{Ib}}{f{bc}}}lHl}{{{f{Id}}{f{bc}}}lHl}{{{f{If}}{f{bc}}}lHl}{{}c{}}0000000{{{Bb{c}}}{{Bb{Ab}}}{}}0000000{{{Bd{c}}}{{Bd{Ab}}}{}}000000{{{Bf{c}}}{{Bf{Ab}}}{}}0000000{{{f{bI`}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{{{f{Aj}}}{{Ah{Id}}}}{{hBj}Ib}{{{f{Ib}}{f{Ib}}}{{Ah{Gb}}}}{{{f{Id}}{f{Id}}}{{Ah{Gb}}}}{{{f{If}}{f{If}}}{{Ah{Gb}}}}{{{f{Aj}}}{{Ah{Ad}}}}{{{f{If}}}Bj}{{{f{bAj}}{f{b{Bn{E`}}}}}{{A`{IhHn}}}}{{{f{bI`}}Af}l}{{{f{bI`}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Ib}}}{{f{h}}}}{{{f{C`}}Fl}{{A`{lHn}}}}{fc{}}000{fCl}0000{{{f{Aj}}}{{A`{AjHn}}}}{c{{A`{e}}}{}{}}0000{{{F`{ClBj}}}{{A`{Ifc}}}{}}111{{}{{A`{c}}}{}}0000000{f{{A`{CnD`}}}}0000{{}{{A`{c}}}{}}0000000{fDb}0000000{{{f{bI`}}}{{A`{{Df{Dd}}n}}}}{{{f{Ib}}}Bj}{{}c{}}0000000{{{f{b}}{f{{Bn{E`}}}}}{{A`{lIj}}}}{{{f{bAj}}{f{{Bn{E`}}}}}{{A`{IhHn}}}}`````","D":"AMh","p":[[0,"mut"],[5,"ArtiClientTorClient",10],[1,"reference",null,null,1],[5,"V3OnionServiceId",604],[5,"X25519PrivateKey",604],[1,"unit"],[6,"Error",842],[6,"Result",1079,null,1],[10,"Any",1080],[6,"TargetAddr",842],[8,"CircuitToken",842],[6,"Option",1081,null,1],[5,"OnionStream",842],[6,"Error",10],[5,"Formatter",1082],[8,"Result",1082],[5,"Box",1083,null,1],[5,"Arc",1084,null,1],[5,"Rc",1085,null,1],[5,"Ed25519PrivateKey",604],[1,"u16"],[5,"X25519PublicKey",604],[1,"slice"],[5,"OnionListener",842],[5,"Runtime",1086],[5,"Path",1087],[5,"ReportHelper",1088],[5,"Report",1088],[10,"Error",1089],[5,"String",1090],[5,"Slug",1091],[6,"BadSlug",1091],[5,"TypeId",1080],[6,"TorEvent",842],[5,"Vec",1092],[6,"Error",67],[5,"Private",1093],[5,"ArtiTorClient",98],[6,"ArtiTorClientConfig",98],[1,"u8"],[6,"Error",98],[5,"PluggableTransportConfig",174],[5,"BridgeLine",174],[6,"SocketAddr",1094],[6,"PluggableTransportConfigError",174],[6,"BridgeLineError",174],[1,"str"],[1,"tuple",null,null,1],[5,"PathBuf",1087],[5,"LegacyTorClient",278],[6,"LegacyTorClientConfig",278],[6,"Error",278],[5,"LegacyTorVersion",386],[1,"bool"],[6,"Error",386],[1,"u32"],[6,"Ordering",1095],[5,"MockTorClient",433],[6,"Error",433],[5,"Socks4ProxyConfig",490],[5,"Socks5ProxyConfig",490],[5,"HttpsProxyConfig",490],[6,"ProxyConfig",490],[6,"ProxyConfigError",490],[5,"Ed25519PublicKey",604],[1,"array"],[5,"Ed25519Signature",604],[6,"SignBit",604],[6,"Error",604],[10,"Hasher",1096],[5,"Error",1097],[10,"TorProvider",842],[5,"OnionAddrV3",842],[6,"OnionAddr",842],[5,"DomainAddr",842],[1,"usize"],[5,"Error",1098],[15,"BundledArti",172],[15,"BundledTor",377],[15,"SystemTor",377],[15,"LogReceived",1074],[15,"BootstrapStatus",1074],[15,"OnionServicePublished",1074]],"r":[],"b":[[35,"impl-Debug-for-Error"],[36,"impl-Display-for-Error"],[82,"impl-Display-for-Error"],[83,"impl-Debug-for-Error"],[128,"impl-Display-for-Error"],[129,"impl-Debug-for-Error"],[217,"impl-Debug-for-PluggableTransportConfigError"],[218,"impl-Display-for-PluggableTransportConfigError"],[220,"impl-Display-for-BridgeLineError"],[221,"impl-Debug-for-BridgeLineError"],[332,"impl-Debug-for-Error"],[333,"impl-Display-for-Error"],[402,"impl-Display-for-Error"],[403,"impl-Debug-for-Error"],[458,"impl-Display-for-Error"],[459,"impl-Debug-for-Error"],[535,"impl-Debug-for-ProxyConfigError"],[536,"impl-Display-for-ProxyConfigError"],[545,"impl-From%3CSocks4ProxyConfig%3E-for-ProxyConfig"],[546,"impl-From%3CSocks5ProxyConfig%3E-for-ProxyConfig"],[548,"impl-From%3CHttpsProxyConfig%3E-for-ProxyConfig"],[710,"impl-Debug-for-Error"],[711,"impl-Display-for-Error"],[716,"impl-Debug-for-V3OnionServiceId"],[717,"impl-Display-for-V3OnionServiceId"],[937,"impl-Display-for-Error"],[938,"impl-Debug-for-Error"],[939,"impl-Debug-for-OnionAddrV3"],[940,"impl-Display-for-OnionAddrV3"],[941,"impl-Debug-for-OnionAddr"],[942,"impl-Display-for-OnionAddr"],[943,"impl-Display-for-DomainAddr"],[944,"impl-Debug-for-DomainAddr"],[945,"impl-Display-for-TargetAddr"],[946,"impl-Debug-for-TargetAddr"],[950,"impl-From%3CError%3E-for-Error"],[951,"impl-From%3CError%3E-for-Error"],[952,"impl-From%3CError%3E-for-Error"],[953,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAEsDPgACAAAACwADABEAFAAoAAAAKwAGADMAIQBXABMAbAAXAIcAAACLACMAvQABAMEABwDKAA0A2QAFAOMAAADoAAsA+QAFAAEBGwAeAQIAIgEtAFMBAABXAQkAYgETAHcBCwCFAQ8AlwEAAJoBBQChARMAtwEVAM8BAADSAQYA2gEQAPQBKQAiAgEAJQIAACsCDgA9Ah8AagIAAHgCFwCTAjsA1wIAAOkCAQDzAhcADAMBABYDKgBDAwcAXgMEAGUDDwB2AyEAmQMBAJwDGQC3AwMAwAMAAMMDAgDHAwIA0gMWAOwDAgDxAwAA9AMAAPcDCAABBCUAKQQJAA==","P":[[30,"T"],[34,""],[37,"T"],[39,""],[40,"U"],[42,"T"],[48,""],[55,"U,T"],[57,"U"],[59,""],[60,"Target"],[62,""],[65,"V"],[78,""],[80,"T"],[82,""],[84,"T"],[85,"U"],[86,"T"],[89,""],[92,"U,T"],[93,"U"],[94,""],[95,"Target"],[96,""],[97,"V"],[109,""],[118,"T"],[124,""],[125,"T"],[126,""],[131,"T"],[134,""],[135,"U"],[138,"T"],[147,""],[153,"T"],[154,""],[155,"U,T"],[158,"U"],[161,""],[162,"Target"],[165,""],[169,"V"],[188,""],[201,"T"],[209,""],[211,"T"],[213,""],[222,"T"],[226,"FromStr::Err"],[227,"U"],[231,"T"],[243,""],[250,"T"],[252,""],[256,"U,T"],[260,"U"],[264,""],[266,"Target"],[270,""],[274,"V"],[313,""],[322,"T"],[328,""],[329,"T"],[330,""],[335,"T"],[338,""],[339,"U"],[342,"T"],[351,""],[357,"T"],[358,""],[359,"U,T"],[362,"U"],[365,""],[366,"Target"],[369,""],[374,"V"],[389,""],[394,"T"],[398,""],[399,"T"],[400,""],[404,"T"],[406,"FromStr::Err"],[407,"U"],[409,"T"],[415,""],[418,"T"],[419,""],[421,"U,T"],[423,"U"],[425,""],[427,"Target"],[429,""],[431,"V"],[445,""],[451,"T"],[455,""],[460,"T"],[462,""],[463,"U"],[465,"T"],[471,""],[478,"U,T"],[480,"U"],[482,""],[483,"Target"],[485,""],[488,"V"],[499,""],[513,"T"],[523,""],[527,"T"],[531,""],[541,"T"],[545,""],[547,"T"],[548,""],[549,"U"],[554,"T"],[569,""],[573,"T"],[577,""],[578,"U,T"],[583,"U"],[588,""],[589,"Target"],[594,""],[599,"V"],[632,""],[658,"T"],[674,""],[681,"T"],[688,""],[696,"K"],[697,""],[703,"K"],[709,""],[718,"T"],[726,""],[744,"__H"],[746,"U"],[754,"T"],[778,""],[789,"T"],[796,""],[798,"U,T"],[806,"U"],[814,""],[816,"Target"],[824,""],[834,"V"],[862,""],[885,"T"],[901,""],[905,"T"],[909,""],[916,"K"],[919,""],[920,"Deref::Target"],[922,""],[927,"K"],[936,""],[949,"T"],[950,""],[954,"T"],[959,""],[960,"T"],[962,"FromStr::Err"],[965,""],[966,"__H"],[969,"U"],[977,"T"],[1000,""],[1014,"T"],[1018,""],[1024,"U,T"],[1029,"TryFrom::Error"],[1030,"U,T"],[1033,"U"],[1041,""],[1046,"Target"],[1054,""],[1064,"V"],[1072,""]]}]]'));
+var searchIndex = new Map(JSON.parse('[["gosling",{"t":"CFGPPPPPPPPPPGIPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO","n":["context","Context","ContextEvent","EndpointClientError","EndpointClientHandshakeCompleted","EndpointClientHandshakeFailed","EndpointServerChannelRequestReceived","EndpointServerError","EndpointServerHandshakeCompleted","EndpointServerHandshakeFailed","EndpointServerHandshakeRejected","EndpointServerHandshakeStarted","EndpointServerPublished","Error","HandshakeHandle","HandshakeHandleNotFound","HonkRpc","IdentityClientChallengeReceived","IdentityClientError","IdentityClientHandshakeCompleted","IdentityClientHandshakeFailed","IdentityServerChallengeResponseReceived","IdentityServerEndpointRequestReceived","IdentityServerError","IdentityServerHandshakeCompleted","IdentityServerHandshakeFailed","IdentityServerHandshakeRejected","IdentityServerHandshakeStarted","IdentityServerPublished","IncorrectUsage","InvalidArgument","Io","TorBootstrapCompleted","TorBootstrapStatusReceived","TorCrypto","TorLogReceived","TorNotConnected","TorProvider","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","connect","endpoint_client_abort_handshake","endpoint_client_begin_handshake","endpoint_server_handle_channel_request_received","endpoint_server_start","endpoint_server_stop","fmt","","","from","","","","","","","generate_circuit_token","identity_client_abort_handshake","identity_client_begin_handshake","identity_client_handle_challenge_received","identity_server_handle_challenge_response_received","identity_server_handle_endpoint_request_received","identity_server_start","identity_server_stop","into","","","into_any","","","into_any_arc","","into_any_rc","","","into_any_send","","","into_any_sync","","new","release_circuit_token","report","source","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","vzip","","","challenge_response","challenge_response_valid","channel_name","","client_allowed","","client_auth_private_key","client_auth_public_key","client_auth_signature_valid","client_proof_signature_valid","","client_requested_channel_valid","client_requested_endpoint_valid","client_service_id","","","","endpoint_challenge","endpoint_name","","","endpoint_private_key","endpoint_service_id","","","","handle","","","","","","","","","","","","","","","","identity_service_id","line","progress","reason","","","","requested_channel","requested_endpoint","stream","","summary","tag"],"q":[[0,"gosling"],[1,"gosling::context"],[113,"gosling::context::ContextEvent"],[168,"core::any"],[169,"core::result"],[170,"tor_interface::tor_provider"],[171,"core::option"],[172,"tor_interface::tor_crypto"],[173,"alloc::string"],[174,"core::fmt"],[175,"honk_rpc::honk_rpc"],[176,"std::io::error"],[177,"bson::document"],[178,"alloc::boxed"],[179,"alloc::sync"],[180,"alloc::rc"],[181,"core::time"],[182,"tor_error::report"],[183,"core::error"],[184,"tor_persist::slug"],[185,"alloc::collections::vec_deque"]],"i":"```lBj00100000``11010000100000111001011h21021002102100000022102222210000000002102121021021210022202102120210210021EbEdEfEh2EjElEn55225F`1Fb5Fd43Ff4580715FhFj5<6;Fl;FnG`7<;Gb;GdGf7542:;EfEh22","f":"``````````````````````````````````````{b{{b{d}}}}00{{{b{f}}}{{b{fd}}}}00{{{b{fh}}}{{n{jl}}}}{b{{b{c}}}{}}00{{{b{f}}}{{b{fc}}}{}}00{{{b{fh}}A`{Ad{Ab}}}{{n{Afl}}}}{{{b{fh}}Ah}{{n{jl}}}}{{{b{fh}}AjAlAn}{{n{Ahl}}}}{{{b{fh}}AhB`}{{n{jl}}}}{{{b{fh}}BbAnAjBd}{{n{jl}}}}{{{b{fh}}Aj}{{n{jl}}}}{{{b{l}}{b{fBf}}}Bh}0{{{b{Bj}}{b{fBf}}}Bh}{cc{}}{Bll}{Bnl}{C`l}{Cbl}44{{{b{fh}}}Ab}<{{{b{fh}}AjAn}{{n{Ahl}}}}{{{b{fh}}AhCd}{{n{jl}}}}<{{{b{fh}}AhB`B`Cd}{{n{jl}}}}{{{b{fh}}}{{n{jl}}}}0{{}c{}}00{{{Cf{c}}}{{Cf{d}}}{}}00{{{Ch{c}}}{{Ch{d}}}{}}0{{{Cj{c}}}{{Cj{d}}}{}}0022222{{{Cf{Cl}}CnCnD`Db{Ad{D`}}Bb}{{n{hl}}}}{{{b{fh}}Ab}j}{b{{Df{Dd}}}}{{{b{l}}}{{Ad{{b{Dh}}}}}}{bAn}{c{{n{e}}}{}{}}00{{}{{n{c}}}{}}00{b{{n{DjDl}}}}{{}{{n{c}}}{}}00{bDn}00{{{b{fh}}}{{n{{E`{Bj}}l}}}}{{}c{}}00```````````````````````````````````````````````````````","D":"Nl","p":[[1,"reference",null,null,1],[10,"Any",168],[0,"mut"],[5,"Context",1],[1,"unit"],[6,"Error",1],[6,"Result",169,null,1],[6,"TargetAddr",170],[8,"CircuitToken",170],[6,"Option",171,null,1],[5,"OnionStream",170],[8,"HandshakeHandle",1],[5,"V3OnionServiceId",172],[5,"X25519PrivateKey",172],[5,"String",173],[1,"bool"],[5,"Ed25519PrivateKey",172],[5,"X25519PublicKey",172],[5,"Formatter",174],[8,"Result",174],[6,"ContextEvent",1],[6,"Error",170],[6,"Error",172],[6,"Error",175],[5,"Error",176],[5,"Document",177],[5,"Box",178,null,1],[5,"Arc",179,null,1],[5,"Rc",180,null,1],[10,"TorProvider",170],[1,"u16"],[5,"Duration",181],[1,"i32"],[5,"ReportHelper",182],[5,"Report",182],[10,"Error",183],[5,"Slug",184],[6,"BadSlug",184],[5,"TypeId",168],[5,"VecDeque",185],[15,"IdentityServerChallengeResponseReceived",113],[15,"IdentityServerHandshakeRejected",113],[15,"EndpointClientHandshakeCompleted",113],[15,"EndpointServerHandshakeCompleted",113],[15,"EndpointServerHandshakeRejected",113],[15,"IdentityClientHandshakeCompleted",113],[15,"IdentityServerHandshakeCompleted",113],[15,"IdentityServerEndpointRequestReceived",113],[15,"EndpointServerChannelRequestReceived",113],[15,"IdentityClientChallengeReceived",113],[15,"EndpointServerPublished",113],[15,"IdentityClientHandshakeFailed",113],[15,"IdentityServerHandshakeStarted",113],[15,"IdentityServerHandshakeFailed",113],[15,"EndpointClientHandshakeFailed",113],[15,"EndpointServerHandshakeStarted",113],[15,"EndpointServerHandshakeFailed",113],[15,"TorLogReceived",113],[15,"TorBootstrapStatusReceived",113]],"r":[],"b":[[57,"impl-Display-for-Error"],[58,"impl-Debug-for-Error"],[61,"impl-From%3CError%3E-for-Error"],[62,"impl-From%3CError%3E-for-Error"],[63,"impl-From%3CError%3E-for-Error"],[64,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADIABwAnAAUALgAFADoAAgA+AAMATwAMAF4ADwBvAAIA","P":[[45,"T"],[51,""],[60,"T"],[61,""],[65,"T"],[67,""],[75,"U"],[78,"T"],[91,""],[96,"U,T"],[99,"U"],[102,""],[103,"Target"],[106,""],[110,"V"]]}],["honk_rpc",{"t":"CKPPPPPSSGPGPPPPPPPPIPPPPGPPPPPPFPPPPPNNNNNNNNNNNNNNNMNNNNNNNNNHNNHHHNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNOOOOO","n":["honk_rpc","ApiSet","BsonDocumentParseFailed","BsonDocumentSizeTooLarge","BsonDocumentSizeTooSmall","BsonParseFailed","BsonWriteFailed","DEFAULT_MAX_MESSAGE_SIZE","DEFAULT_MAX_WAIT_TIME","Error","","ErrorCode","InvalidMaxMesageSize","MessageConversionFailed","MessageParseFailed","MessageReadTimedOut","MessageTooBig","MessageVersionIncompatible","Pending","ReaderReadFailed","RequestCookie","RequestCookieInvalid","RequestFunctionInvalid","RequestNamespaceInvalid","RequestVersionInvalid","Response","ResponseCookieInvalid","ResponseStateInvalid","Runtime","SectionIdUnknown","SectionParseFailed","SectionTooLarge","Session","Success","Unknown","UnknownErrorSectionReceived","WriterFlushFailed","WriterWriteFailed","borrow","","","","borrow_mut","","","","client_call","client_drain_responses","client_next_response","eq","equivalent","","","exec_function","fmt","","","","from","","","","","get_error_section_size","get_max_message_size","get_max_wait_time","get_message_overhead","get_request_section_size","get_response_section_size","into","","","","into_stream","namespace","new","next_result","set_max_message_size","set_max_wait_time","source","to_string","","try_from","","","","try_into","","","","type_id","","","","update","","vzip","","","","cookie","","","error_code","result"],"q":[[0,"honk_rpc"],[1,"honk_rpc::honk_rpc"],[100,"honk_rpc::honk_rpc::Response"],[105,"bson::document"],[106,"core::result"],[107,"std::io"],[108,"core::marker"],[109,"alloc::collections::vec_deque::drain"],[110,"core::option"],[111,"bson::bson"],[112,"core::fmt"],[113,"alloc::string"],[114,"core::time"],[115,"core::error"],[116,"core::any"]],"i":"``A`00B`1```Aj`22121102`1111`111112`012220f2310230002222Bd334421334`11```2134101011434213421342134012134ClCnD`01","f":"``````````````````````````````````````{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{{b{d{f{c}}}}{b{h}}{b{h}}jl}{{Ab{nA`}}}{AdAfAh}}{{{b{d{f{c}}}}}{{Al{Aj}}}{AdAfAh}}{{{b{d{f{c}}}}}{{An{Aj}}}{AdAfAh}}{{{b{B`}}{b{B`}}}Bb}{{b{b{c}}}Bb{}}00{{{b{dBd}}{b{h}}jl{An{n}}}{{An{{Ab{{An{Bf}}B`}}}}}}{{{b{B`}}{b{dBh}}}Bj}0{{{b{A`}}{b{dBh}}}Bj}0{cc{}}00{jB`}1{{{An{n}}{An{Bl}}{An{Bf}}}{{Ab{BnA`}}}}{{{b{{f{c}}}}}Bn{AdAfAh}}{{{b{{f{c}}}}}C`{AdAfAh}}{{}{{Ab{BnA`}}}}{{{An{n}}{An{Bl}}Bl{An{j}}{An{l}}}{{Ab{BnA`}}}}{{{An{Bf}}}{{Ab{BnA`}}}}{{}c{}}000{{{f{c}}}c{AdAfAh}}{{{b{Bd}}}{{b{h}}}}{c{{f{c}}}{AdAfAh}}{{{b{dBd}}}{{An{{Cb{n{Ab{{An{Bf}}B`}}}}}}}}{{{b{d{f{c}}}}j}{{Ab{CdA`}}}{AdAfAh}}{{{b{d{f{c}}}}C`}Cd{AdAfAh}}{{{b{A`}}}{{An{{b{Cf}}}}}}{bBl}0{c{{Ab{e}}}{}{}}000{{}{{Ab{c}}}{}}000{bCh}000{{{b{dBd}}}Cd}{{{b{d{f{c}}}}{An{{b{d{Cj{{b{dBd}}}}}}}}}{{Ab{CdA`}}}{AdAfAh}}{{}c{}}000`````","D":"Hj","p":[[1,"reference",null,null,1],[0,"mut"],[5,"Session",1],[1,"str"],[1,"i32"],[5,"Document",105],[8,"RequestCookie",1],[6,"Error",1],[6,"Result",106,null,1],[10,"Read",107],[10,"Write",107],[10,"Send",108],[6,"Response",1],[5,"Drain",109],[6,"Option",110,null,1],[6,"ErrorCode",1],[1,"bool"],[10,"ApiSet",1],[6,"Bson",111],[5,"Formatter",112],[8,"Result",112],[5,"String",113],[1,"usize"],[5,"Duration",114],[1,"tuple",null,null,1],[1,"unit"],[10,"Error",115],[5,"TypeId",116],[1,"slice"],[15,"Pending",100],[15,"Success",100],[15,"Error",100]],"r":[],"b":[[54,"impl-Debug-for-ErrorCode"],[55,"impl-Display-for-ErrorCode"],[56,"impl-Display-for-Error"],[57,"impl-Debug-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACQABwABAAAAJwAHADIAAwA3AAMAPgAAAFAADgBhAAMA","P":[[38,"T"],[46,"RW"],[49,""],[50,"K"],[53,""],[58,"T"],[61,""],[62,"T"],[63,""],[64,"RW"],[66,""],[69,"U"],[73,"RW"],[74,""],[75,"RW"],[76,""],[77,"RW"],[79,""],[82,"U,T"],[86,"U"],[90,""],[95,"RW"],[96,"V"]]}],["tor_interface",{"t":"CCCCCCCCCCPPPPFGPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPPPPPGPPNNNNNNNNNNNNNNNNNNNNNNPPPPFGPPGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOPPPPFGPPPFGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPPPGPPPFGPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOGFPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPGFPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPFGGPFPFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPSSSSSSSFFFGPPPGFSSFFSSSSSSPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPIPFGPPGFFPPFPPGGKPNNNNNMNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNOOOOO","n":["arti_client_tor_client","arti_process","arti_tor_client","censorship_circumvention","legacy_tor_client","legacy_tor_version","mock_tor_client","proxy","tor_crypto","tor_provider","ArtiClientConfigBuilderError","ArtiClientError","ArtiClientOnionServiceLaunchError","ArtiClientTorAddrError","ArtiClientTorClient","Error","NotImplemented","OnionServiceConfigBuilderError","TcpListenerAcceptFailed","TcpListenerBindFailed","TcpListenerLocalAddrFailed","TcpStreamConnectFailed","TcpStreamIntoFailed","TorKeyMgrError","add_client_auth","as_any","","as_any_mut","","bootstrap","borrow","","borrow_mut","","connect","fmt","","from","","generate_token","into","","into_any","","into_any_arc","","into_any_rc","","into_any_send","","into_any_sync","","listener","new","release_token","remove_client_auth","report","source","to_string","try_from","","try_into","","try_into_slug","try_octets_into","","type_id","","update","vzip","","ArtiBinPathNotAbsolute","ArtiDataDirectoryCreationFailed","ArtiDataDirectoryPathExistsAsFile","ArtiDataDirectoryPathNotAbsolute","ArtiDataDirectorySetPermissionsFailed","ArtiProcessStartFailed","ArtiProcessStdoutTakeFailed","ArtiStdoutReadThreadSpawnFailed","ArtiTomlFileCreationFailed","ArtiTomlFileWriteFailed","Error","RpcTomlFileCreationFailed","RpcTomlFileWriteFailed","as_any","as_any_mut","borrow","borrow_mut","fmt","","from","into","into_any","into_any_arc","into_any_rc","into_any_send","into_any_sync","report","source","to_string","try_from","try_into","try_into_slug","try_octets_into","type_id","vzip","ArtiNotBootstrapped","ArtiOpenStreamFailed","ArtiProcessCreationFailed","ArtiRpcConnectFailed","ArtiTorClient","ArtiTorClientConfig","BundledArti","CircuitTokenInvalid","Error","NotImplemented","SystemArti","__clone_box","add_client_auth","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","connect","fmt","","","from","","","generate_token","into","","","into_any","","","into_any_arc","","","into_any_rc","","","into_any_send","","","into_any_sync","","","listener","new","release_token","remove_client_auth","report","source","to_owned","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","vzip","","","arti_bin_path","data_directory","AddressMissing","AddressParseFailed","AddressPortInvalid","BinaryPathInvalid","BridgeLine","BridgeLineError","FingerprintInvalid","FingerprintMissing","KeyValueInvalid","PluggableTransportConfig","PluggableTransportConfigError","TransportMissing","TransportNameInvalid","","__clone_box","","add_option","address","as_any","","","","as_any_mut","","","","as_legacy_tor_setconf_value","borrow","","","","borrow_mut","","","","clone","","clone_into","","clone_to_uninit","","fingerprint","fmt","","","","","","from","","","","from_str","into","","","","into_any","","","","into_any_arc","","","","into_any_rc","","","","into_any_send","","","","into_any_sync","","","","keyvalues","new","","options","path_to_binary","report","","to_owned","","to_string","","transport","transports","try_from","","","","try_into","","","","try_into_slug","","try_octets_into","","","","type_id","","","","vzip","","","","AddOnionFailed","BridgeTransportNotSupported","BridgeTransportTypeMultiplyDefined","BundledTor","CircuitTokenInvalid","DelOnionFailed","Error","GetInfoNetListenersSocksFailed","GetInfoVersionFailed","LegacyControlStreamCreationFailed","LegacyTorClient","LegacyTorClientConfig","LegacyTorControllerCreationFailed","LegacyTorNotBootstrapped","LegacyTorProcessAuthenticationFailed","LegacyTorProcessCreationFailed","LegacyTorProcessTooOld","NoSocksListenersFound","NotImplemented","OnionClientAuthAddFailed","OnionClientAuthRemoveFailed","PluggableTransportBinaryNameNotUtf8Representnable","PluggableTransportConfigDirectoryCreationFailed","PluggableTransportConfigError","PluggableTransportDirectoryNameCollision","PluggableTransportSymlinkCreationFailed","PluggableTransportSymlinkRemovalFailed","SetConfDisableNetwork0Failed","SetConfFailed","SetEventsFailed","Socks5ConnectionFailed","SystemTor","TcpListenerBindFailed","TcpListenerLocalAddrFailed","WaitAsyncEventsFailed","__clone_box","add_client_auth","as_any","","","as_any_mut","","","bootstrap","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","connect","fmt","","","from","","","generate_token","into","","","into_any","","","into_any_arc","","","into_any_rc","","","into_any_send","","","into_any_sync","","","listener","new","release_token","remove_client_auth","report","source","to_owned","to_string","try_from","","","try_into","","","try_into_slug","try_octets_into","","","type_id","","","update","version","vzip","","","allowed_ports","bridge_lines","data_directory","pluggable_transports","proxy_settings","tor_bin_path","tor_control_addr","tor_control_passwd","tor_socks_addr","Error","LegacyTorVersion","ParseError","__clone_box","as_any","","as_any_mut","","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","eq","fmt","","from","","from_str","into","","into_any","","into_any_arc","","into_any_rc","","into_any_send","","into_any_sync","","new","partial_cmp","report","to_owned","to_string","","try_from","","try_into","","try_into_slug","","try_octets_into","","type_id","","vzip","","ClientAlreadyBootstrapped","ClientNotBootstrapped","ConnectFailed","Error","MockTorClient","NotImplemented","OnionServiceAuthInvalid","OnionServiceNotFound","OnionServiceNotPublished","OnionServiceRequiresOnionAuth","TcpListenerBindFailed","TcpListenerLocalAddrFailed","add_client_auth","as_any","","as_any_mut","","bootstrap","borrow","","borrow_mut","","connect","default","drop","fmt","","from","","generate_token","into","","into_any","","into_any_arc","","into_any_rc","","into_any_send","","into_any_sync","","listener","new","release_token","remove_client_auth","report","source","to_string","try_from","","try_into","","try_into_slug","try_octets_into","","type_id","","update","vzip","","Generic","Https","HttpsProxyConfig","ProxyConfig","ProxyConfigError","Socks4","Socks4ProxyConfig","Socks5","Socks5ProxyConfig","__clone_box","","","","as_any","","","","","as_any_mut","","","","","borrow","","","","","borrow_mut","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","fmt","","","","","","from","","","","","","","","into","","","","","into_any","","","","","into_any_arc","","","","","into_any_rc","","","","","into_any_send","","","","","into_any_sync","","","","","new","","","report","to_owned","","","","to_string","try_from","","","","","try_into","","","","","try_into_slug","try_octets_into","","","","","type_id","","","","","vzip","","","","","ConversionError","ED25519_PRIVATE_KEYBLOB_BASE64_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_HEADER_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_LENGTH","ED25519_PRIVATE_KEY_KEYBLOB_SIZE","ED25519_PRIVATE_KEY_SIZE","ED25519_PUBLIC_KEY_SIZE","ED25519_SIGNATURE_SIZE","Ed25519PrivateKey","Ed25519PublicKey","Ed25519Signature","Error","KeyInvalid","One","ParseError","SignBit","V3OnionServiceId","V3_ONION_SERVICE_ID_STRING_LENGTH","V3_ONION_SERVICE_ID_STRING_SIZE","X25519PrivateKey","X25519PublicKey","X25519_PRIVATE_KEY_BASE64_LENGTH","X25519_PRIVATE_KEY_BASE64_SIZE","X25519_PRIVATE_KEY_SIZE","X25519_PUBLIC_KEY_BASE32_LENGTH","X25519_PUBLIC_KEY_BASE32_SIZE","X25519_PUBLIC_KEY_SIZE","Zero","__clone_box","","","","","","","as_any","","","","","","","","as_any_mut","","","","","","","","as_bytes","","","borrow","","","","","","","","borrow_mut","","","","","","","","clone","","","","","","","clone_into","","","","","","","clone_to_uninit","","","","","","","cmp","compare","eq","","","","","","equivalent","","","","","","fmt","","","","","","","","","from","","","","","","","","","from_base32","from_base64","from_key_blob","from_private_key","","","from_private_x25519","from_public_key","from_raw","","","","","from_service_id","from_string","generate","","hash","","into","","","","","","","","into_any","","","","","","","","into_any_arc","","","","","","","","into_any_rc","","","","","","","","into_any_send","","","","","","","","into_any_sync","","","","","","","","is_valid","partial_cmp","report","sign_message","","to_base32","to_base64","to_bytes","","","to_key_blob","to_owned","","","","","","","to_string","","try_from","","","","","","","","try_into","","","","","","","","try_into_slug","","try_octets_into","","","","","","","","type_id","","","","","","","","verify","verify_x25519","vzip","","","","","","","","BootstrapComplete","BootstrapStatus","CircuitToken","Domain","DomainAddr","Error","Generic","LogReceived","OnionAddr","OnionAddrV3","OnionListener","OnionService","OnionServicePublished","OnionStream","ParseFailure","Socket","TargetAddr","TorEvent","TorProvider","V3","__clone_box","","","","accept","add_client_auth","as_any","","","","","","","","as_any_mut","","","","","","","","bootstrap","borrow","","","","","","","","borrow_mut","","","","","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","cmp","","","compare","","","connect","deref","deref_mut","domain","drop","eq","","","equivalent","","","","","","","","","flush","fmt","","","","","","","","","","","","from","","","","","","","","","","","","","from_str","","","generate_token","hash","","","into","","","","","","","","into_any","","","","","","","","into_any_arc","","","","","","","into_any_rc","","","","","","","","into_any_send","","","","","","","","into_any_sync","","","","","","","listener","local_addr","new","partial_cmp","","","peer_addr","port","read","release_token","remove_client_auth","report","service_id","set_nonblocking","to_owned","","","","to_string","","","","","try_clone","try_from","","","","","","","","","try_into","","","","","","","","try_into_slug","","","","","try_octets_into","","","","","","","","type_id","","","","","","","","update","virt_port","vzip","","","","","","","","write","","line","progress","service_id","summary","tag"],"q":[[0,"tor_interface"],[10,"tor_interface::arti_client_tor_client"],[71,"tor_interface::arti_process"],[106,"tor_interface::arti_tor_client"],[186,"tor_interface::arti_tor_client::ArtiTorClientConfig"],[188,"tor_interface::censorship_circumvention"],[300,"tor_interface::legacy_tor_client"],[405,"tor_interface::legacy_tor_client::LegacyTorClientConfig"],[414,"tor_interface::legacy_tor_version"],[465,"tor_interface::mock_tor_client"],[526,"tor_interface::proxy"],[650,"tor_interface::tor_crypto"],[904,"tor_interface::tor_provider"],[1151,"tor_interface::tor_provider::TorEvent"],[1156,"core::result"],[1157,"core::any"],[1158,"core::option"],[1159,"core::fmt"],[1160,"alloc::boxed"],[1161,"alloc::sync"],[1162,"alloc::rc"],[1163,"tokio::runtime::runtime"],[1164,"std::path"],[1165,"tor_error::report"],[1166,"core::error"],[1167,"alloc::string"],[1168,"tor_persist::slug"],[1169,"alloc::vec"],[1170,"dyn_clone::sealed"],[1171,"core::net::socket_addr"],[1172,"core::cmp"],[1173,"core::hash"],[1174,"std::io::error"],[1175,"der::error"]],"i":"``````````Al000``00000000d0101001010110100101010101010000111010110101001Dh000000000`000000000000000000000000Eb000``Dn1`100Dl0210210021021111022102100210210210210210210000221202102120210210021Il0El00Ej``111``101EdEf101203120301203120310101001220331203012031203120312031203120301011231023011203120323120312031203Fh00Ff11`111``111111111111111111101110Fd02102100210211110221021002102102102102102100002212021021202102100021In00000J`00``FnFj10101010000011100101010101010001010101010101010Gf00``0000000Gd010100101000110100101010101010000111010110101001H`Gn```0`0`GhGjGl3421034210342103421032103210321034421034210333342103421034210342103421034210321042103442103421034421034210342103Hj```````````0Hh1````````````0BhHbHfjBlh6574321065743210641057432106574321065432106543210654321060054321011100057743210057432106612541050543214052105743210657432106574321065743210657432106574321060075212532554321067057432106574321067057432106574321063357432106Dd0`Ad``n2```12`01```IdIb1If4C`I`1534267Aj264537801264537802645378045374537453745345310032453444555333066445533778026666645377805371453264537802645378064537802645378026453780645378010445303011642453764537026453378026453780645372645378026453780142645378000JbJdJf11","f":"````````````````````````{{{f{bd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{{{f{bd}}}{{A`{ln}}}}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{bd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Al}}{f{bAn}}}B`}0{cc{}}0{{{f{bd}}}Af}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}02222{{{f{bd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{{{Bd{Cb}}{f{Cd}}}{{A`{dAl}}}}{{{f{bd}}Af}l}{{{f{bd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Al}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0{fDb}0{{{f{bd}}}{{A`{{Df{Dd}}n}}}}{{}c{}}0`````````````{f{{f{Ab}}}}{{{f{b}}}{{f{bAb}}}}{f{{f{c}}}{}}{{{f{b}}}{{f{bc}}}{}}{{{f{Dh}}{f{bAn}}}B`}0{cc{}}{{}c{}}{{{Bb{c}}}{{Bb{Ab}}}{}}{{{Bd{c}}}{{Bd{Ab}}}{}}{{{Bf{c}}}{{Bf{Ab}}}{}}22{f{{Ch{Cf}}}}{{{f{Dh}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}{{}{{A`{c}}}{}}{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}{fDb}{{}c{}}```````````{{fDj}l}{{{f{bDl}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}00{{{f{b}}}{{f{bAb}}}}00{{{f{bDl}}}{{A`{ln}}}}{f{{f{c}}}{}}00{{{f{b}}}{{f{bc}}}{}}00{{{f{Dn}}}Dn}{{f{f{bc}}}l{}}{{fE`}l}{{{f{bDl}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Eb}}{f{bAn}}}B`}0{{{f{Dn}}{f{bAn}}}B`}{cc{}}00{{{f{bDl}}}Af}{{}c{}}00{{{Bb{c}}}{{Bb{Ab}}}{}}00{{{Bd{c}}}{{Bd{Ab}}}{}}00{{{Bf{c}}}{{Bf{Ab}}}{}}00222222{{{f{bDl}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{Dn{{A`{Dln}}}}{{{f{bDl}}Af}l}{{{f{bDl}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Eb}}}{{Ah{{f{Cj}}}}}}{fc{}}{fCl}{c{{A`{e}}}{}{}}00{{}{{A`{c}}}{}}00{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}00{fDb}00{{{f{bDl}}}{{A`{{Df{Dd}}n}}}}{{}c{}}00````````````````{{fDj}l}0{{{f{bEd}}Cl}l}{{{f{Ef}}}{{f{Eh}}}}{f{{f{Ab}}}}000{{{f{b}}}{{f{bAb}}}}000{{{f{Ef}}}Cl}{f{{f{c}}}{}}000{{{f{b}}}{{f{bc}}}{}}000{{{f{Ed}}}Ed}{{{f{Ef}}}Ef}{{f{f{bc}}}l{}}0{{fE`}l}0{{{f{Ef}}}{{f{Cl}}}}{{{f{Ed}}{f{bAn}}}B`}{{{f{Ej}}{f{bAn}}}B`}0{{{f{Ef}}{f{bAn}}}B`}{{{f{El}}{f{bAn}}}B`}0{cc{}}000{{{f{En}}}{{A`{Efc}}}{}}{{}c{}}000{{{Bb{c}}}{{Bb{Ab}}}{}}000{{{Bd{c}}}{{Bd{Ab}}}{}}000{{{Bf{c}}}{{Bf{Ab}}}{}}00022222222{{{f{Ef}}}{{f{{Df{{F`{ClCl}}}}}}}}{{{Df{Cl}}Fb}{{A`{EdEj}}}}{{ClEhCl{Df{{F`{ClCl}}}}}{{A`{EfEl}}}}{{{f{Ed}}}{{f{{Df{Cl}}}}}}{{{f{Ed}}}{{f{Fb}}}}{f{{Ch{Cf}}}}0{fc{}}0{fCl}0{{{f{Ef}}}{{f{Cl}}}}5{c{{A`{e}}}{}{}}000{{}{{A`{c}}}{}}000{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}000{fDb}000{{}c{}}000```````````````````````````````````{{fDj}l}{{{f{bFd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}00{{{f{b}}}{{f{bAb}}}}00{{{f{bFd}}}{{A`{ln}}}}{f{{f{c}}}{}}00{{{f{b}}}{{f{bc}}}{}}00{{{f{Ff}}}Ff}{{f{f{bc}}}l{}}{{fE`}l}{{{f{bFd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Fh}}{f{bAn}}}B`}0{{{f{Ff}}{f{bAn}}}B`}{cc{}}00{{{f{bFd}}}Af}{{}c{}}00{{{Bb{c}}}{{Bb{Ab}}}{}}00{{{Bd{c}}}{{Bd{Ab}}}{}}00{{{Bf{c}}}{{Bf{Ab}}}{}}00222222{{{f{bFd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{Ff{{A`{FdFh}}}}{{{f{bFd}}Af}l}{{{f{bFd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Fh}}}{{Ah{{f{Cj}}}}}}{fc{}}{fCl}{c{{A`{e}}}{}{}}00{{}{{A`{c}}}{}}00{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}00{fDb}00{{{f{bFd}}}{{A`{{Df{Dd}}n}}}}{{{f{bFd}}}Fj}{{}c{}}00````````````{{fDj}l}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{Fj}}}Fj}{{f{f{bc}}}l{}}{{fE`}l}{{{f{Fj}}{f{Fj}}}Fl}{{{f{Fn}}{f{bAn}}}B`}0{cc{}}0{{{f{En}}}{{A`{Fjc}}}{}}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}02222{{G`G`G`{Ah{G`}}{Ah{{f{En}}}}}{{A`{FjFn}}}}{{{f{Fj}}{f{Fj}}}{{Ah{Gb}}}}{f{{Ch{Cf}}}}{fc{}}{fCl}{{{f{Fj}}}Cl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}0{fDb}0{{}c{}}0````````````{{{f{bGd}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0{{{f{b}}}{{f{bAb}}}}0{{{f{bGd}}}{{A`{ln}}}}{f{{f{c}}}{}}0{{{f{b}}}{{f{bc}}}{}}0{{{f{bGd}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{}Gd}{{{f{bGd}}}l}{{{f{Gf}}{f{bAn}}}B`}0{cc{}}0{{{f{bGd}}}Af}{{}c{}}0{{{Bb{c}}}{{Bb{Ab}}}{}}0{{{Bd{c}}}{{Bd{Ab}}}{}}0{{{Bf{c}}}{{Bf{Ab}}}{}}02222{{{f{bGd}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}9{{{f{bGd}}Af}l}{{{f{bGd}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Gf}}}{{Ah{{f{Cj}}}}}}{fCl}{c{{A`{e}}}{}{}}0{{}{{A`{c}}}{}}0{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0{fDb}0{{{f{bGd}}}{{A`{{Df{Dd}}n}}}}{{}c{}}0`````````{{fDj}l}000{f{{f{Ab}}}}0000{{{f{b}}}{{f{bAb}}}}0000{f{{f{c}}}{}}0000{{{f{b}}}{{f{bc}}}{}}0000{{{f{Gh}}}Gh}{{{f{Gj}}}Gj}{{{f{Gl}}}Gl}{{{f{Gn}}}Gn}{{f{f{bc}}}l{}}000{{fE`}l}000{{{f{H`}}{f{bAn}}}B`}0{{{f{Gh}}{f{bAn}}}B`}{{{f{Gj}}{f{bAn}}}B`}{{{f{Gl}}{f{bAn}}}B`}{{{f{Gn}}{f{bAn}}}B`}{cc{}}000{GjGn}{GhGn}2{GlGn}{{}c{}}0000{{{Bb{c}}}{{Bb{Ab}}}{}}0000{{{Bd{c}}}{{Bd{Ab}}}{}}0000{{{Bf{c}}}{{Bf{Ab}}}{}}00002222222222{Ad{{A`{GhH`}}}}{{Ad{Ah{Cl}}{Ah{Cl}}}{{A`{GjH`}}}}{{Ad{Ah{Cl}}{Ah{Cl}}}{{A`{GlH`}}}}{f{{Ch{Cf}}}}{fc{}}000{fCl}{c{{A`{e}}}{}{}}0000{{}{{A`{c}}}{}}0000{f{{A`{CnD`}}}}{{}{{A`{c}}}{}}0000{fDb}0000{{}c{}}0000````````````````````````````{{fDj}l}000000{f{{f{Ab}}}}0000000{{{f{b}}}{{f{bAb}}}}0000000{{{f{Hb}}}{{f{{Hd{E`}}}}}}{{{f{Bl}}}{{f{{Hd{E`}}}}}}{{{f{h}}}{{f{{Hd{E`}}}}}}{f{{f{c}}}{}}0000000{{{f{b}}}{{f{bc}}}{}}0000000{{{f{Bh}}}Bh}{{{f{Hb}}}Hb}{{{f{Hf}}}Hf}{{{f{j}}}j}{{{f{Bl}}}Bl}{{{f{h}}}h}{{{f{Hh}}}Hh}{{f{f{bc}}}l{}}000000{{fE`}l}000000{{{f{h}}{f{h}}}Gb}{{f{f{c}}}Gb{}}{{{f{Bh}}{f{Bh}}}Fl}{{{f{Hb}}{f{Hb}}}Fl}{{{f{Hf}}{f{Hf}}}Fl}{{{f{j}}{f{j}}}Fl}{{{f{Bl}}{f{Bl}}}Fl}{{{f{h}}{f{h}}}Fl}{{f{f{c}}}Fl{}}00000{{{f{Bh}}{f{bAn}}}B`}{{{f{Hj}}{f{bAn}}}B`}0{{{f{Hb}}{f{bAn}}}B`}{{{f{Hf}}{f{bAn}}}B`}{{{f{j}}{f{bAn}}}B`}{{{f{Bl}}{f{bAn}}}B`}{{{f{h}}{f{bAn}}}B`}0{cc{}}0000000{FlHh}{{{f{En}}}{{A`{BlHj}}}}{{{f{En}}}{{A`{jHj}}}}{{{f{En}}}{{A`{BhHj}}}}{{{f{Bh}}}Hb}{{{f{j}}}Bl}{{{f{Bh}}}h}{{{f{j}}}{{A`{{F`{BhHh}}Hj}}}}{{{f{Hb}}}h}{{{f{{Hd{E`}}}}}{{A`{BhHj}}}}{{{f{{Hd{E`}}}}}{{A`{HbHj}}}}{{{f{{Hd{E`}}}}}{{A`{HfHj}}}}{{{f{{Hd{E`}}}}}{{A`{jHj}}}}{{{f{{Hd{E`}}}}}Bl}{{{f{h}}}{{A`{HbHj}}}}{{{f{En}}}{{A`{hHj}}}}{{}Bh}{{}j}{{{f{Bl}}{f{bc}}}lHl}{{{f{h}}{f{bc}}}lHl}{{}c{}}0000000{{{Bb{c}}}{{Bb{Ab}}}{}}0000000{{{Bd{c}}}{{Bd{Ab}}}{}}0000000{{{Bf{c}}}{{Bf{Ab}}}{}}00000002222222222222222{{{f{En}}}Fl}{{{f{h}}{f{h}}}{{Ah{Gb}}}}{f{{Ch{Cf}}}}{{{f{Bh}}{f{{Bn{E`}}}}}Hf}{{{f{j}}{f{{Bn{E`}}}}}{{A`{{F`{HfHh}}Hj}}}}{{{f{Bl}}}Cl}{{{f{j}}}Cl}{{{f{Bh}}}{{Hd{E`}}}}{{{f{Hf}}}{{Hd{E`}}}}{{{f{j}}}{{Hd{E`}}}}{{{f{Bh}}}Cl}{fc{}}000000{fCl}0{c{{A`{e}}}{}{}}0000000{{}{{A`{c}}}{}}0000000{f{{A`{CnD`}}}}0{{}{{A`{c}}}{}}0000000{fDb}0000000{{{f{Hf}}{f{{Bn{E`}}}}{f{Hb}}}Fl}{{{f{Hf}}{f{{Bn{E`}}}}{f{Bl}}Hh}Fl}{{}c{}}0000000````````````````````{{fDj}l}000{{{f{C`}}}{{A`{{Ah{Aj}}Hn}}}}{{{f{bI`}}{f{h}}{f{j}}}{{A`{ln}}}}{f{{f{Ab}}}}0000000{{{f{b}}}{{f{bAb}}}}0000000{{{f{bI`}}}{{A`{ln}}}}{f{{f{c}}}{}}0000000{{{f{b}}}{{f{bc}}}{}}0000000{{{f{Ib}}}Ib}{{{f{Id}}}Id}{{{f{If}}}If}{{{f{Ad}}}Ad}{{f{f{bc}}}l{}}000{{fE`}l}000{{{f{Ib}}{f{Ib}}}Gb}{{{f{Id}}{f{Id}}}Gb}{{{f{If}}{f{If}}}Gb}{{f{f{c}}}Gb{}}00{{{f{bI`}}Ad{Ah{Af}}}{{A`{Ajn}}}}{{{f{Aj}}}{{f{c}}}{}}{{{f{bAj}}}{{f{bc}}}{}}{{{f{If}}}{{f{En}}}}{{{f{bC`}}}l}{{{f{Ib}}{f{Ib}}}Fl}{{{f{Id}}{f{Id}}}Fl}{{{f{If}}{f{If}}}Fl}{{f{f{c}}}Fl{}}00000000{{{f{bAj}}}{{A`{lHn}}}}{{{f{n}}{f{bAn}}}B`}0{{{f{Ib}}{f{bAn}}}B`}0{{{f{Id}}{f{bAn}}}B`}0{{{f{If}}{f{bAn}}}B`}0{{{f{Ad}}{f{bAn}}}B`}0{{{f{Dd}}{f{bAn}}}B`}{{{f{Aj}}{f{bAn}}}B`}{cc{}}{Aln}{Fhn}2{Gfn}{Ebn}444{{{F`{hBj}}}Ad}555{{{f{En}}}{{A`{Idc}}}{}}{{{f{En}}}{{A`{Ifc}}}{}}{{{f{En}}}{{A`{Adc}}}{}}{{{f{bI`}}}Af}{{{f{Ib}}{f{bc}}}lHl}{{{f{Id}}{f{bc}}}lHl}{{{f{If}}{f{bc}}}lHl}{{}c{}}0000000{{{Bb{c}}}{{Bb{Ab}}}{}}0000000{{{Bd{c}}}{{Bd{Ab}}}{}}000000{{{Bf{c}}}{{Bf{Ab}}}{}}0000000222222222222222{{{f{bI`}}{f{Bh}}Bj{Ah{{f{{Bn{Bl}}}}}}}{{A`{C`n}}}}{{{f{Aj}}}{{Ah{Id}}}}{{hBj}Ib}{{{f{Ib}}{f{Ib}}}{{Ah{Gb}}}}{{{f{Id}}{f{Id}}}{{Ah{Gb}}}}{{{f{If}}{f{If}}}{{Ah{Gb}}}}{{{f{Aj}}}{{Ah{Ad}}}}{{{f{If}}}Bj}{{{f{bAj}}{f{b{Bn{E`}}}}}{{A`{IhHn}}}}{{{f{bI`}}Af}l}{{{f{bI`}}{f{h}}}{{A`{ln}}}}{f{{Ch{Cf}}}}{{{f{Ib}}}{{f{h}}}}{{{f{C`}}Fl}{{A`{lHn}}}}{fc{}}000{fCl}0000{{{f{Aj}}}{{A`{AjHn}}}}{c{{A`{e}}}{}{}}000{{{F`{ClBj}}}{{A`{Ifc}}}{}}1111{{}{{A`{c}}}{}}0000000{f{{A`{CnD`}}}}0000{{}{{A`{c}}}{}}0000000{fDb}0000000{{{f{bI`}}}{{A`{{Df{Dd}}n}}}}{{{f{Ib}}}Bj}{{}c{}}0000000{{{f{b}}{f{{Bn{E`}}}}}{{A`{lIj}}}}{{{f{bAj}}{f{{Bn{E`}}}}}{{A`{IhHn}}}}`````","D":"AMh","p":[[0,"mut"],[5,"ArtiClientTorClient",10],[1,"reference",null,null,1],[5,"V3OnionServiceId",650],[5,"X25519PrivateKey",650],[1,"unit"],[6,"Error",904],[6,"Result",1156,null,1],[10,"Any",1157],[6,"TargetAddr",904],[8,"CircuitToken",904],[6,"Option",1158,null,1],[5,"OnionStream",904],[6,"Error",10],[5,"Formatter",1159],[8,"Result",1159],[5,"Box",1160,null,1],[5,"Arc",1161,null,1],[5,"Rc",1162,null,1],[5,"Ed25519PrivateKey",650],[1,"u16"],[5,"X25519PublicKey",650],[1,"slice"],[5,"OnionListener",904],[5,"Runtime",1163],[5,"Path",1164],[5,"ReportHelper",1165],[5,"Report",1165],[10,"Error",1166],[5,"String",1167],[5,"Slug",1168],[6,"BadSlug",1168],[5,"TypeId",1157],[6,"TorEvent",904],[5,"Vec",1169],[6,"Error",71],[5,"Private",1170],[5,"ArtiTorClient",106],[6,"ArtiTorClientConfig",106],[1,"u8"],[6,"Error",106],[5,"PluggableTransportConfig",188],[5,"BridgeLine",188],[6,"SocketAddr",1171],[6,"PluggableTransportConfigError",188],[6,"BridgeLineError",188],[1,"str"],[1,"tuple",null,null,1],[5,"PathBuf",1164],[5,"LegacyTorClient",300],[6,"LegacyTorClientConfig",300],[6,"Error",300],[5,"LegacyTorVersion",414],[1,"bool"],[6,"Error",414],[1,"u32"],[6,"Ordering",1172],[5,"MockTorClient",465],[6,"Error",465],[5,"Socks4ProxyConfig",526],[5,"Socks5ProxyConfig",526],[5,"HttpsProxyConfig",526],[6,"ProxyConfig",526],[6,"ProxyConfigError",526],[5,"Ed25519PublicKey",650],[1,"array"],[5,"Ed25519Signature",650],[6,"SignBit",650],[6,"Error",650],[10,"Hasher",1173],[5,"Error",1174],[10,"TorProvider",904],[5,"OnionAddrV3",904],[6,"OnionAddr",904],[5,"DomainAddr",904],[1,"usize"],[5,"Error",1175],[15,"BundledArti",186],[15,"BundledTor",405],[15,"SystemTor",405],[15,"LogReceived",1151],[15,"BootstrapStatus",1151],[15,"OnionServicePublished",1151]],"r":[],"b":[[35,"impl-Debug-for-Error"],[36,"impl-Display-for-Error"],[88,"impl-Display-for-Error"],[89,"impl-Debug-for-Error"],[136,"impl-Display-for-Error"],[137,"impl-Debug-for-Error"],[231,"impl-Debug-for-PluggableTransportConfigError"],[232,"impl-Display-for-PluggableTransportConfigError"],[234,"impl-Display-for-BridgeLineError"],[235,"impl-Debug-for-BridgeLineError"],[354,"impl-Display-for-Error"],[355,"impl-Debug-for-Error"],[430,"impl-Display-for-Error"],[431,"impl-Debug-for-Error"],[490,"impl-Display-for-Error"],[491,"impl-Debug-for-Error"],[571,"impl-Debug-for-ProxyConfigError"],[572,"impl-Display-for-ProxyConfigError"],[581,"impl-From%3CSocks5ProxyConfig%3E-for-ProxyConfig"],[582,"impl-From%3CSocks4ProxyConfig%3E-for-ProxyConfig"],[584,"impl-From%3CHttpsProxyConfig%3E-for-ProxyConfig"],[756,"impl-Debug-for-Error"],[757,"impl-Display-for-Error"],[762,"impl-Display-for-V3OnionServiceId"],[763,"impl-Debug-for-V3OnionServiceId"],[999,"impl-Display-for-Error"],[1000,"impl-Debug-for-Error"],[1001,"impl-Display-for-OnionAddrV3"],[1002,"impl-Debug-for-OnionAddrV3"],[1003,"impl-Debug-for-OnionAddr"],[1004,"impl-Display-for-OnionAddr"],[1005,"impl-Display-for-DomainAddr"],[1006,"impl-Debug-for-DomainAddr"],[1007,"impl-Display-for-TargetAddr"],[1008,"impl-Debug-for-TargetAddr"],[1012,"impl-From%3CError%3E-for-Error"],[1013,"impl-From%3CError%3E-for-Error"],[1015,"impl-From%3CError%3E-for-Error"],[1016,"impl-From%3CError%3E-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJgDPwACAAAACwADABEAFAAoAAAAKwAKADcAIwBdABUAdAAXAI8AAACTACkAywABAM8ABwDYAA0A5wAFAPEAAAD2ABMADwEFABcBGwA0AQIAOAEtAGkBAABtAQ8AfgETAJMBCwChAQ8AswEAALYBCQDBARMA1wEVAO8BAADyAQoA/gEQABgCKQBGAgEASQIAAE8CGABrAh8AmAIAAKYCFwDBAjsABQMAABcDAQAhAycASgMBAFQDKgCBAwcAnAMEAKMDDwC0AyEA1wMBANoDGQD1AwEA+AMBAP0DAAABBAIABQQCABAEJQA5BAIAPgQAAEEEAABEBAgATgQlAHYECQA=","P":[[30,"T"],[34,""],[37,"T"],[39,""],[40,"U"],[42,"T"],[52,""],[59,"U,T"],[61,"U"],[63,""],[64,"Target"],[66,""],[69,"V"],[84,""],[86,"T"],[88,""],[90,"T"],[91,"U"],[92,"T"],[97,""],[100,"U,T"],[101,"U"],[102,""],[103,"Target"],[104,""],[105,"V"],[117,""],[126,"T"],[132,""],[133,"T"],[134,""],[139,"T"],[142,""],[143,"U"],[146,"T"],[161,""],[167,"T"],[168,""],[169,"U,T"],[172,"U"],[175,""],[176,"Target"],[179,""],[183,"V"],[202,""],[215,"T"],[223,""],[225,"T"],[227,""],[236,"T"],[240,"FromStr::Err"],[241,"U"],[245,"T"],[265,""],[272,"T"],[274,""],[278,"U,T"],[282,"U"],[286,""],[288,"Target"],[292,""],[296,"V"],[335,""],[344,"T"],[350,""],[351,"T"],[352,""],[357,"T"],[360,""],[361,"U"],[364,"T"],[379,""],[385,"T"],[386,""],[387,"U,T"],[390,"U"],[393,""],[394,"Target"],[397,""],[402,"V"],[417,""],[422,"T"],[426,""],[427,"T"],[428,""],[432,"T"],[434,"FromStr::Err"],[435,"U"],[437,"T"],[447,""],[450,"T"],[451,""],[453,"U,T"],[455,"U"],[457,""],[459,"Target"],[461,""],[463,"V"],[477,""],[483,"T"],[487,""],[492,"T"],[494,""],[495,"U"],[497,"T"],[507,""],[514,"U,T"],[516,"U"],[518,""],[519,"Target"],[521,""],[524,"V"],[535,""],[549,"T"],[559,""],[563,"T"],[567,""],[577,"T"],[581,""],[583,"T"],[584,""],[585,"U"],[590,"T"],[615,""],[619,"T"],[623,""],[624,"U,T"],[629,"U"],[634,""],[635,"Target"],[640,""],[645,"V"],[678,""],[704,"T"],[720,""],[727,"T"],[734,""],[742,"K"],[743,""],[749,"K"],[755,""],[764,"T"],[772,""],[790,"__H"],[792,"U"],[800,"T"],[840,""],[851,"T"],[858,""],[860,"U,T"],[868,"U"],[876,""],[878,"Target"],[886,""],[896,"V"],[924,""],[947,"T"],[963,""],[967,"T"],[971,""],[978,"K"],[981,""],[982,"Deref::Target"],[984,""],[989,"K"],[998,""],[1011,"T"],[1012,""],[1014,"T"],[1015,""],[1017,"T"],[1020,""],[1021,"T"],[1024,"FromStr::Err"],[1027,""],[1028,"__H"],[1031,"U"],[1039,"T"],[1077,""],[1091,"T"],[1095,""],[1101,"U,T"],[1105,"TryFrom::Error"],[1106,"U,T"],[1110,"U"],[1118,""],[1123,"Target"],[1131,""],[1141,"V"],[1149,""]]}]]'));
if (typeof exports !== 'undefined') exports.searchIndex = searchIndex;
else if (window.initSearch) window.initSearch(searchIndex);
-//{"start":39,"fragment_lengths":[6092,3738,25982]}
\ No newline at end of file
+//{"start":39,"fragment_lengths":[6125,3738,26832]}
\ No newline at end of file
diff --git a/crates/src/tor_interface/arti_process.rs.html b/crates/src/tor_interface/arti_process.rs.html
index cbd69e72..d0c12890 100644
--- a/crates/src/tor_interface/arti_process.rs.html
+++ b/crates/src/tor_interface/arti_process.rs.html
@@ -162,22 +162,84 @@
161
162
163
-164// standard
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
// standard
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
// standard
use std::fs;
+#[cfg(unix)]
+use std::os::unix::fs::PermissionsExt;
use std::fs::File;
use std::io::{BufRead, BufReader, Write};
use std::ops::Drop;
-use std::process;
use std::process::{Child, ChildStdout, Command, Stdio};
use std::path::Path;
use std::sync::{Mutex, Weak};
-use std::time::{Duration, Instant};
#[derive(thiserror::Error, Debug)]
pub enum Error {
- #[error("not implemented")]
- NotImplemented(),
-
#[error("provided arti bin path '{0}' must be an absolute path")]
ArtiBinPathNotAbsolute(String),
@@ -190,12 +252,21 @@
#[error("file exists in provided data directory path '{0}'")]
ArtiDataDirectoryPathExistsAsFile(String),
+ #[error("unable to set permissions for data directory: {0}")]
+ ArtiDataDirectorySetPermissionsFailed(#[source] std::io::Error),
+
#[error("failed to create arti.toml file: {0}")]
ArtiTomlFileCreationFailed(#[source] std::io::Error),
#[error("failed to write arti.toml file: {0}")]
ArtiTomlFileWriteFailed(#[source] std::io::Error),
+ #[error("failed to create rpc.toml file: {0}")]
+ RpcTomlFileCreationFailed(#[source] std::io::Error),
+
+ #[error("failed to write rpc.toml file: {0}")]
+ RpcTomlFileWriteFailed(#[source] std::io::Error),
+
#[error("failed to start arti process: {0}")]
ArtiProcessStartFailed(#[source] std::io::Error),
@@ -237,28 +308,89 @@
)));
}
- // construct paths to arti files file
- let arti_toml = data_directory.join("arti.toml");
+ // arti data directory must not be world-writable on unix platforms when using a unix domain socket endpoint
+ if cfg!(unix) {
+ let perms = PermissionsExt::from_mode(0o700);
+ fs::set_permissions(data_directory, perms).map_err(Error::ArtiDataDirectorySetPermissionsFailed)?;
+ }
- // write arti.toml settings file (always overwrite)
- let cache_dir = data_directory.join("cache").display().to_string();
+ // construct paths to arti files file
+ let arti_toml = data_directory.join("arti.toml").display().to_string();
+ let cache_dir = data_directory.join("cache").display().to_string();
let state_dir = data_directory.join("state").display().to_string();
- let rpc_listen = data_directory.join("SOCKET").display().to_string();
- let arti_toml_content = format!("\
+ let mut arti_toml_content = format!("\
+ [rpc]\n\
+ enable = true\n\n\
+ [rpc.listen.user-default]\n\
+ enable = false\n\n\
+ [rpc.listen.system-default]\n\
+ enable = false\n\n\
[storage]\n\
cache_dir = \"{cache_dir}\"\n\
- state_dir = \"{state_dir}\"\n\
+ state_dir = \"{state_dir}\"\n\n\
[storage.keystore]\n\
- enabled = true\n\
+ enabled = true\n\n\
[storage.keystore.primary]\n\
- kind = \"ephemeral\"\n\
+ kind = \"ephemeral\"\n\n\
[storage.permissions]\n\
- dangerously_trust_everyone = true\n\
- [rpc]\n\
- rpc_listen = \"{rpc_listen}\"\n
+ dangerously_trust_everyone = true\n\n\
");
+ let connect_string = if cfg!(unix) {
+ // use domain socket for unix
+ let unix_rpc_toml_path = data_directory.join("rpc.toml").display().to_string();
+
+ arti_toml_content.push_str(format!("\
+ [rpc.listen.unix-point]\n\
+ enable = true\n\
+ file = \"{unix_rpc_toml_path}\"\n\n\
+ ").as_str());
+
+ let socket_path = data_directory.join("rpc.socket").display().to_string();
+
+ let unix_rpc_toml_content = format!("\
+ [connect]\n\
+ socket = \"unix:{socket_path}\"\n\
+ auth = \"none\"\n\
+ ");
+
+ let mut unix_rpc_toml_file =
+ File::create(&unix_rpc_toml_path).map_err(Error::RpcTomlFileCreationFailed)?;
+ unix_rpc_toml_file
+ .write_all(unix_rpc_toml_content.as_bytes())
+ .map_err(Error::RpcTomlFileWriteFailed)?;
+
+ unix_rpc_toml_path
+ } else {
+ // use tcp socket everywhere else
+ let tcp_rpc_toml_path = data_directory.join("rpc.toml").display().to_string();
+
+ arti_toml_content.push_str(format!("\
+ [rpc.listen.tcp-point]\n\
+ enable = true\n\
+ file = \"{tcp_rpc_toml_path}\"\n\n\
+ ").as_str());
+
+ let cookie_path = data_directory.join("rpc.cookie").display().to_string();
+
+ const RPC_PORT: u16 = 18929;
+
+ let tcp_rpc_toml_content = format!("\
+ [connect]\n\
+ socket = \"inet:127.0.0.1:{RPC_PORT}\"\n\
+ auth = {{ cookie = {{ path = \"{cookie_path}\" }} }}\n\
+ ");
+
+ let mut tcp_rpc_toml_file =
+ File::create(&tcp_rpc_toml_path).map_err(Error::RpcTomlFileCreationFailed)?;
+ tcp_rpc_toml_file
+ .write_all(tcp_rpc_toml_content.as_bytes())
+ .map_err(Error::RpcTomlFileWriteFailed)?;
+
+ tcp_rpc_toml_path
+ };
+
let mut arti_toml_file =
File::create(&arti_toml).map_err(Error::ArtiTomlFileCreationFailed)?;
arti_toml_file
@@ -291,8 +423,6 @@
})
.map_err(Error::ArtiStdoutReadThreadSpawnFailed)?;
- let connect_string = format!("unix:{rpc_listen}");
-
Ok(ArtiProcess { process, connect_string })
}
diff --git a/crates/src/tor_interface/arti_tor_client.rs.html b/crates/src/tor_interface/arti_tor_client.rs.html
index 628b2f01..ae7ac7ec 100644
--- a/crates/src/tor_interface/arti_tor_client.rs.html
+++ b/crates/src/tor_interface/arti_tor_client.rs.html
@@ -252,7 +252,9 @@
251
252
253
-254
// std
+254
+255
+256
// std
use std::collections::BTreeMap;
use std::ops::DerefMut;
use std::path::PathBuf;
@@ -260,7 +262,7 @@
use std::time::{Duration, Instant};
// extern
-use arti_rpc_client_core::{ObjectId, RpcConn, RpcConnBuilder};
+use arti_rpc_client_core::{RpcConn, RpcConnBuilder};
// internal crates
use crate::tor_crypto::*;
@@ -308,7 +310,7 @@
}
pub struct ArtiTorClient {
- daemon: Option<ArtiProcess>,
+ _daemon: Option<ArtiProcess>,
rpc_conn: RpcConn,
pending_log_lines: Arc<Mutex<Vec<String>>>,
pending_events: Arc<Mutex<Vec<TorEvent>>>,
@@ -333,15 +335,17 @@
ArtiProcess::new(arti_bin_path.as_path(), data_directory.as_path(), Arc::downgrade(&pending_log_lines))
.map_err(Error::ArtiProcessCreationFailed)?;
- let builder = RpcConnBuilder::from_connect_string(daemon.connect_string()).unwrap();
-
let rpc_conn = {
- // try to open an rpc conneciton for 5 seconds beore giving up
+ // try to open an rpc connnection for 5 seconds beore giving up
let timeout = Duration::from_secs(5);
let mut rpc_conn: Option<RpcConn> = None;
let start = Instant::now();
while rpc_conn.is_none() && start.elapsed() < timeout {
+
+ let mut builder = RpcConnBuilder::new();
+ builder.prepend_literal_path(daemon.connect_string().into());
+
rpc_conn = builder.connect().map_or(None, |rpc_conn| Some(rpc_conn));
}
@@ -360,12 +364,12 @@
};
let pending_events = std::vec![TorEvent::LogReceived {
- line: "Starting arti-client TorProvider".to_string()
+ line: "Starting arti TorProvider".to_string()
}];
let pending_events = Arc::new(Mutex::new(pending_events));
Ok(Self {
- daemon: Some(daemon),
+ _daemon: Some(daemon),
rpc_conn,
pending_log_lines,
pending_events,
diff --git a/crates/tor_interface/arti_client_tor_client/enum.Error.html b/crates/tor_interface/arti_client_tor_client/enum.Error.html
index d8219857..95b27aaa 100644
--- a/crates/tor_interface/arti_client_tor_client/enum.Error.html
+++ b/crates/tor_interface/arti_client_tor_client/enum.Error.html
@@ -1,4 +1,4 @@
-Error in tor_interface::arti_client_tor_client - Rust pub enum Error {
+Error in tor_interface::arti_client_tor_client - Rust
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/arti_client_tor_client/struct.ArtiClientTorClient.html b/crates/tor_interface/arti_client_tor_client/struct.ArtiClientTorClient.html
index bb80ab0b..94c72264 100644
--- a/crates/tor_interface/arti_client_tor_client/struct.ArtiClientTorClient.html
+++ b/crates/tor_interface/arti_client_tor_client/struct.ArtiClientTorClient.html
@@ -1,4 +1,4 @@
-ArtiClientTorClient in tor_interface::arti_client_tor_client - Rust pub struct ArtiClientTorClient { /* private fields */ }
Expand description
The ArtiClientTorClient
is an in-process arti-client
-based TorProvider
.
+ArtiClientTorClient in tor_interface::arti_client_tor_client - Rust pub struct ArtiClientTorClient { /* private fields */ }
Expand description
The ArtiClientTorClient
is an in-process arti-client
-based TorProvider
.
Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
diff --git a/crates/tor_interface/arti_process/enum.Error.html b/crates/tor_interface/arti_process/enum.Error.html
index 31d77eee..96640c5e 100644
--- a/crates/tor_interface/arti_process/enum.Error.html
+++ b/crates/tor_interface/arti_process/enum.Error.html
@@ -1,15 +1,17 @@
-Error in tor_interface::arti_process - Rust pub enum Error {
- NotImplemented(),
+Error in tor_interface::arti_process - Rust pub enum Error {
ArtiBinPathNotAbsolute(String),
ArtiDataDirectoryPathNotAbsolute(String),
ArtiDataDirectoryCreationFailed(Error),
ArtiDataDirectoryPathExistsAsFile(String),
+ ArtiDataDirectorySetPermissionsFailed(Error),
ArtiTomlFileCreationFailed(Error),
ArtiTomlFileWriteFailed(Error),
+ RpcTomlFileCreationFailed(Error),
+ RpcTomlFileWriteFailed(Error),
ArtiProcessStartFailed(Error),
ArtiProcessStdoutTakeFailed(),
ArtiStdoutReadThreadSpawnFailed(Error),
-}
Variants§
§NotImplemented()
§ArtiBinPathNotAbsolute(String)
§ArtiDataDirectoryPathNotAbsolute(String)
§ArtiDataDirectoryCreationFailed(Error)
§ArtiDataDirectoryPathExistsAsFile(String)
§ArtiTomlFileCreationFailed(Error)
§ArtiTomlFileWriteFailed(Error)
§ArtiProcessStartFailed(Error)
§ArtiProcessStdoutTakeFailed()
§ArtiStdoutReadThreadSpawnFailed(Error)
Trait Implementations§
Source§impl Error for Error
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more1.0.0 · Source§fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations§
§impl Freeze for Error
§impl !RefUnwindSafe for Error
§impl Send for Error
§impl Sync for Error
§impl Unpin for Error
§impl !UnwindSafe for Error
Blanket Implementations§
Source§impl<T> Any for Twhere
+}Variants§
§ArtiBinPathNotAbsolute(String)
§ArtiDataDirectoryPathNotAbsolute(String)
§ArtiDataDirectoryCreationFailed(Error)
§ArtiDataDirectoryPathExistsAsFile(String)
§ArtiDataDirectorySetPermissionsFailed(Error)
§ArtiTomlFileCreationFailed(Error)
§ArtiTomlFileWriteFailed(Error)
§RpcTomlFileCreationFailed(Error)
§RpcTomlFileWriteFailed(Error)
§ArtiProcessStartFailed(Error)
§ArtiProcessStdoutTakeFailed()
§ArtiStdoutReadThreadSpawnFailed(Error)
Trait Implementations§
Source§impl Error for Error
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more1.0.0 · Source§fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations§
§impl Freeze for Error
§impl !RefUnwindSafe for Error
§impl Send for Error
§impl Sync for Error
§impl Unpin for Error
§impl !UnwindSafe for Error
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/arti_process/index.html b/crates/tor_interface/arti_process/index.html
index 8cbd3596..7434261a 100644
--- a/crates/tor_interface/arti_process/index.html
+++ b/crates/tor_interface/arti_process/index.html
@@ -1 +1 @@
-tor_interface::arti_process - Rust
\ No newline at end of file
+tor_interface::arti_process - Rust
\ No newline at end of file
diff --git a/crates/tor_interface/arti_tor_client/enum.ArtiTorClientConfig.html b/crates/tor_interface/arti_tor_client/enum.ArtiTorClientConfig.html
index 26f2a72c..96fc5421 100644
--- a/crates/tor_interface/arti_tor_client/enum.ArtiTorClientConfig.html
+++ b/crates/tor_interface/arti_tor_client/enum.ArtiTorClientConfig.html
@@ -1,4 +1,4 @@
-ArtiTorClientConfig in tor_interface::arti_tor_client - Rust pub enum ArtiTorClientConfig {
+ArtiTorClientConfig in tor_interface::arti_tor_client - Rust
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
Source§impl<T> DynClone for Twhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/arti_tor_client/enum.Error.html b/crates/tor_interface/arti_tor_client/enum.Error.html
index 6d6c872c..2f818e6c 100644
--- a/crates/tor_interface/arti_tor_client/enum.Error.html
+++ b/crates/tor_interface/arti_tor_client/enum.Error.html
@@ -1,4 +1,4 @@
-Error in tor_interface::arti_tor_client - Rust pub enum Error {
+Error in tor_interface::arti_tor_client - Rust
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/arti_tor_client/index.html b/crates/tor_interface/arti_tor_client/index.html
index 8c65cd2c..3394d125 100644
--- a/crates/tor_interface/arti_tor_client/index.html
+++ b/crates/tor_interface/arti_tor_client/index.html
@@ -1,2 +1,2 @@
-tor_interface::arti_tor_client - Rust Expand description
Implementation of an out-of-process arti
-based TorProvider
+tor_interface::arti_tor_client - Rust Expand description
Implementation of an out-of-process arti
-based TorProvider
Structs§
Enums§
ArtiTorClient
-specific error type
\ No newline at end of file
diff --git a/crates/tor_interface/arti_tor_client/struct.ArtiTorClient.html b/crates/tor_interface/arti_tor_client/struct.ArtiTorClient.html
index 4708f4aa..effa231b 100644
--- a/crates/tor_interface/arti_tor_client/struct.ArtiTorClient.html
+++ b/crates/tor_interface/arti_tor_client/struct.ArtiTorClient.html
@@ -1,20 +1,20 @@
-ArtiTorClient in tor_interface::arti_tor_client - Rust pub struct ArtiTorClient { /* private fields */ }
Implementations§
Source§impl ArtiTorClient
Sourcepub fn new(config: ArtiTorClientConfig) -> Result<Self, Error>
Trait Implementations§
Source§impl TorProvider for ArtiTorClient
Source§fn update(&mut self) -> Result<Vec<TorEvent>, Error>
Process and return TorEvent
s handled by this TorProvider
.Source§fn add_client_auth(
+ArtiTorClient in tor_interface::arti_tor_client - Rust pub struct ArtiTorClient { /* private fields */ }
Implementations§
Source§impl ArtiTorClient
Sourcepub fn new(config: ArtiTorClientConfig) -> Result<Self, Error>
Trait Implementations§
Source§impl TorProvider for ArtiTorClient
Source§fn update(&mut self) -> Result<Vec<TorEvent>, Error>
Process and return TorEvent
s handled by this TorProvider
.Source§fn add_client_auth(
&mut self,
_service_id: &V3OnionServiceId,
_client_auth: &X25519PrivateKey,
-) -> Result<(), Error>
Add v3 onion-service authorisation credentials, allowing this TorProvider
to connect to an onion-service whose service-descriptor is encrypted using the assocciated x25519 public key.Source§fn remove_client_auth(
+) -> Result<(), Error>
Add v3 onion-service authorisation credentials, allowing this TorProvider
to connect to an onion-service whose service-descriptor is encrypted using the assocciated x25519 public key.Source§fn remove_client_auth(
&mut self,
_service_id: &V3OnionServiceId,
-) -> Result<(), Error>
Remove a previously added client authorisation credential. This TorProvider
will be unable to connect to the onion-service associated with the removed credentail.Source§fn connect(
+) -> Result<(), Error>
Remove a previously added client authorisation credential. This TorProvider
will be unable to connect to the onion-service associated with the removed credentail.Source§fn connect(
&mut self,
target: TargetAddr,
circuit_token: Option<CircuitToken>,
-) -> Result<OnionStream, Error>
Anonymously connect to the address specified by target
over the Tor Network and return the associated OnionStream
. Read moreSource§fn listener(
+) -> Result<OnionStream, Error>
Anonymously connect to the address specified by target
over the Tor Network and return the associated OnionStream
. Read moreSource§fn listener(
&mut self,
_private_key: &Ed25519PrivateKey,
_virt_port: u16,
_authorized_clients: Option<&[X25519PublicKey]>,
-) -> Result<OnionListener, Error>
Anonymously start an onion-service and return the associated OnionListener
. Read moreSource§fn generate_token(&mut self) -> CircuitToken
Create a new CircuitToken
.Source§fn release_token(&mut self, token: CircuitToken)
Releaes a previously generated CircuitToken
.Auto Trait Implementations§
§impl !Freeze for ArtiTorClient
§impl RefUnwindSafe for ArtiTorClient
§impl Send for ArtiTorClient
§impl Sync for ArtiTorClient
§impl Unpin for ArtiTorClient
§impl UnwindSafe for ArtiTorClient
Blanket Implementations§
Source§impl<T> Any for Twhere
+) -> Result<OnionListener, Error>Anonymously start an onion-service and return the associated OnionListener
. Read moreSource§fn generate_token(&mut self) -> CircuitToken
Create a new CircuitToken
.Source§fn release_token(&mut self, token: CircuitToken)
Releaes a previously generated CircuitToken
.
Auto Trait Implementations§
§impl !Freeze for ArtiTorClient
§impl RefUnwindSafe for ArtiTorClient
§impl Send for ArtiTorClient
§impl Sync for ArtiTorClient
§impl Unpin for ArtiTorClient
§impl UnwindSafe for ArtiTorClient
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
diff --git a/crates/tor_interface/censorship_circumvention/enum.BridgeLineError.html b/crates/tor_interface/censorship_circumvention/enum.BridgeLineError.html
index f1f3f5d4..cd90ec5e 100644
--- a/crates/tor_interface/censorship_circumvention/enum.BridgeLineError.html
+++ b/crates/tor_interface/censorship_circumvention/enum.BridgeLineError.html
@@ -1,4 +1,4 @@
-BridgeLineError in tor_interface::censorship_circumvention - Rust pub enum BridgeLineError {
+BridgeLineError in tor_interface::censorship_circumvention - Rust
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/censorship_circumvention/enum.PluggableTransportConfigError.html b/crates/tor_interface/censorship_circumvention/enum.PluggableTransportConfigError.html
index f9452fd4..240a4264 100644
--- a/crates/tor_interface/censorship_circumvention/enum.PluggableTransportConfigError.html
+++ b/crates/tor_interface/censorship_circumvention/enum.PluggableTransportConfigError.html
@@ -1,4 +1,4 @@
-PluggableTransportConfigError in tor_interface::censorship_circumvention - Rust pub enum PluggableTransportConfigError {
+PluggableTransportConfigError in tor_interface::censorship_circumvention - Rust pub enum PluggableTransportConfigError {
TransportNameInvalid(String),
BinaryPathInvalid(String, String),
}
Expand description
Error returned on failure to construct a PluggableTransportConfig
@@ -16,13 +16,17 @@
T: ?Sized,Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/censorship_circumvention/struct.BridgeLine.html b/crates/tor_interface/censorship_circumvention/struct.BridgeLine.html
index f9f7eccb..21befadf 100644
--- a/crates/tor_interface/censorship_circumvention/struct.BridgeLine.html
+++ b/crates/tor_interface/censorship_circumvention/struct.BridgeLine.html
@@ -1,4 +1,4 @@
-BridgeLine in tor_interface::censorship_circumvention - Rust pub struct BridgeLine { /* private fields */ }
Expand description
Configuration for a bridge line to be used with a pluggable-transport
+BridgeLine in tor_interface::censorship_circumvention - Rust pub struct BridgeLine { /* private fields */ }
Expand description
Configuration for a bridge line to be used with a pluggable-transport
Implementations§
Source§impl BridgeLine
A BridgeLine
contains the information required to connect to a bridge through the means of a particular pluggable-transport (defined in a PluggableTransportConfi
). For more information, see:
- https://tb-manual.torproject.org/bridges/
@@ -28,13 +28,17 @@
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
Source§impl<T> DynClone for Twhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/censorship_circumvention/struct.PluggableTransportConfig.html b/crates/tor_interface/censorship_circumvention/struct.PluggableTransportConfig.html
index 64f145f0..c1bd745c 100644
--- a/crates/tor_interface/censorship_circumvention/struct.PluggableTransportConfig.html
+++ b/crates/tor_interface/censorship_circumvention/struct.PluggableTransportConfig.html
@@ -1,4 +1,4 @@
-PluggableTransportConfig in tor_interface::censorship_circumvention - Rust pub struct PluggableTransportConfig { /* private fields */ }
Expand description
Configuration for a pluggable-transport
+PluggableTransportConfig in tor_interface::censorship_circumvention - Rust pub struct PluggableTransportConfig { /* private fields */ }
Expand description
Configuration for a pluggable-transport
Implementations§
Source§impl PluggableTransportConfig
Configuration struct for a pluggable-transport which conforms to the v1.0 pluggable-transport specification
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
Source§impl<T> DynClone for Twhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/legacy_tor_client/enum.Error.html b/crates/tor_interface/legacy_tor_client/enum.Error.html
index 352718b9..61c0058e 100644
--- a/crates/tor_interface/legacy_tor_client/enum.Error.html
+++ b/crates/tor_interface/legacy_tor_client/enum.Error.html
@@ -1,4 +1,4 @@
-Error in tor_interface::legacy_tor_client - Rust pub enum Error {
+Error in tor_interface::legacy_tor_client - Rust
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/legacy_tor_client/enum.LegacyTorClientConfig.html b/crates/tor_interface/legacy_tor_client/enum.LegacyTorClientConfig.html
index 1f8493ba..9028d6cc 100644
--- a/crates/tor_interface/legacy_tor_client/enum.LegacyTorClientConfig.html
+++ b/crates/tor_interface/legacy_tor_client/enum.LegacyTorClientConfig.html
@@ -1,4 +1,4 @@
-LegacyTorClientConfig in tor_interface::legacy_tor_client - Rust pub enum LegacyTorClientConfig {
+LegacyTorClientConfig in tor_interface::legacy_tor_client - Rust
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
Source§impl<T> DynClone for Twhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/legacy_tor_client/struct.LegacyTorClient.html b/crates/tor_interface/legacy_tor_client/struct.LegacyTorClient.html
index fc184648..0f284a64 100644
--- a/crates/tor_interface/legacy_tor_client/struct.LegacyTorClient.html
+++ b/crates/tor_interface/legacy_tor_client/struct.LegacyTorClient.html
@@ -1,4 +1,4 @@
-LegacyTorClient in tor_interface::legacy_tor_client - Rust pub struct LegacyTorClient { /* private fields */ }
Expand description
A LegacyTorClient
implements the TorProvider
trait using a legacy c-tor daemon backend.
+LegacyTorClient in tor_interface::legacy_tor_client - Rust pub struct LegacyTorClient { /* private fields */ }
Expand description
A LegacyTorClient
implements the TorProvider
trait using a legacy c-tor daemon backend.
The tor process can either be launched and owned by LegacyTorClient
, or it can use an already running tor-daemon. When using an already runnng tor-daemon, the TorProvider::bootstrap()
automatically succeeds, presuming the connected tor-daemon has successfully bootstrapped.
The minimum supported c-tor is version 0.4.6.1.
Implementations§
Source§impl LegacyTorClient
Sourcepub fn new(config: LegacyTorClientConfig) -> Result<LegacyTorClient, Error>
Construct a new LegacyTorClient
from a LegacyTorClientConfig
.
@@ -31,13 +31,17 @@
T: ?Sized,Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
diff --git a/crates/tor_interface/legacy_tor_version/enum.Error.html b/crates/tor_interface/legacy_tor_version/enum.Error.html
index 1df5df1d..19464207 100644
--- a/crates/tor_interface/legacy_tor_version/enum.Error.html
+++ b/crates/tor_interface/legacy_tor_version/enum.Error.html
@@ -1,4 +1,4 @@
-Error in tor_interface::legacy_tor_version - Rust pub enum Error {
+Error in tor_interface::legacy_tor_version - Rust pub enum Error {
ParseError(String),
}
Expand description
LegacyTorVersion
-specific error type
Variants§
Trait Implementations§
Source§impl Error for Error
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more1.0.0 · Source§fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()Auto Trait Implementations§
§impl Freeze for Error
§impl RefUnwindSafe for Error
§impl Send for Error
§impl Sync for Error
§impl Unpin for Error
§impl UnwindSafe for Error
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/legacy_tor_version/struct.LegacyTorVersion.html b/crates/tor_interface/legacy_tor_version/struct.LegacyTorVersion.html
index 4e011b2d..4c1a94e5 100644
--- a/crates/tor_interface/legacy_tor_version/struct.LegacyTorVersion.html
+++ b/crates/tor_interface/legacy_tor_version/struct.LegacyTorVersion.html
@@ -1,4 +1,4 @@
-LegacyTorVersion in tor_interface::legacy_tor_version - Rust pub struct LegacyTorVersion { /* private fields */ }
Expand description
Type representing a legacy c-tor daemon’s version number. This version conforms c-tor’s version-spec.
+LegacyTorVersion in tor_interface::legacy_tor_version - Rust pub struct LegacyTorVersion { /* private fields */ }
Expand description
Type representing a legacy c-tor daemon’s version number. This version conforms c-tor’s version-spec.
Implementations§
Source§impl LegacyTorVersion
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
Source§impl<T> DynClone for Twhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/mock_tor_client/enum.Error.html b/crates/tor_interface/mock_tor_client/enum.Error.html
index 8bd0b5a3..10e96269 100644
--- a/crates/tor_interface/mock_tor_client/enum.Error.html
+++ b/crates/tor_interface/mock_tor_client/enum.Error.html
@@ -1,4 +1,4 @@
-Error in tor_interface::mock_tor_client - Rust pub enum Error {
+Error in tor_interface::mock_tor_client - Rust
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<E> ErrorReport for Ewhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/mock_tor_client/struct.MockTorClient.html b/crates/tor_interface/mock_tor_client/struct.MockTorClient.html
index 5c282bf8..110c0d65 100644
--- a/crates/tor_interface/mock_tor_client/struct.MockTorClient.html
+++ b/crates/tor_interface/mock_tor_client/struct.MockTorClient.html
@@ -1,4 +1,4 @@
-MockTorClient in tor_interface::mock_tor_client - Rust pub struct MockTorClient { /* private fields */ }
Expand description
A mock TorProvider
implementation for testing.
+MockTorClient in tor_interface::mock_tor_client - Rust pub struct MockTorClient { /* private fields */ }
Expand description
A mock TorProvider
implementation for testing.
MockTorClient
implements the TorProvider
trait. It creates a fake, in-process Tor Network using local socekts and listeners. No actual traffic ever leaves the local host.
Mock onion-services can be created, connected to, and communiccated with. Connecting to clearnet targets always succeeds by connecting to single local endpoint, but will never send any traffic to connecting clients.
Implementations§
Source§impl MockTorClient
Sourcepub fn new() -> MockTorClient
Construt a new MockTorClient
.
@@ -30,13 +30,17 @@
T: ?Sized,Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
diff --git a/crates/tor_interface/proxy/enum.ProxyConfig.html b/crates/tor_interface/proxy/enum.ProxyConfig.html
index 32d77ca0..36706da1 100644
--- a/crates/tor_interface/proxy/enum.ProxyConfig.html
+++ b/crates/tor_interface/proxy/enum.ProxyConfig.html
@@ -1,4 +1,4 @@
-ProxyConfig in tor_interface::proxy - Rust pub enum ProxyConfig {
+ProxyConfig in tor_interface::proxy - Rust pub enum ProxyConfig {
Socks4(Socks4ProxyConfig),
Socks5(Socks5ProxyConfig),
Https(HttpsProxyConfig),
@@ -19,13 +19,17 @@
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read moreSource§impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
§impl<T> Downcast for Twhere
- T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
-then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
-further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
-generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
Source§impl<T> DynClone for Twhere
+ T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
Converts Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
+downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
+downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
Converts &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
+generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSend for T
§impl<T> DowncastSync for T
§impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes self
to use its Display
implementation when
diff --git a/crates/tor_interface/proxy/enum.ProxyConfigError.html b/crates/tor_interface/proxy/enum.ProxyConfigError.html
index 0ed51311..5ee2abf0 100644
--- a/crates/tor_interface/proxy/enum.ProxyConfigError.html
+++ b/crates/tor_interface/proxy/enum.ProxyConfigError.html
@@ -1,4 +1,4 @@
-ProxyConfigError in tor_interface::proxy - Rust pub enum ProxyConfigError {
+ProxyConfigError in tor_interface::proxy - Rust