Files
boc/aamos-ledger-rust/target/release/deps/libsocket2-195d4f10a6fc4e1c.rlib
T

1684 lines
432 KiB
Plaintext
Raw Normal View History

!<arch>
/ 0 0 0 0 12618 `
°üüüüüüüüüüüüüüüüüüüüüüüüüüüüü» » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » » èèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèèè_ZN109_$LT$socket2..sockaddr..SockAddr$u20$as$u20$core..convert..From$LT$core..net..socket_addr..SocketAddr$GT$$GT$4from17h92969d1b947c4ad8E_ZN111_$LT$socket2..sockaddr..SockAddr$u20$as$u20$core..convert..From$LT$core..net..socket_addr..SocketAddrV4$GT$$GT$4from17h86ded20c9f56496aE_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$GT$3fmt17ha951e4afcd861915E_ZN52_$LT$socket2..MsgHdr$u20$as$u20$core..fmt..Debug$GT$3fmt17h3145d0cde9f692e5E_ZN55_$LT$socket2..MsgHdrMut$u20$as$u20$core..fmt..Debug$GT$3fmt17hdc3232aed86f9db7E_ZN62_$LT$socket2..MaybeUninitSlice$u20$as$u20$core..fmt..Debug$GT$3fmt17ha8870c24992517d7E_ZN62_$LT$socket2..sockref..SockRef$u20$as$u20$core..fmt..Debug$GT$3fmt17h91367ca44818a931E_ZN64_$LT$socket2..sockaddr..SockAddr$u20$as$u20$core..fmt..Debug$GT$3fmt17h674bd4987626a763E_ZN7socket23sys108_$LT$impl$u20$core..convert..From$LT$socket2..socket..Socket$GT$$u20$for$u20$std..os..fd..owned..OwnedFd$GT$4from17hddbba2f05bdc7f15E_ZN7socket23sys45_$LT$impl$u20$socket2..sockaddr..SockAddr$GT$11as_pathname17hf10e3ed7c4a92024E_ZN7socket23sys45_$LT$impl$u20$socket2..sockaddr..SockAddr$GT$21as_abstract_namespace17h626df50a5e6b1dbeE_ZN7socket23sys45_$LT$impl$u20$socket2..sockaddr..SockAddr$GT$7as_unix17hb126dc80f2182b6aE_ZN7socket23sys60_$LT$impl$u20$core..fmt..Debug$u20$for$u20$socket2..Type$GT$3fmt17he01026c467f9182fE_ZN7socket23sys62_$LT$impl$u20$core..fmt..Debug$u20$for$u20$socket2..Domain$GT$3fmt17h334bb9ad435bf0a8E_ZN7socket23sys64_$LT$impl$u20$core..fmt..Debug$u20$for$u20$socket2..Protocol$GT$3fmt17h43f6fc40bff3f7cfE_ZN7socket23sys65_$LT$impl$u20$core..fmt..Debug$u20$for$u20$socket2..RecvFlags$GT$3fmt17h588eb6e585a67202E_ZN7socket26MsgHdr12with_buffers17hf822cbf86e99e819E_ZN7socket26socket105_$LT$impl$u20$core..convert..From$LT$socket2..socket..Socket$GT$$u20$for$u20$std..net..tcp..TcpStream$GT$4from17ha2c72c264b0e9f26E_ZN7socket26socket105_$LT$impl$u20$core..convert..From$LT$socket2..socket..Socket$GT$$u20$for$u20$std..net..udp..UdpSocket$GT$4from17ha3e2616921c7b51cE_ZN7socket26socket107_$LT$impl$u20$core..convert..From$LT$socket2..socket..Socket$GT$$u20$for$u20$std..net..tcp..TcpListener$GT$4from17h5f0b43362017dc0dE_ZN7socket28sockaddr8SockAddr14as_socket_ipv417h23f321759e9b07b6E_ZN7socket28sockaddr8SockAddr14as_socket_ipv617hbe0027c07662316bE_ZN7socket28sockaddr8SockAddr8try_init17h2dd58613bfab2772E_ZN7socket28sockaddr8SockAddr8try_init17h3956d1ffe7770057E_ZN7socket28sockaddr8SockAddr8try_init17h58ec296aef01ee02E_ZN7socket28sockaddr8SockAddr8try_init17h6a9e36cee6b7c15cE_ZN7socket28sockaddr8SockAddr8try_init17hb769d45ac236e46bE_ZN7socket28sockaddr8SockAddr8try_init17hc405161c2e0e6db0E_ZN7socket29MsgHdrMut12with_buffers17haf3d26846a279883E_ZN7socket23sys10getsockopt17h6e29abc6c7411386E_ZN7socket23sys10getsockopt17hbafbde34800e7e4eE_ZN7socket23sys10getsockopt17hff14686ff0e97821E_ZN7socket23sys10setsockopt17h24877045d6d05706E_ZN7socket23sys10setsockopt17h491ea3df560dfb5dE_ZN7socket23sys10setsockopt17h80df0719eadf8ba9E_ZN7socket23sys10setsockopt17h8b4427191296a76aE_ZN7socket23sys10setsockopt17h959a71aa9b5c60bfE_ZN7socket23sys10setsockopt17hc4c49d0f3dc50c55E_ZN7socket23sys10setsockopt17hdd686df5e49b0c50E_ZN7socket23sys11getpeername17hb77ac7339e880105E_ZN7socket23sys11getsockname17h5ba60168e7aacc0cE_ZN7socket23sys11peek_sender17h0fd6db279c194645E_ZN7socket23sys11timeout_opt17h8b50cad88d3
socket2-195d4f10a6fc4e1c.socket2.45a01f5970c56f2-cgu.0.rcgu.o/
socket2-195d4f10a6fc4e1c.socket2.45a01f5970c56f2-cgu.1.rcgu.o/
socket2-195d4f10a6fc4e1c.socket2.45a01f5970c56f2-cgu.2.rcgu.o/
lib.rmeta/ 0 0 0 644 322616 `
ELF·¸ê@@GNUÀrust
è#rustc 1.96.0 (ac68faa20 2026-05-25)ÁÀ뉊]!ÜÛê(¹Þ—šên-5be7b69c3ff7b5b8ÁíàÄTËŸ ÜJîÄ)'ß\¥!-3d1337db07d0b3aeÁ¤²XctÔ'ÐÓ©z¨ɽÓ-a4945860e1c53b00Á¤°ð ¾ä-±($²ï=©Ã-7e98a21bfd32b0edÁòÖÀH•‘PIÓHã#£-055f30b747f859b6Árustc_std_workspace_coreÁ­Cçß^ò½èÝ$­Çÿ+Cé-c4878ee60b2242c9ÁŸÃï+Ñ]ŠqB<ÏïW#-8dd1dd90e70d0b6aÁ miniz_oxideÁ€š»J(P>àö÷g\K-1eb618da2918ab7fÁadler2ÁÆ;+Þ®5¥Ìýݰ¦ÛLˆ-f7919172d268e069Á hashbrownÁPäV9ÒÆèÜ"ÊÖVŽ\-0fc2184a5da6723aÁrustc_std_workspace_allocÁs&ØòØy¯s•bæ!‰ýŠ-97e4bf30be240674Á
std_detectÁhŠBîÙºÌI®ËÅš-9dbbf8346ba7ac8bÁrustc_demangleÁûë9´Ç×@Œ’ùXFº-f33013f239bf9f14Ácfg_ifÁÜLhž§Œaã¯>­-0a71c8f33a838301Á addr2lineÁ׎Þ!]8V$É@@-e618e6be60e87ba2ÁgimliÁ¸
°µ~Î1‹Ñt ðÁ€w-1f7768a68858f670ÁobjectÁ
áPÃ?­À¶¼QHJ¥-914cd6a4dbe590d1ÁmemchrÁ›º«8Ór­2Ù $¨ûib-cf21ca6f2bb15dcdÁë
‹ás«LÖ€îâƒ×ɯŒ-ee6f3747e38367f0Áoü¿p
¬? é³ìF&ö(-bc5856fc10fc8d1eÁSOCKADDR_IN6_0ÁtåâtestsÁ,‰h$þgN
FromRawSocketÁl¹â<”N
IntoRawSocketÁlÈâ "‡ AsRawSocketÁ\ÈâAsSocketÁDÕâ§â.
NonZeroU32ÁTØ»£Ÿ NonZeroUsizeÁd® »£ŸRawFdÁ,± »£Ÿ UnixDatagramÁd¼
ȣ|
Ÿ UnixListenerÁdÊ
ȣ#
UnixStreamÁTØ
»£B SOCK_DCCPÁL컣ŸSOCK_RAWÁDÞ»£|ŸSOCK_SEQPACKETÁtµ»£Ÿ IPPROTO_DCCPÁdÓ»£|Ÿ IPPROTO_SCTPÁd„»£ŸIPPROTO_UDPLITEÁ|Ô»£ŸIPPROTO_DIVERTÁt°»£ŸIPV6_RECVHOPLIMITÁŒû »£Ÿ
IP_HDRINCLÁTÎ$»£|ñ#Ÿ SO_LINGERÁL,úiosÁŒì*úvisionosÁ´ƒ+úmacosÁœŸ+útvosÁ”¸+úwatchosÁ¬Ð+üæ*ŸIPV6_ADD_MEMBERSHIPÁœÚ9 ú dragonflyÁ¼ñ6úfreebsdÁ¬Ž7úhaikuÁœ©7úillumosÁ¬Â7úÉ
ŒÝ7úØ
´ô7úì
œ8únetbsdÁ¤©8úopenbsdÁ¬Ã8úsolarisÁ¬Þ8úý
”ù8ú¬‘9üë6¾ŸIPV6_DROP_MEMBERSHIPÁ¤ƒ: úÆÞúÛÕúîÎúÿÅúÉ
ÃúØ
Áúì
¿ú·úÈ®úÛ¥úý
£ú¡Ÿ¡Ÿ TCP_KEEPCNTÁ\î=»£|«:Ÿ
TCP_KEEPINTVLÁlû=»£$KEEPALIVE_TIMEÁt@úÉ
Œà>úØ
´÷>úì
œ“?úntoÁŒ¬?úý
”Ã?ú¬Û?üÚ>™Ÿ MAX_BUF_LENÁ\¼LúÉ
ŒKúØ
´´Kúì
œÐKúý
”éKú¬LúcygwinÁ¤œLü—KœŸTCP_CA_NAME_MAXÁ|‰N»£|¿MŸIovLenÁ4ÕUúlinuxÁœ«PîmuslÁœÙPîohosÁœúPîuclibcÁ¬ŸQû32ÁܶQüžQ4üËP‘ü¡PÁúaixÁŒèQúƼÿQúÛ¬œRúfuchsiaÁ¬·RúîœÒRúhurdÁ”ëRúÿ¬ƒSúÉ
ŒžSúØ
´µSúì
œÑSú¤êSúªŒ„TúȬ›TúÛ¬¶Túý
”ÑTú¬éTúespidfÁ¤„UúvitaÁ”žUú«¤¶Uü˜PµŸ
socketpairÁTËí»£|êìŸ
\“…»£|Ó„Ÿ
\ò†»£|½†Ÿset_nonblockingÁ|îŠúĔˊŸkeepalive_timeÁtª¸»£|œ¶Ÿ original_dstÁd¡ã»£|³âŸoriginal_dst_ipv6ÁŒé軣|—èŸ
CcidEndpointsÁlñ®»£|ä­À 

impl_debugÁ÷sockaddrÁ 
  
*æ *try_initÁ,,¥, STORAGE_SIZEÁ, *ú1¡*
set_lengthÁ*familyÁ*domainÁ**as_ptrÁ*
as_storageÁ*is_ipv4Á*is_ipv6Á*is_unixÁ* as_socketÁ*as_socket_ipv4Á*as_socket_ipv6Á*as_bytesÁ@÷B÷D÷F×HK§LsocketÁNNNNNNNNNN N
N N N
NNNNNNNNNNNNNNNNNNN N!N"NSocketÁrinnerÁNInnerÁNufrom_rawÁuas_rawÁuinto_rawÁuæ unew_rawÁz ubindÁuconnectÁuconnect_timeoutÁulistenÁuacceptÁu
accept_rawÁ u
local_addrÁu peer_addrÁu!u try_cloneÁuºushutdownÁurecvÁurecv_out_of_bandÁurecv_with_flagsÁu
recv_vectoredÁurecv_vectored_with_flagsÁupeekÁu recv_fromÁurecv_from_with_flagsÁurecv_from_vectoredÁurecv_from_vectored_with_flagsÁu peek_fromÁu peek_senderÁurecvmsgÁusendÁusend_with_flagsÁu
send_vectoredÁusend_vectored_with_flagsÁusend_out_of_bandÁusend_toÁusend_to_with_flagsÁusend_to_vectoredÁusend_to_vectored_with_flagsÁusendmsgÁNset_common_typeÁNset_common_flagsÁN¢ broadcastÁ£ ¢
set_broadcastÁ¢
take_errorÁ¢ keepaliveÁ§ ¢
set_keepaliveÁ¢lingerÁ¢
set_lingerÁ¢out_of_band_inlineÁ¬ ¢set_out_of_band_inlineÁ¢passcredÁ¯ ¢ set_passcredÁ¢recv_buffer_sizeÁ² ¢set_recv_buffer_sizeÁ¢ read_timeoutÁ¢set_read_timeoutÁ¢
reuse_addressÁ· ¢set_reuse_addressÁ¢send_buffer_sizeÁº ¢set_send_buffer_sizeÁ¢
write_timeoutÁ¢set_write_timeoutÁN from_lingerÁN into_lingerÁNÁjoin_multicast_v4ÁÁleave_multicast_v4ÁÁjoin_multicast_v4_nÁÁleave_multicast_v4_nÁÁ join_ssm_v4ÁÁ leave_ssm_v4ÁÁmulticast_if_v4ÁÁset_multicast_if_v4ÁÁmulticast_loop_v4ÁÊ Áset_multicast_loop_v4ÁÁmulticast_ttl_v4ÁÍ Áset_multicast_ttl_v4ÁÁttlÁÐ Áset_ttlÁÁset_tosÁÁtosÁÔ Á set_recv_tosÁÁrecv_tosÁ× NÙjoin_multicast_v6ÁÙleave_multicast_v6ÁÙmulticast_hops_v6ÁÜ Ùset_multicast_hops_v6ÁÙmulticast_if_v6Áß Ùset_multicast_if_v6ÁÙmulticast_loop_v6Áâ Ùset_multicast_loop_v6ÁÙunicast_hops_v6Áå Ùset_unicast_hops_v6ÁÙonly_v6Áè Ù set_only_v6ÁÙrecv_tclass_v6Áë Ùset_recv_tclass_v6ÁNîset_tcp_keepaliveÁînodelayÁð î set_nodelayÁNóreadÁó
read_vectoredÁõ N÷'aÁ÷Þ/÷ê/ú NüwriteÁüwrite_vectoredÁüflushÁNˆ0«0¸0Î0N ×sockrefÁSockRefÁ'sÁ¡ _lifetimeÁÕ1å´Õ1¤÷×sysÁŸŸŸŸŸŸŸŸŸŸ Ÿ
Ÿ Ÿ Ÿ
ŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸ Ÿ!Ÿ"Ÿ#Ÿ$Ÿ%Ÿ&Ÿ'Ÿ(Ÿ)Ÿ*Ÿ+Ÿ,Ÿ-Ÿ.Ÿ/Ÿ0Ÿ1Ÿ2Ÿ3Ÿ4Ÿ5Ÿ6Ÿ7Ÿ8Ÿ9Ÿ:Ÿ;Ÿ<Ÿ=Ÿ>Ÿ?Ÿ@ŸAŸBŸCŸDŸEŸFŸGŸHŸIŸJŸKŸLŸMŸNŸOŸPŸQŸRŸSŸTŸUŸVŸWŸXŸYŸZŸ[Ÿ\Ÿ]Ÿ^Ÿ_Ÿ`ŸaŸbŸcŸdŸeŸfŸgŸhŸiŸjŸXŸkŸsyscallÁŸÖŸèŸŸ_cloexecÁŸis_end_of_recordÁis_out_of_bandÁŸ×ŸMaybeUninitSliceÁ˜ˆ0˜Á˜ç1Ÿœˆ0Ÿžˆ0Ÿ ˆ0 æ  as_sliceÁ  as_mut_sliceÁŸoffset_of_pathÁŸ
unix_sockaddrÁŸlŸset_msghdr_nameÁŸset_msghdr_iovÁŸset_msghdr_controlÁŸset_msghdr_flagsÁŸ msghdr_flagsÁŸmsghdr_control_lenÁŸ®
is_unnamedÁ¯ ®as_sockaddr_unÁ± ®path_lenÁ®
path_bytesÁ®as_unixÁ® as_pathnameÁ · ®as_abstract_namespaceÁ¹ º ŸºŸsocket_from_rawÁŸ
socket_as_rawÁŸsocket_into_rawÁŸ¡Ÿ§Á Ÿ²Ã Ÿ poll_connectÁŸÖÆ ŸãÈ Ÿ getsocknameÁÊ Ê Ÿ getpeernameÁÍ Í Ÿ­ ŸºŸÄ Ò ŸÓ Ô ŸÉ!Ö × ŸÁ"Ù Ÿ‹!Ÿô!Ü ŸÓ"Þ Ÿá"à Ÿ#ŸÌ#ã Ÿó#Ÿ¬$æ Ÿ timeout_optÁŸ from_timevalÁŸset_timeout_optÁŸ into_timevalÁŸš/Ÿ into_secsÁŸ fcntl_getÁŸ fcntl_addÁï Ÿ fcntl_removeÁñ Ÿ
getsockoptÁó¥ó Ÿ
setsockoptÁö¥ö Ÿ
to_in_addrÁŸ from_in_addrÁŸ to_in6_addrÁŸ
from_in6_addrÁŸto_mreqnÁŸþ_accept4Áÿ þ _set_cloexecÁŸ as_fdÁŸ
 as_raw_fdÁŸ ÷Ÿ ˆ into_raw_fdÁŸ
Š÷ŸŒ from_raw_fdÁ  
IPV4ÁIPV6ÁUNIXÁ for_addressÁ˜÷š÷œSTREAMÁœDGRAMÁŸ÷¡÷£ICMPV4Á£ICMPV6Á£TCPÁ£UDPÁ£MPTCPÁ©÷«÷ ­ is_truncatedÁå7¯
¯ˆ0¯ˆ
³ˆ0³× ˆ0æ  ¹ˆ0¹å¹´
½ˆ0½Àæ À with_timeÁÀ
with_intervalÁMsgHdrÁÄ'addrÁÄ'bufsÁÄ'controlÁÄÇÄ
_lifetimesÁÊóEÊ€FÊFÊæ Ê with_addrÁÊ with_buffersÁÊ with_controlÁÊ
with_flagsÁÓ'nameÁÓ€FÓFÓ× MsgHdrMutÁØóEØ€FØFØÇØ¥FÞóEÞ€FÞFÞæ ÞÛFÞìFÞ€GÞflagsÁÞ control_lenÁèªGè€FèFè× man_linksÁSockAddrÁîstorageÁîñƒNInterfaceIndexOrAddressÁóIndexÁô
ôˆóAddressÁ÷
÷ˆN
ú×N ü÷N þ÷N
÷N÷N÷N÷Ÿˆ×ŸŠ×ŸŒ×DomainÁŽ
ŽˆƒÖ˜óš
šˆŸƒ¡Ö¤ProtocolÁ¦
¦ˆ !«ƒ"­Ö#$° RecvFlagsÁ²
²ˆ%&'·ƒ(¹Ö)*¼ TcpKeepaliveÁ¾timeÁ¾intervalÁ¾retriesÁ+Â×,ă3
4
5
6
7
9
:
;
<
=
>
?
G
G
G
I
I
L
L
w
|
|
}
}
~
~



ƒ




ˆ


Š
Š


Œ
Œ
Œ



Ž
Ž






















˜
˜
˜



š
š



œ
œ
œ




ž
ž
ž
ž
Ÿ
Ÿ
Ÿ
Ÿ
Ÿ
£
¥
¦
§
©
ª
«
¬
®
¯
±
²
´
µ

·
¹
º
¼
½
¾
Â
Â
Â
Ã
Ã
Ã
Ä
Ä
Ä
Å
Å
Å
Æ
Æ
Æ
Æ
Ç
Ç
Ç
Ç
È
É
É
Ê
Ì
Í
Ï
Ð
Ò
Ó
Ô
Ö
×
Ú
Ú
Û
Û
Ü
Þ
ß
á
â
ä
å
ç
è
ê
ë
í
ï
ï
ð
ò
ô
ô
õ
õ
õ
ù
ù
ú
ú
ú
ý
ý
þ
þ
þ
ÿ


ƒ
ƒ
ƒ




˜

ž
ž
ž



£
¤
¥
¦
¨
¨
©
ª
«
¬
­
¯
±
³
³
´
´
µ

¹
¾
Á
Ã
Å
Ô
Ö
Û
Û
Ü
Ü
Þ
Þ
Þ
Þ
à
â
â
ã
ã
å
å
å
æ
æ
æ
æ
ì
ù
û
ý
ý
ÿ

ƒ

µ
µ
µ
¼
¿
Ð
×
×
×
ä
æ
ç
ì
ì
ì
ò
û
û
û













 
¢
¥
¥
¬
®
±
±
¸
º
½
½
Ã
Ã
Ã
Å
Øîî–Iï¦Ið Žy†:¹éþZ“¼”¼•¼V4Á–¼ˆ—¼˜¼V6Á™¼ˆ cÌ£•éþZª¼ª¼ SocketAddrV4Á«¼ipÁÑS¬¼portÁÑSµÃѨbF(ÆéþZ½¼½¼ SocketAddrV6Á¾¼¿[ÑS¿¼Î[ÑSÀ¼flowinfoÁÑSÁ¼scope_idÁÑS¸dÛÔ#¹G[¿cþZµßþZþZþZšeþZ¿cóôõçIöˆ÷øJùˆº8¹¶¨gà rrºsÇNy
0Àšïà  ˆ0í^Ÿ!í^Ÿ!ž_¿cí^éí^‡#‡#ˆ# TcpStreamÁ‰#ˆô" ¤‰?ßøéí^Š#Š## TcpListenerÁŒ#ˆô" N À];óÉéí^ð#ð#ñ# UdpSocketÁò#ˆà# ¬ãøàFð™éÐ_í^é•`í^éÜ`í^é!Æ1¡ç1­Pvßó0ŒjÕ1éÅa Õ1¤¿cÆ1¡ç1­Pvßó0Œj8¿cŽŽ—Kˆ 9sÊñ
Ãï¿cššóœˆ oñK¦¯^¿c¦¦§¥L¨ˆ ¡$Í…Z ¿c²²³ñL´ˆ VÔ¦ÈU¯ÇÌ옘å7šÁŸç1ŸaCžˆ0 Êd,í^«+í^éö+ö+OwnedFdÁ÷+fdÁä+Þí¼>XG¸,í^¯+í^éí^¯e­+í^Š ébÛébØébébÐìébµßébébéébéÕfébŠ ¡cÛ¡cØ¡c¡cÐì¡cµß¡c¡cé¡cÕféÕf¡cŠ ÙcÛÙcØÙcÙcÐìÙcµßÙcÙcéÙcÕféÕfÙcŠ ‘dÛ‘dØ‘d‘dÐì‘dµß‘d‘d¿c¯¯°å7²ˆ ßã3 œ#ˆ0é!ãhö!ãh¿c¾¾¾M¿ÒMÀÞMÁîMYùús§;]صi¿cÄÄåEÈÇÉ¥FÓ%ìHÖ >3ªG€FF¿cØØÎGÜÇÝ¥F*W½§k1ªG€FFñîŽŸš«¦·²Ä¾@îBîDîür€r‚‡#„Š#†ð#™ö+ŠŽšŸš¡©¦«FîúórˆŽŠšŒ¦²³¯Â¾ÓÄèØH¤š°¦¼²JîŽ¡š­¦¹²Kîó
ür€
¹¯œ˜ž˜r„r‘Žš©¦µ²Žžšª¦²Ž£š¯¦»²½¯ØÜé*¿c qµßR"še"à Ÿ! é! Ìì ,«+¯+­+Š ÛÐìö!(Ò×ò"¡¾½'Èô#þZW þZajt
ÙpÌ¿ îÞ+üæxþZsockaddr_storageÁ ss_familyÁ __ss_pad2Áà 
__ss_alignÁÃ n+x•¡5¯­èp¦I¯Ó
 î ×+þZ¶qªèp¨¶q~èpr¦IÉÍc\Õ#üã#)
-—”?
Õëƒ?
ÑÛÑÛ MaybeUninitÁÓÛuninitÁÝÔÛ»ÝÍõƒ«%9¶quŒ•? %–Ë?

Å–Ë? 
¶qýŸ™/N
öq ¾™N©ÙNº-È™N P Ý$üã$õ üß$ú
%àë
UÚë

­•?
º•?
À•?

<š$d¤${èpüº$$ ¤¿$dÇ$G D ºu#DÕ$S eô
™"ºu èp$º$! Ø' Þ'ß':

—ì
ßßErrorÁà ¬
ÑøÿËO Ÿ5ì Ö¿¥þZ«y
³ì

öë
«óy-ÿë
¬ü&<ü& ý‡ä#?½‡ä?
ÃÛÃÛ ManuallyDropÁÅÛ»¬µÜÀ,%*¶qZ ¶q
©ä?ýàÕ%N
°ä? '£'üÏ%æ î ´'\Ã' Müë Ö¿ñy«y
„ì´ì
,ü¾¡üÑ#Žü–$Éýá“à?ó¶qŸý“”®?ý¹ƒR?ò¶qÕŸ”?ýúɺ?ö¶qeŽ•?ýöÐæOú¶q›•?ý·”ŸN¬¶qí·ÒOý¬*ñFšî$Fùæ¬Þ[ ÿÝùæ“á4 ý»•MXʶq}î—N ö¶q·ýØêÜÚ[óy«yñy0ºxóyÕfóyñy èp Àt•óë

…“ì

È0ºxóyÕf¾Ëà
üÄ%”ý ’Ƕcùž"#ýä˜W
â|E‡”ý¾(F
×|-¹”ý×…¨
à|Uî(
ýÕàì?÷¶ql„'ý˜@ZÛ÷z¶q]Ÿä?ýµ‚³Z¶q5«ä?ý¨ÃåNݶqUÖƒZÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ñy«yÌçºxÀt:èp²Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
óy«yêÀxòºuëÄxÂÍ¥Ò­ÀtºýŒ•"?ºu` Àtu–Ë?÷ƒ -óë
óy 
ñyø
«y
þZ$È%¶qÀtèpTÅ{ý ÷züinitÁ(¦Igãé/èpM¡˜N¶qýå•!X¶qƒvdŒ%/èp
´xºxǺxm
èÝéåˆ%FÐu5°ö
ÜWù@#óy ×'
Úsëu­é(

Ƕqýªâ#?ì„!
Ü„!
À¶q*ü„!*èp ­!üä K/èpƒvm+ˆŽÒž 
š
÷zT 
Å{P
M  I FELÍ\U îRYR Ø'0
 Ÿ¶câ|Š×|à|}÷¶qxvÛ÷z¶qsp¶qkhݶqc ñyè$°*
óyä$þZ2¶q2Àt2èpÒ[
Íc
Å{>Ø„<resÁPž$ͦI<Ù#ÒaddrÁ®À
)/èp€†úóyö”†ð¢†é _ref__lenÁ
_ref__storageÁ$÷)l÷) 
â¡…0…0PathÁ†0Çß-bªŸðcÂ^dDü) ƒ*üÝ)( 
¦~  Š*‹*üý(Ž1Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
þZ«y¤˜)äŒ$Œ) êŒ< äŒ^õ
$¥ÞŒgÆäŒèäŒîŒý+èp•,3ü¼+Yò+ þZLÕ+èp4à+lengthÁK´ö,¶q-4üÂ,P\à,Âp,Ö, ,a¶q_4]ZÂpXaü÷-´÷-¶q%Õf •.üð-' Ž ..5üÁ-\éb4ß-Âp,Õ-Õf:³°¶qÓÕf®¬ Ž©§5¥éb¢Âp Õf)(¹ÚD…/èp“/6üÖ.=èpLñ.Âp,ç. ,]èp[6YèpVÂpT]~ü‰N ¶qn
 ÍŽ sa_familyÁsa_dataÁdí3Ÿy^s  0§07üÇ/` Û¶q²–4›0±–|å/Âp,Û/Å{¾Kßå¶qüÿ/"

$0
Û¶q²–»¹7·±–ÂpÅ{W¬åd”1¶q¦18üØ0N¶q„ù0þZ$ð0 ,\¶qZ8X¶qUþZS\}´³2¶qü³20 â2é29ü…2d$¤2Âp,š2p2<Í2Õfž¤¶q´Í2BÕf»®´²9°­Âp«iÃã±Õf´ÿ3¶qüÿ31k
 ¯4¶4:üÑ3e$ð3Âp,æ3p2D™4Õfž¤¶q¼™4BÕf»®´²:°­Âp«iÃã±Õf´„6¶qü„60· ³6º6;üÜ5^$õ5Âp,ë5p2<ž6Õf ´Š8¶qüŠ80 ü‰N ¶qò ˜˜ sockaddr_inÁ
sin_familyÁšsin_portÁsin_addrÁœsin_zeroÁd‹¬s«™_Û ƒ:l¶:èèin_addrÁés_addrÁâVH.Çèpä…Ù¡¹¿
!  ëuƒväç¸
 ¾º ¡Ùlê:ùݦË#! ·
ÖݸË!,üÊ;1
ü‰N  ¶qŒ
 ¥¥ sockaddr_in6Á¦ sin6_familyÁ§ sin6_portÁ¨
sin6_flowinfoÁ© sin6_addrÁª
sin6_scope_idÁÀƒ‘®’ÙšÉ Ç= tû=
õ õ in6_addrÁö s6_addrÁO…¡ö¶ãÅäëuƒvì’¸ ̺t°>
G÷£
²$­A Û¼À[üÇ;ôü‡8´ ÁA ÷:ü‹;+Üš; ÍÊ[Ã
ª¼- “¼ µ; ü†;1 Û¼À[ ¶;Œ ¾>üÒ>¼üá>¬”®?
èp”ï?
èpýÄt-Ã ½¼
 ŒAu “¼ AüÍ> ۼÀ[ ŽA`<üÏ7ò ü»9†ü”:­üÒ:oüþ<›üØ=Áü˜>ÖÛ¶q¶¡¬î9ü·Ømúü:'ù¹½
ë!§Òl”Ùýµç‹RüöØ,ùÝŸæó!‘ÐÜÝ:ùÝòÊi! Ðîç! ý†[cÃãS zÛ¶qФ´±=üÚ\üüá=)ý¼’ÌRäÛÚ‘Ðä£>Ðzýâs•ÃéSÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÀ[”ê7Âp,à7yµ¡üÑ93Å{c¾º¾ºIpv4AddrÁ¿ºoctetsÁ¯Q5N`hzØÊ˜:$Ö:|À[p\oϤü”=4Å{B̺̺Ipv6AddrÁͺ”­¯QÉ¢}ÝÏÆÚÜ=$œ>ZÀ[f÷\dèpbèpR—£gèpº¶¦
*ÚŠ$¿9¿[æÎ[èÚŠ$‚=
¿[ Î[˜
.<¤8ÕfDä;Õf÷£÷£ 
¶qŒÉHDÉHèp ƒv ÙHý¸)$býî#)^
 
ëuý¶)&b
Û)b ÚHãH? ü¥F¾Ÿ
7D¸H¬Û¶q²–¦
ÃÛ²–ëu4ÁHý¸#¬bërëuü˜HCPšî$FLÿÝFýÞjKXÀëuu¥'bXÊëu}Ô'bý»µpNÄëuýà"¹^ ·ç±ëuÍN  ç±,»FÂp,±FƒvŽèpŽÅ{/ ç±s.2ý‡k Xëuƒv¿ëuƒv
Ïéðˆ%F\’U­ôËX 
  Š  Àt: 7  4 ºu/
¼ Ðu& Ì ëu$ Û ƒv"
o ¼¹   ®ÿû ÷z¼Å{¸µ±
–ÌX yó¤N M‡O Ф »VüÌV-¯!
œ›W\›WMÈ‚Ã7
è!÷£,
S
 ­Wü‡W'üÐW"l…Ú]ü׸﮶¦üéÙ0 õ  ˜Úü¼W6ú¥ ñW|˜XmÃèpü€X'èp ¦X|øX m؛à èpüàX'èp †Y <µ_

̪_ î
$#èp Â_
È_É_Eü üŽU»
üÖUó üîUžý¸ÊçXÓ¶qü©U!'ó¶q;#ò¶qö¶qú¶q
 ¬¶q ÿ
šû
÷ ÿÝñ ë
ʶqç
ð÷¶qmŠÌXíÛ÷z¶qêç¶qâßݶqÚýØ>O¶qФ´¦Výž‚ìS4 Wùݺö!“Ð<§W% Лø!ýòx<ÃêS$íWü¦ÙuûÜýË×­RDŠÚýßîSTXýª›ðSTýXÔÀФô×ZþZD¼T÷\$¥T¶qË·ü‹V1ºuÐÐú¥yèpèpé¶qºÀtVÀtÛ%!ºu}%÷ƒÅ{Ê"Ø„È"¶¦ËÚŠœ¦I²ÚU$&èp¦I<òUìDâVÕfí¶qê¶qƒvNФƒv
ɶqýÆË$Xæ…æÐu&¢†µ÷£T¶fð¶qhoèpˆƒvi^  ç±\TÊf R
¶qÊ Ñ èpê ƒvË À
ç± \ •á+    +%±Á,õ±Á,  ëu-+3
/
†Ä$ýª/'+ (
 E¸/+
EÂ/+%Ì/+;-+K(ýÞÂ+
Ÿ+ Úfýª/,+‡(Õf
Õ/+IIü„fVË ? o7Ð |"Û¶q²–v“"Û²–ëuÐ Ð ërëuÌ $šË $ÿÝ
$Ç ÀëuÄ $Êëu À ÄëuÕ
¼ 
·ç±ëu¸ 
œ
?x@ 7¡
 M#
Û¶q²–G
d# Û²–ëu¡
 ¡
 ërëu
 ì$šœ
ä$ÿÝÞ$˜
Àëu
ë$Êëu

Äëu¦ 
·ç±ëu
ý¡žU"Œç±ç±ü±f#ý”+†jëuëuåО"ýÀæ+ý€ÁU,„tëu„tëuðý˜,Î+¢jëuëuý¬E+ýà.€+$¢fÂp,ŠfÂp,fƒv´ èp´ Å{U¾´ ƒvÕ èpÕ Å{v
¾´¸ Ú†Ä+†Ä+¾´•±Á,¾´ Õf¹
ú ëuƒvG#ëuƒv« ëuƒvg#ëuƒvU/+ëuƒvƒµ· ƒµ¾ ”†+”†+ÒÄ%T×gj¶qâ
é
èpƒvã
Ø
 ç±\ýÜí%L  ,
±e-ÜíLUöíLýâíLíîL  

   
¬rX   å”rX-
­ç± 2 #Z 
`  f 
l  ôg
¯rX «
¨

†ÄÞÛ ç±
Ø ÕùÇãÕ:L´-
¤eæÍãÕL ùÇïÕ-LùÇéÕ4LLü”g`?Ó³7À'Û¶q²–º×'Û²–ëuërëu_)šW)ÿÝQ) Àëu^)ÊëuÄëu
·ç±ëuü
ý¥íL÷eëuæÍ\âgùÇËÑäL ÈÊæÍ, ùÇ—Ò˜L

ùÇËÒäL
ýŽq¦X
Â籉ǤÒL
œ„tëuAÇÚÒL
%ërëuùÇøÕ"L
v*š&n*ÿÝh*"Àëuu*ÊëuÄëu0·ç±ëuÇgÂp,²g æÍ,¹gÜÒgƒv°èp°Å{Q¾´œ ƒv›ÒL
†ÄÕÒL
´ï
¾´o¾´ò¾´Ùˆºˆžsëuƒv/(ëuƒvëuƒvO(ëuƒvƒµ”†%àÍTôÏIÎÎòƒµ°=³." Ð_À_À_Þ^Á_Çü^§Ö'®•‘ãCã`ã`ä`ºå`ˆ³` Gzds—€Y€YYFileDescÁYˆ½X ´™Ê¸f¯eºÆºÆ»Æ
I32NotAllOnesÁ¼Æˆ¢  $ÄÒÿ|âÙÀ V Õf
Ä."î"w ü”"Zü•ê_¾üÉ"ùßßa…àN\çêýÌÀA·#ýôZ;LÇ_žýÈ·?Mša§ýä¢?FùX]ö·MýŒ.?",]’£FùÀÆ VëÄU»."Õf\³" í^,©"€Ø ôT¿#Ð_ßÖŽ×Áׯe€ØY  ÕfÐ#x
üô"\üöêb¿üª# ùÍò …ìNlÉëýÙÂ@»#§
ýµ[=LÈ_´
ý‹µ6M”aÂ
ý¦ 5FóXÏ
ý±/S"ƒ,Ü
ýƒ4o@¼¯e½Ù/"ý°_Aà¯eÍÑ4@ýâT9@ůeÕÙ/"ý”8A
á¯eEU@
±ëÄUô/"Õf\”#í^$‹#€ØPìëñë lñë

Dôë
4Tôë ýëäì çìèì ü·è±üèë¡c$Ýè¡cÐè¡c®¡c¬´´ÌUû÷$‹ù Jö­#) 5 ¿c{C6
‡dW6  {­ÏÌø çIèp"(4éàøÀ6ƒá
Ñ6™án'Ïÿ÷  (Ï€øûpv}
Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ŸÈŸÈ Èµx éBL ž^   c cˆ¢cµ
 `£cbufÁ `àB¤GS
S[Ͳéà» ÍÆ ö­Yéàb ùän¢±°__self_0Á¹ä©ÜŽåéàÀƒáñîäéàJƒáœðÊtðÊ Õf! ‚ËÕf@!$ŽË Û¼­Ö­ÖDurationÁ®ÖsecsÁâ}¯ÖnanosÁâ}Zµ–²ªüíÊr˜ü­Ë+´ÁË|ÁË Õf! ÖËB
Iœ­Ë
€~Ug ×Ëü¨Ë1 Û¼ñæ ØË­ ÞËáË¿ü©Ê¸Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙñæ„ÖÊ» » Ô%¼ l_onoffÁ½ l_lingerÁ~)d%„Ÿþ¤4¾Ê3Õf2ñæywÕfvÔ%5ßD¯Ìt©Ì$üÄÍH »  çÍÕf €ÎÕf9DÇÌ Ûñæ¼Í ÍDÍ 
%<™Í
Œ~2L™Í ¡ÍbÕfp ¦ÍüÔÌ^ »  ÷ÌÕf ±Í •ÎÀüã˲üÂÌpòé\—Ì¢éDøËtÂÌñæ8Õf!Õf)" ñæ%durationÁLÐí}4÷¦º9Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
«yƒ§ÿüǦ<™ïtÞ¦ í^LЦ 34Ï©º9™ïÛ©üŸ©<™ït¶© ÀÚL¨© 4=¿AÃÛÃÛƒzÅÛ»¬µÜÀ,%*í^×Û×ÛØÛ
MaybeDanglingÁÚÛˆÙ @€y,¸·Â¦í^í^Û˜üž=Å
Åí^dÉÀ
áí^½
ÀÚ Æ1¡ç1­Pvßó0Œj 
º9
Ž,•b<=-" €Øþ
 Õf
¡-" ¤º9Õf%Ö½üæ5üø"¼º9
®+í^#€Ö®º9
àWº9™áº9)s  …ùA ×Ûí^ý»41@ ÃÛí^
ë4@ šüÈ º9 PhantomDataÁFu\»ŸÀÚ ÉМüØøüÏýé,?"ÿ+\™ÓëÄU˜-"
¼í^q
àí^Œ

–ó •bÕfÎNÎN
BorrowedFdÁÐNÉdä+ÑN_phantomÁä+§]òÞ^Ÿ<ÉÈñí^€Øýñ2¡Éd!Œôû¿õGêõ%¬¼Gd¼G­Íƒvü¡G1Žƒv,´G%<­Íܾt4¾tÕf
”Çtü Õf Øtü¹t! š Ùtàtü„t\¡c$ªt¡c$¡tÕfÕf:ü Õf´§†4§† Õf! º9Õf ¼†ܧ†º9Õf Á†Ȇüñ…W$˜†‘d$Õf¡ÕfŸ<l°†àÕf×ÔÚÕfò ?àÕfÎ˹ÕfÇÄÁ½‘dºÕfXÕfWÓõ¹àÕf´øˆ4øˆ Õf! º9Õf Üøˆº9Õf ’‰™‰üĈU$鈑d$àˆÕf¡ÕfŸ<lÚÕf×ÔÚÕfò ?ÚÕfÎ˹ÕfÇÄÁ½‘dºÕfXÕfWÓõ¹ÚÕf ü”œr¼¼œ%ôÈ,±% Ë4Ì4Í4
__variant1ÁÎ4Ï4
__variant2Áë òg Lîœ     üð›Å ˜º9…öFu\»Ÿ 
ÑÛÑÛÌsÓÛásÝÔÛ»ÝÍõƒ«%9ëu ´»¢üœ›Ÿý½ÈW,…tÏ„dÀœ$ÂÏ„û‚4Íœ˜˜å7šÁŸç1ŸaCž¤Ñ›Ì„®›  iovecÁž iov_baseÁŸ iov_lenÁ#Ø»l2ûº7ú‚6ƒvÊ ΄…ôÈ,¯ãz

ÚsÏ„ÿ ÄžžŒžžº†ú‚" Ï„„¸ž º†ƒvT+Q+ ΄N+K+ Èž Ñž£ üÁÇ%Âû‚Ï„4°ž/+ërÏ„üˆžA¶>š-+Î>ÿÝà>)+ÀÏ„'+ë>ÊÏ„&+$+ÄÏ„:,!+·΄Ï„+ ΄”â ì…ˆwú‚wƒvU ΄,1#+Ï„ƒv1BÏ„ƒvƒµ+ŒÄŸº†ú‚„ÞŸ º†ƒvýÿ=(býÃ')^ ΄ýù=.b
¦>b îŸ÷Ÿ¤ üמ “'Âû‚Ï„4ÖŸýí7ÂbîrÏ„üªŸE¶>šî$FÎ>ÿÝà>ý,ÀÏ„uè;bë>ÊÏ„}—<býïÁtNÆÏ„üýµ&¹^º΄Ï„íÄÂNÌ„´€Ÿ ì…Lòžú‚vƒve˜‡P& ÷,Ï„ƒv1BÏ„ƒv
ŽÏéçˆ%F<¢¡䢡ƒv‰ñü‰N ëuƒvlüÏ¡(ƒv ö¡\ý¡Š¢¥üΠ¼ü—¡süÄ¡Fƒv,‹¡ õõ sockaddr_unÁö
sun_familyÁ÷sun_pathÁÀžt(,O¢<ë ƒv$›¡ Æœ¢¡ƒv$È¡ ȦI9baseÁ@õ
4Üú=¶q¼°ú‚üް&ú‚T̰é>èp亰èp Õ°Ù°¨üǯÿ=7D¢°@Û¶q²–>7?6,Ѱ‡° ­C­CmsghdrÁ®Cmsg_nameÁ¯C msg_namelenÁ°Cmsg_iovÁ±C
msg_iovlenÁ²C msg_controlÁ³Cmsg_controllenÁ´C msg_flagsÁ"š\7B~" å¯Âp$÷¯ú‚ƒèpdÅ{ž?msgÁ3Ð 6H¬é³ú‚ì„´ƒv¤´ªüŒ³˜â³Ó“­³ú‚¿³ƒv׳±”#µ %(b¬’µÕfªµ«üÇ´c‹µÓ“æ´Õf,ø´±”ÃHIl“¶ Õfĉ¶ ²  ¶£¶¬ü͵V‘dLùµ Õ“èµÕfs±”<”„·ƒv·­üƶWƒv,ø¶è˜ç¶±”2üëÆò¬ëÆR=Y=¶q%‰Õ(Õ
üÏ)^B¶q7=©‘ü‹Ï+ ÁÏUMÕ Û¼Ä
˜Õ
™Û1ÛÄ%¤Û1  
 T®Ç
 §C èp¼¼Ç




  ž ƒvœ
£
È
ƒvˆ

v
|

ä¼Ç

èp ×Ç

ü®Ç*
 
 

º9ü  UŸÛ1  Û¼
¨Û1  ÜË
È1Û
ÉÈ1 5-Ë /º9e­È1 ý˄̯üÀÆÄüͼ±„ðÆ“?;LÞÍý¡ŽÕ‹ƒÄ²ÕfÄÂpüèÍÛüíÍÕ²Õfڟ柿‚D7D’Ï@Û¶q²–‹D@Û²–ÆÜ›ÏýýÙ×1·TİÕfÄæŸüŽÇÏ­”Û1ü’ÇÊ °Õfô æŸÇ7F
6,³Ç
®
¥¾
´  ²
 ý”Ç1µTœëËe‹È1ùö­5/ê·$ÜÆÂp,ÒÆÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙyÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙļ
BÄŽ©‘Å{ãFÄ&N
èp
èpx
ƒv
ƒv ©‘~ ƒv|
À‘
È BÕfÑŸ
®Õë 
ÓÛ1Í$®ÇÂpGHèp §® µ
A  ?  ƒv=  D  È, 
 ƒv)  ' 

 %¤èp¢ ²Êü®Ç º9òüÌʺ9B ÍËÜ˰LjI63Þ ¥îã á  ›Çë Ä<“ÇèpFèp¬ƒv<ÂpÁƒv¾ ©‘º ƒv¸ À‘Ë ¦IV$ÓÆÂp

_ref__selfÁøDÿD¶q¦ÉÏ À¯­J¶q7=©‘ª§ú¦ ۼģý†HÕº9‚£=±"¦E;‹ƒÄÑŸõð²Õfڟ柫nJ7ì@Û¶q²–uJ@Û²–Æê‚£Ô´ÍÂp,ªÍ‘FÄ ©‘ Å{ŠJ.ð=FÕfÑŸ2J $ÏÂpŠJ¶q7=©‘Y V ÂϲK7þ@Û¶q²–*K@Û²–ÆûÄïÍÑŸk©‘
Âp|Å{ŠJ$«ÍÂpž¯¨`,g,ßÖŽ×Áׯe€ØŽ+ ÕfŠ+ôê¾+t+àNn+k+·#g+b+Ç__+Z+šaV+Q+ùXM+J+,G+D+ëÄ>+Õf4Óê Ð_4±ê€ØI-¡+,4ÂëßÖŽ×Áׯe€Ø–,  ÕfØë¿ 7+)+ìN"++»#++È_++”a
++óX+ü*ƒ,ù*ô*¼¯eñ*ï*à¯eì*ê*ůeç*å* á¯eâ* ‘,ëÄà*Õf4µëÐ_4”ë€Ø%¡),ƒv¤Š®|Š® ! ®D%¬¢®„¢® ! ¶®D%$® Û¼ñæü‡®ØRº9ºº9à®|æ® ´æ® û®$НÌ‘¯ „’¯
 
! 
èp ©¯
ü‘¯  $­¯èèp °¯ ÄÀ¯ ί   $Ó¯
 
1
8lÀ¯
ÿ} E
6 [ ׯ
  ô»¯ Û¼ñæ د Þ¯ vá¯éü¾­£üÜ®ƒü†¯Y¢é„ð­ã
ã
timevalÁä
tv_secÁå
tv_usecÁ;[›ä
sDÔ­æåœ
èpãèpâáñæèpÐímsecÁcnsecÁ8 ü‹Ø!lžØ$žØ 
&4£Ø
ØQ3D£Ø ªØ^
e”‹Ø
­Òr «Øüñ×B è ²ØµØùüˆÖ­Á¢<»Öùä$§Öèpë—£éùäèÚŠ%K2Mt…Ù èpHM —£  Ù?M ¾º;M¤Ùú˜IŠI§ÒƒI€I‹R{Iö­DçØÁ¢<ÒØ—£ÜMèp«Ë¡÷ICC¶¦C õ C›Úû¢@–@­R‘@ú¥DÚÙ ï®$ÆÙ¶¦œCÚŠí@ÁC$…Ú ÞC
æC4ŠÚ
­R5A ‘ÚðC õ íCÛûzAú¥Éñ¿Ã¶¦\Dñ¿ÚŠßµAdêÚ ¶¦ÁM ̺ öÚùÚüK KÌRKï®DÌÚú¥$¹Ú¶¦}ÚŠ^K L¶Þ|°Þ%Lóà Jö­¬­áL¸á 
&T­á
ù3DLøÞ çIèp¬²ßL½ß 
&T²ßÄ1B Æßüâß"´íß  ýùä% 2 I
PTâßÄZl ƒà|Ÿà   TŸà
 
$ 
Õf2 ­à
ü†ß³ ù ¸à    !) Áá¬ÝáLèá 
&TÝáÄ1B ñáüᘠù âÕf ˜â ¢âýü¦ÝüüÊÞïüÃàÖùùip_mreqnÁú
imr_multiaddrÁû imr_addressÁü imr_ifindexÁaš’ô!ð·t›ÞùäLÈ݃äLâÝüÊÞ8ÍéÁ¢ÒùäÒÁ¢ùäùäö­¬îßÕfAÕfIèpBùä«Á¢ùäÁ¢×ùä×ùäö multiaddrÁº interfaceÁųʧ³ÊŠ£ÖQö­¸ÀÖQö­sýÎùäŸö­°ÖQö­#;*;Ð_ßÖŽ×Áׯe€ØU:  ÕfQ:ô
ü‰´:Z:wDµ´b:¾_:^:àNX:V:·#R:M:Ç_J:E:šaA:<:ùX8:5:,2:/:ëÄ):Õf, ´ÀÚ,–´€Ø2<Ê$³·Ð_ßÖŽ×Áׯe€Ø;
 ÕfÈ·ü‹·=3:xT¸·;:¿8:7:ìN0:.:»#*:%:È_"::”a::óX: :ƒ,::¼¯e:þ9 à¯eû9 ù9ůeö9ô9 á¯eñ9  ;ëÄï9Õf,£·í^$𷀨M(—Æ:Ë:$)éb5 éb?HR˜Ï:˜Í: ÄÒ&0(™ï:
Õf Õf0ó:
Ú:H™Ñ:ÄÒÄÒÕfˆÕf5¹
BL¤æ; Ždí;ÕfüÍ;.éb4Ý;%9Õf¬Þ< Žlå<ÕfüÅ</éb4Õ<%9Õf¤Ý= Ždä=ÕfüÄ=.éb4Ô=%9Õf<ò>lì>"dÌ?º9
ébd?º9ébé?üª>¿éb4Û>À[<Ã>Œˆ?˜7oébœébÙ×÷ÕÝébëÐØébæËÉébÅÀ[ÃÁ˜Ôö.éb\ébLµ@ ŽÄ@ü@5éb4¤@Õf —@¯ -AÕf™Aüê@/Õf,€Aéb ò@¯ -(›ðDõD $)¡c5 ¡c?HRœùD¢œ÷D ÇÜ&0(—E
Õf Õf0E
„E¥HûDÇÜÇÜÕfˆÕf5¹
BL´¦F š„«FÃHÕfüF0¡c$ŸF%9ÃHÕf¬·G š|¼GÄHÕfüŸG.ž¡c$°G%9ÄHÕf<ÏN šÜN ü«N1¡c$ÀNÕf ³N¿ -¤OÕf­O¢ü€O-Õf,”O¡c ˆO¿ -„RŸ‰R¬$)Ùc5 Ùc?HR R® R Êâ&0¯R
Õf Õf0¡³R
¡˜R±RÊâÊâÕfˆÕf5¹
BLÜ•S ¦ŒžSËÕfüøR9¤ÙcDŠS%9ËÕfì€T ¦œ‰TÌÕfüãS;¥ÙcDõS%9ÌÕfÔçT ¦„ðTÍÕfüÍT5¦ÙcDÜT%9ÍÕfÔËU ¦„ÔUÎÕfü±U5§ÙcDÀU%9ÎÕfäÓV ¦”ÜVÕfü·V9¨ÙcDÈV%9Õf\å^ ¦ö^ªü½^9ÙcDÒ^Õf Å^» -Æ_ÕfÏ_¬üž_1Õf,¶_Ùc ¦_» -¢a£§a¸$)d5 d?HR¤«aº¤©a ‚ë&0Îa
Õf Õf0¥Òa
¥¶a½­a‚ë‚ëÕfˆÕf5¹
BL¼‹e4‹eÕf º9 Õf ¡eä‹eº9Õf ¦e­e®üÙdT$üdd$ódÕf˜Õf9t”eÞÕfÍËÑÕfè >ÞÕfÆÄ³ÕfÁ¿®½º‘d¸ÕfNÕfNÑñ¸ÞÕfüÂj 7þ6ü6=[ú‚®6µ6@7  ®6µ6­6 ˜º9¥„A6œü±j1 ¯ ájèj¸üäi„n6¢ët6…tÏ„p6„ZÂÏ„û‚o6¯¯°å7²ˆ ßã3 œ#¤’jÌ„ïiì…dº†_8ú‚^8ƒvò7˜‡&6¯ã9È¿‡8
T÷k$6"6ì…º†ú‚G6ˆ$6+6ì…º†ƒvQX[X  ΄sX„X(6/6œ‡l¼
üÀkG46£É\Âû‚Ï„:6ìXërÏ„96¶>šYÎ>ÿÝà>+YÀÏ„<Yë>ÊÏ„QYXYÄÏ„QXoY·΄Ï„…Y«Š”Ók Úò,Ékˆ©7ú‚©7ƒv‡7áŠQX.ÝYÏ„ƒv1BÏ„ƒvƒµ Z
tÿl86ì…º†ú‚;6B6ì…º†ƒv?6<6  ΄966646“m¿
ü¼lW?6¤¬Ø]Âû‚Ï„E6D6îrÏ„@6¶>š>6Î>ÿÝà>+YÀÏ„:6ë>ÊÏ„8666ÆÏ„.736º΄Ï„/6Ì„´×l ÚòLÉlú‚ 7ƒv7˜‡z7%þÝYÏ„ƒv1BÏ„ƒvùŽ&6 °¦©o
¢ééàЦ®q
¢ééà ¦Ös
  Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙèpf réàÿmº9
ýcº9 ™á(º9™áº9™áýº9™áäél¦ƒn 
¦„nà
„㬠µiŽä¾éॠ¢é±éàÛþéàr  ©ü„ÿб(ÛþéàÛþéàò‚ÿéàÏŸýQ
°§©oUÊë1¢éЧ®q¢é §Ös: ©ü†n ¾§Šn
§‹nÅHý¨ë1ŠUñæÕãë1Âæ²Ö=õë1 IŠUñæÚC?²Ö9NU ~ŠUèpów  ù¿ȹMr ¡Þt µiþÀþ¢éd¢éN©ü<+6üœu𠾺9 ¢éº9 ¢éº9
©ü’{Áüït£µid…u
$½u Û¼ñæ$Šx Û¼ñæ$ýz Û¼èpÊ ¾ ‹{¿Á½µi¹¢éª¢é©ü~çT…€  Û¼ñæüìA ¾¢é©ü ¬€³€Âü­µiµiñæ¢éÒM L¿$Š€ Ù Û¼ñæ Ž€Ù ¾¢é©üÖÓÂеi̵iÊñæÈ¢éWñæìÒMït²‹  Û¼ñæü•‹I ¾¢é©ü Ý‹ä‹ÃüΊµi$†‹µi$éŠñæDéÞM!PÄD·‹ Þ Û¼ñæ ¿‹Þ ¾¢é©üÚ×ÃÔµiϵiÌñæÉ¢é\ñæîÞMðÄ”!Z!Z¤9®9º9 ÑÛÑÛÌsÓÛásÝÔÛ»ÝÍõƒ«%9Õ“::+: Õ“A:º9
ÃÕ“\:º9ëum:º9ƒv…:A:ù:;;!ZÖ< á< á< ÃÛÃÛƒzÅÛ»¬µÜÀ,%*Õ“7=  Õ“J= T=e= [üøœd ĺ9…öFu\»ŸÂp æLæLçLIoSliceÁéLˆ¦ —óë@M$T´ ÛâÎüÿ›ã5]ÓÕ“l'>óÕ“!Z>>K>òÕ“]>e>öÕ“x>€>úÕ““>›>¬Õ“®>¶>šÅ>Î>ÿÝà>ë>ÊÕ“ý>ù?÷Õ“÷]@ ÛˆŽÕ“&@ .@ Õ“A@ I@
ÝÕ“\@
ÄÄåEÈÇÉ¥FÓ%ìHÖ >3ôœÕ“—Œ!Z—Œ¤9fAøŒ: —Œ|AÉŽÖ<  ˆŽá< ªBÕ“1BÕ“ƒv
ÉÕ“G`æ…lBŒA:
ÇÕ“ªB üÔŸ+
ŠJ¶q,Aú‚*AÕ“ú‚+AÜIèp)AÕ“èp+A{$‰ “ ÏüŸƒMA¨½K7QA@Û¶q²–*KÿI6PA´’$ÅŸ´’D¡ŸÂp$«Ÿú‚'BèpBÅ{ŠJ/ÚŠ3¦ga´ý¤ú‚LË¥ Ô@Õ“ú‚Ö@Õ“ƒv Ô¥$ߥé¥Ñü®¤»üó¤v]d„tëuD¥Aªü¥8´’$䤴’D¤´̤ú‚ÞƒvÓ¾´/e/¯ã2µ ÷¤¡”†5AÕ“Õf$â§ì§Òüê¦OA«ü«§-´’$œ§´’Dü¦Õf,†§ÃH[Äò¯!Z!Z¤9®9º9 —Œ::+:øŒA:º9Œ\:º9ëum:º9ƒv…:A:ù:;;!ZÖ< á< á< ˆŽ7= ÉŽJ= T=e= [üÓ¯g غ9…öFu\»ŸŽÃú ç± ¹°À°âü×®é5]ÓÕ“lû¯'>óÕ“!Z>>K>òÕ“]>e>öÕ“x>€>úÕ““>›>¬Õ“®>¶>šÅ>Î>ÿÝà>ë>ÊÕ“ý>ù?÷Õ“÷]@ ÛˆŽÕ“&@ .@ Õ“A@ I@
ÝÕ“\@
ØØÎGÜÇÝ¥F*W½§k1üç®!Õ“ç—Œ!Z—Œ¤9fAøŒ:¥“|AÉŽÖ< ¹“á< §BÕ“1BÕ“ƒvð“G`æ…lBŒA:‹”ªB üí²+
ŠJ¶qãGú‚áGÕ“ú‚âGÜIèpàGÕ“èpâG{$¢³¬³ãü¥²H¨½K7H@Û¶q²–*KÿI6HúŸ$Þ²úŸD¶²Ž$À²ú‚ßHèpÀHÅ{ŠJ0ÚŠ3§
¼Í¸àP=[ú‚Læ¸ “GÕ“ú‚•GÕ“ƒv ï¸ $ú¸„¹åüηP…tÏ„dѸ;^ÂÏ„û‚4Þ¸ìGªü¤¸LúŸ$•¸úŸDâ·Ì„ì·ú‚ƒvꘇ¯O0¯ã3¤¿‡G†GÕ“ÕfƒG ²Gƒºæü´¹OˆG¬ôß¹‘dL˹ úŸ,Á¹ÕfHLGÕ“ƒvϼçüø»W›G­ü¥¼$ƒv,•¼ø§,‹¼ B,Æø óõ&ž^1èp8?<ƒù óø&ž^1ö­9@ŒÝ: Ž%éb0Õf7>|‡E š%¡c0Õf7>œ›R ¦§%Ùc0Õf7>¤¹a ²³%d0Õf7>ü¾f ¯°(Úò4ì…<C                                         


  

       
       N‡Ÿ¯°ÄØŽ¦§¾š²³À×ø¤,ÐŽæL…ö…öíëÌs\°ÑÛ
SocketAddrÁTË“¼r,æé!
DerefMutÁDíö! ýåD‡­Ö c_intÁ,Ù4¿¬ŽÊ–IDó4îº45rÆ1<¦5ÈI¼Ö6óüáÈ»üá-* Utilities for creating and using sockets.Áúü“GD The goal of this crate is to create and use a socket using advancedÁüÛKH configuration options (those that are not available in the types in theÁü§41 standard library) without using any unsafe code.ÁÜúüàDA This crate provides as direct as possible access to the system'sÁü¥B? functionality for sockets, this means little effort to provideÁüèMJ cross-platform utilities. It is up to the user to know how to use socketsÁü¶JG when using this crate. *If you don't know how to create a socket usingÁüHE libc/system calls then this crate is not for you*. Most, if not all,ÁüÊIF functions directly relate to the equivalent system call with no errorÁü”PM handling applied, so no handling errors such as [`EINTR`]. As a result usingÁüåPM this crate can be a little wordy, but it should give you maximal flexibilityÁü¶ " over configuration of sockets.ÁÙ úüÝ .+ [`EINTR`]: std::io::ErrorKind::InterruptedÁŒ
út
 # ExamplesÁŸ
ú

```no_runÁü±
(% # fn main() -> std::io::Result<()> {ÁüÚ
,) use std::net::{SocketAddr, TcpListener};Áü‡ (% use socket2::{Socket, Domain, Type};Á° úü´ 41 // Create a TCP listener bound to two addresses.Áüé @= let socket = Socket::new(Domain::IPV6, Type::STREAM, None)?;Áª úü®  socket.set_only_v6(false)?;ÁüÎ =: let address: SocketAddr = "[::1]:12345".parse().unwrap();ÁüŒ
" socket.bind(&address.into())?;Áį
 socket.listen(128)?;ÁÈ
úüÌ
.+ let listener: TcpListener = socket.into();Á
 // ...Á¬† # drop(listener);Á # Ok(()) }Á ```Á³ú ## FeaturesÁÇúüËPM This crate has a single feature `all`, which enables all functions even onesÁüœ&# that are not available on all OSs.ÁN‡Ÿ¯°ÄØŽ¦§¾š²³Àe ×f ¤,ÐŽe æL…öd …öw íd ëÌsc ÑÛݱY “¼rX é!
²P ö! ýåO ­Ö ½²J ¿¬ŽÊ–II îºH rÆ1G ÈIF ó


Š
„¢}
ÄÙp
D˜P
¬¦D
¤Á-
!
$


ϟ
¼à ø š þ Ó , Â8!& Ç8õ
$ Í, × Ø Å , æ ç ø+ è é ÷, ê8ê& ñ8û
ù,  8& ¥8¼'­, °8flagÁ& µ8¼$ Æ Ç, É Ê Ì$ Ë
Í*Õ Ø 
88Àç'ê8×ì'ï8p8
÷, û8!  
8 8×  ¼ 8$—$ 8± & ž  8¡8À¥'¨8ת'­8ˆ ¸:8¹ »(¾8ÀÁ'Ä8ׯ'É8Í Ò 
8ä8stringÁ ï88 û7ˆ ü þ Ô
,   
, ¯ ° »+ ± ² º, ³8ê4´
¼, Ö8$×'Ü, ß8—È*å8Ô ñ ò ø, ó8—È$ ù 8¹ ¦*¨88«0 · ¸ Á8± ¹$ º7{n}Á$ Â% Õ8± ç è8ñ ò ù8ÍË% ˜ŒÔ æ Ž  ì  , í8÷& ò8´ô$ ö, ø8
ù& ü8´þ*  
8$8Š$” ˜, 8÷ ž8
 , ¤8
¥ © 8 ·8÷ ¾ Ì8¡4¿& Å, Ç8÷(Î, Ñ8
Ò Ö û+ è é ó8âê í ò8ú8"4… Œ Ü ¢, £8
¤ §'¨8œB µ Ê8¡ ¼8÷A È É+ î ï ü8âð ó û8â8"  í «, ¬8
­ °'±8from_raw_socketÁ  Û8¡ É8into_raw_socketÁ Ù Ú% Œ dé2Dí2îŽ$šeŽ eí$$ëš<* ÀÌs\3ÑÛݱTP“¼©[d\ª¼ƒ\dj½¼ô‹…0ט¤,ioÁ¦µ ¡½²¿¬Ê sa_family_tÁ\“Å  ÙÍ!ÚÀ ˜"ÛÚ£¥#ÜÀp„Å$Ý socklen_tÁL×Ü%ÞAF_INETÁ<â &ÌAF_INET6ÁDï 'ÍAF_UNIXÁ<ù (ΗK4Ž)—K)|!D÷úëîDEàãÓÖÆÉ|}»¯² £Œlo[^IL7:&) ôöØÚ½¿l‰­lÍþZ+,13456789:;<=>?üæNüáC@ Create a `SockAddr` from the underlying storage and its length.Á©ú # SafetyÁÂúüÊKH Caller must ensure that the address family and length match the type ofÁüšKH storage address. For example if `storage.ss_family` is set to `AF_INET`ÁüêKH the `storage` must be initialised as `sockaddr_in`, setting the contentÁìº and length appropriately.ÁÜúÿ»÷ú<ÿ»Áü‹ (¹¼¤¸  # #[cfg(unix)] {Á„Ñ
use std::io;ÁŒæ  use std::mem;Áüü # use std::os::unix::io::AsRawFd;Á¤
úü¬
2/ use socket2::{SockAddr, Socket, Domain, Type};Áã
úüë
@= let socket = Socket::new(Domain::IPV4, Type::STREAM, None)?;Á° úü¸ ?< // Initialise a `SocketAddr` byte calling `getsockname(2)`.Áüü LI let mut addr_storage: libc::sockaddr_storage = unsafe { mem::zeroed() };ÁüÍ EB let mut len = mem::size_of_val(&addr_storage) as libc::socklen_t;Á
úüŸ
DA // The `getsockname(2)` system call will intiliase `storage` forÁüè
/, // us, setting `len` to the correct length.Á´œ let res = unsafe {ÁÔ· libc::getsockname(ÁüÖ socket.as_raw_fd(),ÁüúFC (&mut addr_storage as *mut libc::sockaddr_storage).cast(),Á¬Å &mut len,Á };Á”ø if res == -1 {Áü/, return Err(io::Error::last_os_error());ÁÍúüÕ>; let address = unsafe { SockAddr::new(addr_storage, len) };Á¤˜ # drop(address);Á # }Á # Ok(())Á°ç»Áú¶qèpþZ**
+¦I¥8®8ü¾üä;8 Initialise a `SockAddr` by calling the function `init`.Á¤úü¬LI The type of the address storage and length passed to the function `init`Áüý  is OS/architecture specific.Á¢úüªFC The address is zeroed before `init` is called and is thus valid toÁüõKH dereference and read from. The length initialised to the maximum lengthÁœÅ of the storage.ÁÝúµÛöúüþK×ÛüÎK¬ÜüžKÝìîÕÝúÿ»«ú»Áü¿(¹¼¤ì»Þ„…ØÞüš#ŒßÂúüÊ2Åßúü‰@àÎúüÖ?ãàüš let (_, address) = unsafe {Áü¾0- SockAddr::try_init(|addr_storage, len| {ÁüóLI // The `getsockname(2)` system call will intiliase `storage` forÁüÄ74 // us, setting `len` to the correct length.Áü€VS if libc::getsockname(socket.as_raw_fd(), addr_storage.cast(), len) == -1 {ÁüÛ/, Err(io::Error::last_os_error())Á¤ } else {Á´¨ Ok(())Á
 })Á }?;Á¤ð“ç<‰°çd•Àç°ç»Áºxç*-¥.-.*Íìºx ÕÍìóy Ø"ºxÀxü– >ºxÀx˜"Ú‚
,ºxóyæƒÄ@NPKMìä èp,ã$,<closure_kind>Á0<closure_signature>Á0<upvars>Á00,°üý(Qüå'LI Constructs a `SockAddr` with the family `AF_UNIX` and the provided path.Á¶(úü¾(:7 Returns an error if the path is longer than `SUN_LEN`.Á$„)䌢Ž*¡22*ÍìäŒ ‰)àäŒêŒ\Â)
1äŒõ
G')ü¼+6ü‘*" Set the length of the address.Á¸*údÀ*µÛÑ*úüÙ*IF Caller must ensure that the address up to `length` bytes are properlyÁ„§+
initialised.ÁTÊ+Æ ÆþZèp* Õ+*
3$Ú+³GüÂ,)ü›," Returns this address's family.Á4Ï,Ç ÇþZ* Ö,*
4$×,üÁ-$ü˜-$! Returns this address's `Domain`.Á4Î-È ÈþZéb* Õ-*
5$Ö-üÖ.$ü£..+ Returns the size of this address in bytes.Áã.É ÉþZèp* ç.*
6$è.üÇ/-ü™/)& Returns a raw pointer to the address.Á4Ô/Ê ÊþZ±–* Û/*
7$Ü/üØ01ü­0&# Retuns the address as the storage.ÁTå0þZ¶q**
8;Lü…2#ü¬1TQ Returns true if this address is in the `AF_INET` (IPv4) family, false otherwise.Á<2Ë ËþZ* š2*
9$2üÑ3#üï2JG Returns true if this address is in the `AF_INET6` (IPv6) family, falseÁt¾3 otherwise.Á<Þ3Ì ÌþZ* æ3*
:$ç3ìÜ5ü¼4\Y Returns true if this address is of a unix socket (for local interprocess communication),Áü5:7 i.e. it is from the `AF_UNIX` family, false otherwise.Á<ã5Í ÍþZ* ë5*
;$ì5üÏ7-üÀ6KH Returns this address as a `SocketAddr` if it is in the `AF_INET` (IPv4)Áü7:7 or `AF_INET6` (IPv6) family, otherwise returns `None`.ÁLÖ7Î ÎþZ„­* à7*
<$á7ü¤B4üÇAHE Returns this address as a [`SocketAddrV4`] if it is in the `AF_INET`Á\”B family.Át«BÏ ÏþZÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ\* ºB*
=$»Bü¼D4üÞCIF Returns this address as a [`SocketAddrV6`] if it is in the `AF_INET6`Á\¬DÒ…tÃDÐ ÐþZÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ÷\* ÒD*
>$ÓDÜ¥FD¨FÑ ÑþZ Ñç±* ±F*
?$²FüçH"þZAëAüI%$“IÀ[þZ@@
AÚŠ$˜IüÂJ$þZCëCüíJ'$ðJ\þZBB
CÚŠ$õJüòS$þZEëEüT'$ T÷\þZDD
EÚŠ"_äÍ_þZGÀcGüð_:ó_ÒÓÔ ÒþZ Ó c cˆ¢cµ
 `£c¯ã `àB¤GS
Ô„ãF ÷_F
G$ø_×þ_ÜâeþZI·ßIü„f"‡fÕÖ ÕþZ ÖþZH ŠfH
I$f¹
Æd¤ÞfþZ´÷fþZLeLü”g3$—gר ×þZ ØæÍKMM ²gKÍìæÍ œg¢eæÍŒŸg
LæÍ$³gº¹i*,T÷24û2rt ¡¿Àó×ê¤,NO¬Ö¦NQReadÁ$ƒà NRWriteÁ,‰Ÿ!NSÐŽæLNU
IoSliceMutÁTÉö NVÌs\äÑÛNWû­̺NXnetÁ$·ž"NZ­¾ºN[ShutdownÁDǶMN\ FromRawFdÁL÷­+N^ IntoRawFdÁL¯+N_ýå­ÖN`¾2$ƒŸNb½²,‰¿¬NcÊó?T óNd@Tœ öNeX$¨NfÎGLæØNg—K4ýŽNi—KNi¥LD…¦Nj¥L§NjIDîNk¾Md™¾NlóšNmóNmå7„Û¯Noå7°NoåE4íÄNpñLLõ²NqñL³NqD婸œŠ}fi¬Ú]””O?±25Œã

ô÷œÜêÝýÐÓ¾Á±´¥¨„ßœpsPS?B25öøç錴ü‚)& Owned wrapper around a system socket.Á¬úü°MJ This type simply wraps an instance of a file descriptor (`c_int`) on UnixÁüþMJ and an instance of `SOCKET` on Windows. This is the main type exported byÁüÌ HE this crate and is intended to mirror the raw semantics of sockets onÁü•
FC platforms as closely as possible. Almost all methods correspond to矆
IF precisely one libc or OS API call which is essentially just a "RusticÁü¦ ! translation" of what's below.ÁÈ úüÌ )& ## Converting to and from other typesÁö úüú MJ This type can be freely converted into the network primitives provided byÁüÈ KH the standard library, such as [`TcpStream`] or [`UdpSocket`], using theÁü”
*' [`From`] trait, see the example below.Á¿
úüÃ
&# [`TcpStream`]: std::net::TcpStreamÁüê
&# [`UdpSocket`]: std::net::UdpSocketÁú\• # NotesÁ¡úü¥MJ Some methods that set options on `Socket` require two system calls to setÁüóKH their options without overwriting previously set options. We do this byÁü¿NK first getting the current settings, applying the desired changes, and thenÁüŽPM updating the settings. This means that the operation is **not** atomic. ThisÁüßNK can lead to a data race when two threads are changing options in parallel.Á®úÿ»¢¼üÏ(¹¼üø,ë¼ü¥(¡½ÎúäÒ // create a TCP listenerÁüï@¾°úü´=œ¿üò! let address = address.into();ÁÜ” socket.bind(&address)?;ÁİŽÀÉúüÍ.¼ÀóÀ¬‡†Át¤Á»Á4¿í^y
0ÀšïsdÌNrrÐ_¬ÀÐ_\îí^vwxyz|}~ƒˆŠŒŽ˜šœžŸü¥2Õfí^uu
v@¼ü”"*4¢"Ù Ùí^Õfu ©"u
w$ª"üô"+D#í^Õfuu
xnnü½'VüÖ#/, Creates a new socket and sets common flags.ÁŠ$úü’$HE This function corresponds to `socket(2)` on Unix and `WSASocketW` onÁdß$ Windows.Áð$úüø$JG On Unix-like systems, the close-on-exec flag is set on the new socket.ÁüÇ%IF Additionally, on Apple platforms `SOCK_NOSIGPIPE` is set. On Windows,Áü•&'$ the socket is made non-inheritable.ÁÁ&úüÉ&LI [`Socket::new_raw`] can be used if you don't want these flags to be set.Áø6Ç!Ÿôš' 
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=socket&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=socket&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/socket.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/socket.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/socket.2>
* OpenBSD: <https://man.openbsd.org/socket.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/socket.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/socket>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-socket>
ÁÄ'éb¡cÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÙcÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
í^«yuu
y¯4È'´Ø'protocolÁDâ'üë*Zü)0- Creates a new socket ready to be configured.ÁÅ)úüÍ)HΨüš*LI Windows and simply creates a new socket, no other configuration is done.Á<ò*éb¡cÁ³ˆ´uu
z¯4ú*´Š+€´D”+ò+z–ô{®ô{Ëô{{z{ÕfÙcÕfü·88üø6/, Binds this socket to the specified address.Á¬7úü´7KH This function directly corresponds to the `bind(2)` function on WindowsÁl„8
and Unix.ÁøNÇ!Ÿä–8Ž
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=bind&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=bind&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/bind.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/bind.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/bind.2>
* OpenBSD: <https://man.openbsd.org/bind.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/bind.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/bind>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-bind>
Á$¾8ÚÛ Úí^ ÛþZ™ïu Ã8u
|$Ä8˜<Ê8üÂ@;ü§9B? Initiate a connection on this socket to the specified address.Áî9úüö9FC This function directly corresponds to the `connect(2)` function onÁ¬Á: Windows and Unix.ÁÛ:úüã:GD An error will be returned if `listen` or `connect` has already beenÁܯ; called on this builder.ÁøfÇ!ŸüÏ;©
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=connect&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=connect&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/connect.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/connect.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/connect.2>
* OpenBSD: <https://man.openbsd.org/connect.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/connect.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/connect>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-connect>
Áó;ú\û;¼ž<úü“<A> When using a non-blocking connect (by setting the socket intoÁüÙ<KH non-blocking mode before calling this function), socket option can't beÁü©=EB set *while connecting*. This will cause errors on Windows. SocketÁüó=EB options can be safely set before and after connecting the socket.Á½>úüÅ>KH On Cygwin, a Unix domain socket connect blocks until the server acceptsÁü•?HE it. If the behavior is not expected, try [`Socket::set_no_peercred`]Á”â? (Cygwin only).Á<É@ÜÝ Üí^ ÝþZ™ïu Ñ@u
}$Ò@˜<Ø@üŠISü¸AGD Initiate a connection on this socket to the specified address, onlyÁü„BFC only waiting for a certain period of time for the connection to beÁ„ÏB
established.ÁäBúüìBJG Unlike many other methods on `Socket`, this does *not* correspond to aÁü»CKH single C function. It sets the socket to nonblocking mode, connects viaÁü‹DJG connect(2), and then waits for the connection to complete with poll(2)ÁüÚDGD on Unix and select on Windows. When the connection is complete, theÁü¦EEB socket is set back to blocking mode. On Unix, this will loop overÁœðE `EINTR` errors.ÁˆFútF # WarningsÁ£Fúü«FIF The non-blocking state of the socket is overridden by this function -ÁüùFLI it will be returned in blocking mode on success, and in an indeterminateÁ¬ÊG state on failure.ÁäGúüìGJG If the connection request times out, it may still be processing in theÁü»HJG background - a second call to `connect` or `connect_timeout` may fail.Á|IÞß Þí^ ßþZñæ™ïu ¡Iu
~$¢IÚŠ$¨ItimeoutÁ<¹Iü‡P6üšMGD Mark a socket as ready to accept incoming connection requests usingÁÌæM [`Socket::accept()`].Á„NúüŒNEB This function directly corresponds to the `listen(2)` function onÁ¬ÖNÝÀðNúüøNGˆÁÜÄOØÁø~Ç!ŸôäO 
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=listen&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=listen&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/listen.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/listen.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/listen.2>
* OpenBSD: <https://man.openbsd.org/listen.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/listen.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/listen>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-listen>
Á4ŽPà àí^Õf™ïu •Pu
$PbacklogÁ<œPü“V6ü÷P85 Accept a new incoming connection from this listener.Á´Qúü¼QDA This function uses `accept4(2)` on platforms that support it andÁü…R&# `accept(2)` platforms that do not.Á°Rúü¸REB This function sets the same flags as in done for [`Socket::new`],Áü‚SLI [`Socket::accept_raw`] can be used if you don't want to set those flags.Áø–Ç!ŸôÓS 
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=accept&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=accept&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/accept.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/accept.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/accept.2>
* OpenBSD: <https://man.openbsd.org/accept.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/accept.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/accept>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-accept>
ÁöSú\þS¼žŽTúü–TK©ËüæTHþË”³UÏÌ4šVá áí^Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
í^þZ«yu ¡Vu
$¢Vü†b:üÝ`8’àšaúü¢aEB This function directly corresponds to the `accept(2)` function onÁ¬ìaÝÀTbâ âí^±ëu ˜bu
$™b|êb–ô®ôËôÕfÕfþZÿëü¥f0ü¦c@= Returns the socket address of the local half of this socket.ÁëcúüócJG This function directly corresponds to the `getsockname(2)` function onÁ¬ÂdÝÀø®Ç!ŸüÜd#Í
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=getsockname&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=getsockname&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/getsockname.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockname.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/getsockname.2>
* OpenBSD: <https://man.openbsd.org/getsockname.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockname.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/getsockname>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockname>
Á„eú\Œe¼žœeúü¤eEB Depending on the OS this may return an error if the socket is notÁdîe [bound].Áÿeú̇f [bound]: Socket::bindÁT¬fã ãí^¢Žu ·fu
ƒ$¸füûi/ü‹gA> Returns the socket address of the remote peer of this socket.ÁÑgúüÙgJG This function directly corresponds to the `getpeername(2)` function onÁ¬¨hÝÀøÆÇ!ŸüÂh#Í
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=getpeername&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=getpeername&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/getpeername.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getpeername.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/getpeername.2>
* OpenBSD: <https://man.openbsd.org/getpeername.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getpeername.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/getpeername>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getpeername>
Áêhú\òh¼ž‚iúüŠi=: This returns an error if the socket is not [`connect`ed].ÁÌiúüÔi" [`connect`ed]: Socket::connectÁLjä äí^¢Žu Œju
$jüÅk(üàjKH Returns the [`Type`] of this socket by checking the `SO_TYPE` option onÁ„°k
this socket.Á4Ìkå åí^Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
¡c«yu Óku
$Ôküïp-üÚlFC Creates a new independently owned handle to the underlying socket.Á¥mú\­m¼ž½múüÅmIF On Unix this uses `F_DUPFD_CLOEXEC` and thus sets the `FD_CLOEXEC` onÁÄ“n the returned socket.Á°núü¸nKH On Windows this uses `WSA_FLAG_NO_HANDLE_INHERIT` setting inheriting toÁTˆo false.Á—oúüŸoDA On Windows this can **not** be used function cannot be used on aÁÜèo QOS-enabled socket, seeÁüˆpb_ <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsaduplicatesocketw>.ÁLöpæ æí^ˆ´u €qu
$qüáwBüÔu63 Moves this socket into or out of nonblocking mode.Ávú\—v¼ž§vúü¯vIF On Unix this corresponds to calling `fcntl` (un)setting `O_NONBLOCK`.Áývúü…wDA On Windows this corresponds to calling `ioctlsocket` (un)settingÁtÎw `FIONBIO`.Á|èwç çí^™ïu øwu
$ùw
\ÿwüíz7üêxB? Shuts down the read, write, or both halves of this connection.Á±yúü¹yHE This function will cause all pending and future I/O on the specifiedÁü†z=: portions to return immediately with an appropriate value.ÁøÞÇ!ŸüÈz ²
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=shutdown&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=shutdown&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/shutdown.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/shutdown.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/shutdown.2>
* OpenBSD: <https://man.openbsd.org/shutdown.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/shutdown.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/shutdown>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-shutdown>
ÁDôzè èí^¶M·M¸M©¹MºMÀ»M¼MBothÁlÏÏ‘£A2Í™ïu ýzu
ˆ$þzhowÁ„{ü¤ƒDüÜ{FC Receives data on the socket from the remote address to which it isÁt§| connected.Áº|úüÂ|HE The [`connect`] method will connect this socket to a remote address.Áü}:7 This method might fail if the socket is not connected.ÁøöÇ!ŸäÎ}Ž
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=recv&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=recv&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/recv.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/recv.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/recv.2>
* OpenBSD: <https://man.openbsd.org/recv.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/recv.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/recv>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-recv>
Áï}úü÷}  [`connect`]: Socket::connectÁœ~úd¤~µÛµ~úü½~GD Normally casting a `&mut [u8]` to `&mut [MaybeUninit<u8>]` would beÁü‰JG unsound, as that allows us to write uninitialised bytes to the buffer.ÁüØLI However this implementation promises to not write uninitialised bytes toÁü©€FC the `buf`fer and passes it directly to `recv(2)` system call. ThisÁüô€HE promise ensures that this function can be called using a `buf`fer ofÁ¬Á type `&mut [u8]`.ÁÛúüãLI Note that the [`io::Read::read`] implementation calls this function withÁü´‚KH a `buf`fer of type `&mut [u8]`, allowing initialised buffers to be usedÁÜ„ƒ without using `unsafe`.Á$«ƒéê éí^ ê΄Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ƒv«yu °ƒu
$±ƒ¯ã·ƒü²‡Pü›„LI Receives out-of-band (OOB) data on the socket from the remote address toÁüì„FC which it is connected by setting the `MSG_OOB` flag for this call.Á·…úü¿…?< For more information, see [`recv`], [`out_of_band_inline`].Áƒ†úÔ‹† [`recv`]: Socket::recvÁüª†63 [`out_of_band_inline`]: Socket::out_of_band_inlineÁ„¹‡ëì ëí^ ì΄ÿ¥u ʇu
Š$ˇ¯ãчü܉üÀˆLI Identical to [`recv`] but allows for specification of arbitrary flags toÁü‘‰ the underlying `recv` call.Áµ‰úÔ½‰š¨|ã‰íî íí^ î΄Õfÿ¥u ü‰u
$ý‰¯ã‹ŠÃH,°Šüê•wü˜‹F©–üã‹DA connected. Unlike [`recv`] this allows passing multiple buffers.Á¬Œúü´ŒHœ—ü:î—ÀúüÈLI In addition to the number of bytes read, this function returns the flagsÁü™ŽJG for the received message. See [`RecvFlags`] for more information aboutÁ¼èŽ the returned flags.ÁøŽÇ!Ÿü„©
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=recvmsg&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=recvmsg&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/recvmsg.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/recvmsg.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/recvmsg.2>
* OpenBSD: <https://man.openbsd.org/recvmsg.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/recvmsg.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/recvmsg>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-recvmsg>
Á¨úÔ°š¨üÏ àžôúµÛúü•KH Normally casting a `IoSliceMut` to `MaybeUninitSlice` would be unsound,ÁüåIF as that allows us to write uninitialised bytes to the buffer. HoweverÁü³‘HE this implementation promises to not write uninitialised bytes to theÁü€’KH `bufs` and passes it directly to `recvmsg(2)` system call. This promiseÁüÐ’GD ensures that this function can be called using `bufs` of type `&mutÁ”œ“ [IoSliceMut]`.Á³“úü»“GD Note that the [`io::Read::read_vectored`] implementation calls thisÁü‡”JG function with `buf`s of type `&mut [IoSliceMut]`, allowing initialisedÁüÖ”.+ buffers to be used without using `unsafe`.ÁúredoxÁœ“•¬’•ü‰• lñ•ïðñ ïí^ ð
¯¯°å7²ˆ ßã3 œ#ñÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ƒv‘d«yu ˆ–u
Œ$‰–bufsÁ$—–üŠ›˜üž—LI Identical to [`recv_vectored`] but allows for specification of arbitraryÁüï—52 flags to the underlying `recvmsg`/`WSARecv` call.Á©˜úü±˜,) [`recv_vectored`]: Socket::recv_vectoredÁâ˜úd꘵Ûû˜úüƒ™JG `recv_from_vectored` makes the same safety guarantees regarding `bufs`ÁÌÒ™ as [`recv_vectored`].Áð™úüø™,ý¾ú®»œ³š¬²šü©š Ä‘›òóô òí^ ó
¯¯°å7²ˆ ßã3 œ#ôÕfÁ½u ³›u
$´›»½$›ÃH,í›üå DüçœEB Receives data on the socket from the remote adress to which it isÁü±EB connected, without removing that data from the queue. On success,Áüû'$ returns the number of bytes peeked.Á§žúü¯žJG Successive calls return the same data. This is accomplished by passingÁüþž>; `MSG_PEEK` as a flag to the underlying `recv` system call.ÁÁŸúdÉŸµÛÚŸúüâŸEB `peek` makes the same safety guarantees regarding the `buf`fer asÁl¬ 
[`recv`].Á¾ úÔÆ š¨$ì õö õí^ ö΄ÿ¥u ñ u
Ž$ò ¯ãø ü½¤Uüè¡JG Receives data from the socket. On success, returns the number of bytesÁü·¢30 read and the address from whence the data came.Áø¦Ç!Ÿüï¢ ²
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=recvfrom&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=recvfrom&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/recvfrom.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/recvfrom.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/recvfrom.2>
* OpenBSD: <https://man.openbsd.org/recvfrom.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/recvfrom.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/recvfrom>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-recvfrom>
Á”£údœ£µÛ­£úüµ£JG `recv_from` makes the same safety guarantees regarding the `buf`fer asÁl„¤¼Æ–¤úÔž¤š¨LĤ÷ø ÷í^ ø΄Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ƒvþZ«yu Τu
$Ϥ¯ãÕ¤üù¦üÊ¥HE Identical to [`recv_from`] but allows for specification of arbitraryÁü—¦,) flags to the underlying `recvfrom` call.ÁȦúüЦ$! [`recv_from`]: Socket::recv_fromÁ¤€§ùú ùí^ ú΄Õf”Òu ž§u
$Ÿ§¯ã­§ÃH,Ò§ü™­üƨHE Receives data from the socket. Returns the amount of bytes read, theÁü“©HE [`RecvFlags`] and the remote address from the data is coming. UnlikeÁüà©74 [`recv_from`] this allows passing multiple buffers.Áø¾Ç!Ÿüœªø®ÀªúüȪ$ÀÓñªúdùªµÛŠ«úü’«JÜ¿Ìá«°Àÿ«úü‡¬,ý¾ú®»œÂ¬¬Á¬ü¸¬ ” ­ûüý ûí^ ü
¯¯°å7²ˆ ßã3 œ#ýÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ƒv‘dþZ«yu ¼­u
$½­»½$Ë­üಧüá®GD Identical to [`recv_from_vectored`] but allows for specification ofÁü­¯C@ arbitrary flags to the underlying `recvmsg`/`WSARecvFrom` call.Áõ¯úüý¯63 [`recv_from_vectored`]: Socket::recv_from_vectoredÁ¸°údÀ°µÛѰúüÙ°JÜ¿̨±°ÀƱúüα,ý¾ú®»œ‰²¬ˆ²üÿ± ìç²þÿ þí^ ÿ
¯¯°å7²ˆ ßã3 œ#ÕfõÙu ޳u
$³»½$³ÃH,ȳüá¾UüÑ´FC Receives data from the socket, without removing it from the queue.Áœµúü¤µJ§ÄüóµB? `MSG_PEEK` as a flag to the underlying `recvfrom` system call.Áº¶úü¶GD On success, returns the number of bytes peeked and the address fromÁÌŽ· whence the data came.Á¬·úd´·µÛÅ·úüÍ·JG `peek_from` makes the same safety guarantees regarding the `buf`fer asÁlœ¸¼Æ®¸ú䶸 # Note: Datagram SocketsÁü׸PM For datagram sockets, the behavior of this method when `buf` is smaller thanÁü¬¹MJ the datagram at the head of the receive queue differs between Windows andÁüþ¹NK Unix-like platforms (Linux, macOS, BSDs, etc: colloquially termed "*nix").ÁѺúüÙºHE On *nix platforms, the datagram is truncated to the length of `buf`.Á¦»úü®»IF On Windows, an error corresponding to `WSAEMSGSIZE` will be returned.Áü»úü„¼^[ For consistency between platforms, be sure to provide a sufficiently large buffer to avoidÁüç¼KH truncation; the exact size required depends on the underlying protocol.Á·½úü¿½IF If you just want to know the sender of the data, try [`peek_sender`].Á¾úÔ•¾š¨ü´¾(% [`peek_sender`]: Socket::peek_senderÁLè¾ í^ ΄”Òu ò¾u
$ó¾¯ãù¾ü‡Â1üú¿FC Retrieve the sender for the data at the head of the receive queue.ÁÅÀúüÍÀIF This is equivalent to calling [`peek_from`] with a zero-sized buffer,Áü›Á63 but suppresses the `WSAEMSGSIZE` error on Windows.ÁÖÁúüÞÁ$! [`peek_from`]: Socket::peek_fromÁ\ŽÂƒ ƒí^¢Žu šÂu
$›Âü¡Ç^üîÂ>; Receive a message from a socket using a message structure.Á±Ãúü¹ÃKH This is not supported on Windows as calling `WSARecvMsg` (the `recvmsg`Áü‰Ä74 equivalent) is not straight forward on Windows. SeeÁüÅĘ <https://github.com/microsoft/Windows-classic-samples/blob/7cbd99ac1d2b4a0beffbaba29ea63d024ceff700/Samples/Win7Samples/netds/winsock/recvmsg/rmmc.cpp>ÁäåÅ for an example (in C++).ÁøÖÇ!Ÿü†Æø®ú$´Æú®»œ¾Æ¬½Æü³Æ üªÆ+<¨Çˆ í^ ØØÎGÜÇÝ¥F*W½§k1ˆÕfÿ¥u °Çu
$±Ç±”·ÇÃH,ØÇüÈÊ3ü½È1. Sends data on the socket to a connected peer.ÁóÈúüûÈHE This is typically used on TCP sockets or datagram sockets which haveÁœÈÉ been connected.ÁàÉúüèÉ:7 On success returns the number of bytes that were sent.ÁøîÇ!Ÿä§ÊŽ
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=send&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=send&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/send.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/send.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/send.2>
* OpenBSD: <https://man.openbsd.org/send.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/send.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/send>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-send>
Á$ÏÊŠ í^ Šç±ÿ¥u ÔÊu
$ÕʯãÛÊüÊÌLü®Ë[X Identical to [`send`] but allows for specification of arbitrary flags to the underlyingÁ„ŽÌ
`send` call.Á£ÌúÔ«Ì [`send`]: Socket::sendÁ|ÑÌŒ í^ Œç±Õfÿ¥u áÌu
$â̯ãèÌÃH,ôÌü€ÏFüÑÍIF Send data to the connected peer. Returns the amount of bytes written.Áú®»œ©Î¬¨ÎüŸÎ l‡ÏŽ í^ Ž
æLæLçLÐŽéLˆ¦ —óë@M$Tÿ¥u •Ïu
˜$–Ï»½$œÏüÌÒ~üƒÐLI Identical to [`send_vectored`] but allows for specification of arbitraryÁüÔÐ52 flags to the underlying `sendmsg`/`WSASend` call.Áø†Ç!ŸüŽÑ©
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=sendmsg&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=sendmsg&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/sendmsg.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/sendmsg.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/sendmsg.2>
* OpenBSD: <https://man.openbsd.org/sendmsg.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/sendmsg.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/sendmsg>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-sendmsg>
Á²ÑúüºÑ,) [`send_vectored`]: Socket::send_vectoredÁú®»œõѬôÑüëÑ ÄÓÒ í^ 
æLæLçLÐŽéLˆ¦ —óë@M$TÕfÿ¥u õÒu
$öÒ»½$„ÓÃH,¢Óü„×?üÔ@= Sends out-of-band (OOB) data on the socket to connected peerÁüÔÔ0- by setting the `MSG_OOB` flag for this call.Á‰Õúü‘Õ?< For more information, see [`send`], [`out_of_band_inline`].ÁÕÕúÔÝÕöüüüÕ6¿¨„‹× í^ ç±ÿ¥u œ×u
š$ׯã£×üàÙGüØJG Sends data on the socket to the given address. On success, returns theÁäÐØ number of bytes written.ÁñØúüùØ?< This is typically used on UDP or datagram-oriented sockets.ÁøžÇ!Ÿô½Ù 
Additional documentation can be found in manual of the OS:
* DragonFly BSD: <https://man.dragonflybsd.org/?command=sendto&section=2>
* FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=sendto&sektion=2>
* Linux: <https://man7.org/linux/man-pages/man2/sendto.2.html>
* macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/sendto.2.html> (archived, actually for iOS)
* NetBSD: <https://man.netbsd.org/sendto.2>
* OpenBSD: <https://man.openbsd.org/sendto.2>
* iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/sendto.2.html> (archived)
* illumos: <https://illumos.org/man/3SOCKET/sendto>
* Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-sendto>
Á<çÙ í^ ç± þZÿ¥u ïÙu
$ðÙ¯ãöÙÚŠ$‚ÚüŠÜüãÚLI Identical to [`send_to`] but allows for specification of arbitrary flagsÁü´Û$! to the underlying `sendto` call.ÁÝÛúüåÛ  [`send_to`]: Socket::send_toÁ”‘ܘš ˜í^ ç± šþZÕfÿ¥u ­Üu
œ$®Ü¯ã¼ÜÚŠ$ÐÜÃH,éÜü¸ßZüÕÝHE Send data to a peer listening on `addr`. Returns the amount of bytesÁd¢Þ written.Áø¶Ç!Ÿü³ÞÙú®»œáÞ¬àÞü×Þ „¿ßœž í^ œ
æLæLçLÐŽéLˆ¦ —óë@M$T žþZÿ¥u Ðßu
$Ñß»½$×ßÚŠ$íßüˆãšüØàEB Identical to [`send_to_vectored`] but allows for specification ofÁü¢áA> arbitrary flags to the underlying `sendmsg`/`WSASendTo` call.Áèáúüðá2/ [`send_to_vectored`]: Socket::send_to_vectoredÁú®»œ±â¬°âü§â Ü㟠¡¢ Ÿí^  
æLæLçLÐŽéLˆ¦ —óë@M$T¡ ¢þZÕfÿ¥u ´ãu
ž$µã»½$ÃãÚŠ$áãÃH,úãü³æWüðä96 Send a message on a socket using a message structure.ÁøÎÇ!Ÿü®åÙú®»œÜå¬ÛåüÒå <ºæ£¤¥¦§ £í^ ¤ÄÄåEÈÇÉ¥FÓ%ìHÖ >3¥¦§Õfÿ¥u Âæu
Ÿ$Ãæ±”ÉæÃH,ãæü·è*|ÀèN¡c¡c
 ´@oüñí9„ôíNí^ˆ´
¡¡4…î\·ûü™ù.+ Socket options get/set using `SOL_SOCKET`.ÁÈùúüÌùEB Additional documentation can be found in documentation of the OS.Áü’úB? * Linux: <https://man7.org/linux/man-pages/man7/socket.7.html>ÁüÕúa^ * Windows: <https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options>Áí^£¥¦§©ª«¬®¯±²´µ·¹º¼½¾ü•ý+üÉû?< Get the value of the `SO_BROADCAST` option for this socket.Áüúü•üB? For more information about this option, see [`set_broadcast`].ÁÜüúüäü,) [`set_broadcast`]: Socket::set_broadcastÁLœý¨ ¨í^Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
«y¢ ¦ý¢
£$§ý\¼þ£–ô¤®ô¤Ëô¤¤£¤ÕfÕfü–€>üíþ?< Set the value of the `SO_BROADCAST` option for this socket.Á±ÿúü¹ÿGD When enabled, this socket is allowed to send packets to a broadcastÁd…€ address.Ál© ©í^™ï¢ «€¢
¥$¬€ì$L²€ü „9üª‚:7 Get the value of the `SO_ERROR` option on this socket.Áé‚úüñ‚JG This will retrieve the stored error in the underlying socket, clearingÁüÀƒLI the field in the process. This can be useful for checking errors betweenÁT‘„ calls.ÁT§„ª ªí^Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ«y«y¢ ²„¢
¦$³„ü£ˆ+ü؆>; Get the value of the `SO_KEEPALIVE` option on this socket.Á›‡úü£‡B? For more information about this option, see [`set_keepalive`].Áê‡úüò‡,) [`set_keepalive`]: Socket::set_keepaliveÁLªˆ« «í^Õ©¢ ´ˆ¢
§$µˆ\ɉ§–ô¨®ô¨Ëô¨¨§¨Õf¡«ü>üú‰;8 Set value for the `SO_KEEPALIVE` option on this socket.ÁºŠúüŠIF Enable sending of keep-alive messages on connection-oriented sockets.Ál—‹¬ ¬í^™ï¢ ¥‹¢
©$¦‹©%L¬‹üãŽ4ü¤;8 Get the value of the `SO_LINGER` option on this socket.Áäúüì?< For more information about this option, see [`set_linger`].Á°Žúü¸Ž&# [`set_linger`]: Socket::set_lingerÁ4ꎭ ­í^Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
¢é«y¢ ñŽ¢
ª$òŽüÛ•Dü¸85 Set value for the `SO_LINGER` option on this socket.ÁõúüýHE If `linger` is not `None`, a close(2) or shutdown(2) will not returnÁüÊ‘KH until all queued messages for the socket have been successfully sent orÁüš’DA the linger timeout has been reached. Otherwise, the call returnsÁüã’JG immediately and the closing is done in the background. When the socketÁü²“FC is closed as part of exit(2), it always lingers in the background.Áý“ú\…”¼ž•”úüHE On most OSs the duration only has a precision of seconds and will beÁ¼ê” silently truncated.Á†•úüŽ•HE On Apple platforms (e.g.
oob_inlineÁTÓŸüž¤*üÍ¡:7 Get value for the `SO_PASSCRED` option on this socket.ÁŒ¢úü”¢A> For more information about this option, see [`set_passcred`].ÁÚ¢úüâ¢*' [`set_passcred`]: Socket::set_passcredÁúþœ›£ú«¤°£üš£+ü‘£6D¥¤± ±í^Õ©¢ ®¤¢
¯$¯¤TÃ¥¯–ô°®ô°Ëô°°¯°Õf¡«ü²¨<üò¥:7 Set value for the `SO_PASSCRED` option on this socket.Á±¦úü¹¦MJ If this option is enabled, enables the receiving of the `SCM_CREDENTIALS`Á¬‹§ control messages.Áúþœ¯§ú«¤Ä§ü®§+ü¥§6d¹¨² ²í^™ï¢ ƨ¢
±$Ǩ±&Dͨüœ¬3üª85 Get value for the `SO_RCVBUF` option on this socket.Áÿªúü‡«IF For more information about this option, see [`set_recv_buffer_size`].ÁÕ«úüÝ«:7 [`set_recv_buffer_size`]: Socket::set_recv_buffer_sizeÁ„£¬³ ³í^ÿ¥¢ ´¬¢
²$µ¬4È­²–ô³®ô³Ëô³³²³Õf¤«ƒvüž¯Aüó­85 Set value for the `SO_RCVBUF` option on this socket.Á°®úü¸®HE Changes the size of the operating system's receive buffer associatedÁ¤…¯ with the socket.Á¤¥¯´ ´í^ƒv™ï¢ º¯¢
´$»¯$Á¯üݲ:ü­±:7 Get value for the `SO_RCVTIMEO` option on this socket.Áì±úüô±HE If the returned timeout is `None`, then `read` and `recv` calls willÁ¼Á² block indefinitely.Ádä²µ µí^¹¢ ñ²¢
µ$ò²ü•µLüð³:7 Set value for the `SO_RCVTIMEO` option on this socket.Á¯´úü·´C@ If `timeout` is `None`, then `read` and `recv` calls will blockÁŒÿ´ indefinitely.Á„œµ í^¢é™ï¢ ­µ¢
$®µÐíD´µüŸ¸/üȶ>; Get the value of the `SO_REUSEADDR` option on this socket.Á‹·úü“·FC For more information about this option, see [`set_reuse_address`].ÁÞ·úüæ·41 [`set_reuse_address`]: Socket::set_reuse_addressÁl¦¸· ·í^Õ©¢ ´¸¢
·$µ¸<ʹ·–ô¸®ô¸Ëô¸¸·¸Õf¡«ü‘¼>üó¹;8 Set value for the `SO_REUSEADDR` option on this socket.Á³ºúü»ºHE This indicates that further calls to `bind` may allow reuse of localÁüˆ»KH addresses. For IPv4 sockets this means that a socket may bind even whenÁüØ»41 there's a socket already listening on this port.ÁŒ˜¼¸ ¸í^™ï¢ ª¼¢
¹$«¼A,±¼üþ¿3ü¡¾;8 Get the value of the `SO_SNDBUF` option on this socket.Áá¾úüé¾IF For more information about this option, see [`set_send_buffer_size`].Á·¿úü¿¿:7 [`set_send_buffer_size`]: Socket::set_send_buffer_sizeÁ„…À¹ ¹í^ÿ¥¢ –À¢
º$—À4ªÁº–ô»®ô»Ëô»»º»ÕfÿÑüýÂAüÕÁ85 Set value for the `SO_SNDBUF` option on this socket.Á’ÂúüšÂJG Changes the size of the operating system's send buffer associated withÁ|é the socket.Á¤„ú ºí^ƒv™ï¢ ™Ã¢
¼$šÃ$ Ãü½Æ;üŒÅ:7 Get value for the `SO_SNDTIMEO` option on this socket.ÁËÅúüÓÅIF If the returned timeout is `None`, then `write` and `send` calls willÁ¼¡ÆçÔlÄÆ» »í^¹¢ ÒÆ¢
½$ÓÆü÷ÈMüÑÇ:7 Set value for the `SO_SNDTIMEO` option on this socket.ÁÈúü˜ÈDA If `timeout` is `None`, then `write` and `send` calls will
úƼÁ–úîœâ–úª”ÿ–ú¤›—úȬ¹—ú®»œØ—ú¬õ—úªŒ”˜ú²¤¯˜úÄ”͘ü·–¯ü³–´üª–¿\õ˜ÉÊËÌ Éí^ Êö­ Ëö­ Ìö­™ïÁ Š™Á
Æ$‹™sourceÁ4™™groupÁ,´™³ÊLΙüÁ¡Žü¢TQ Leave a multicast group using `IP_DROP_SOURCE_MEMBERSHIP` option on this socket.Áûúüƒž@= For more information about this option, see [`join_ssm_v4`].ÁÈžúüО(% [`join_ssm_v4`]: Socket::join_ssm_v4Á
úƼ”ŸúŸúª”ÒŸú¤îŸúȬŒ ú®»œ« ú¬È úªŒç ú²¤‚¡úÄ” ¡üŠŸ¯ü†Ÿ´üýž¿dÈ¡ÍÎÏÐ Íí^ Îö­ Ïö­ Ðö­™ïÁ Þ¡Á
Ç$ߡĂ4í¡Ó‚,ˆ¢³ÊL¢¢üܳ5üû±B? Get the value of the `IP_MULTICAST_IF` option for this socket.Á²úüʲHE For more information about this option, see [`set_multicast_if_v4`].Á—³úüŸ³85 [`set_multicast_if_v4`]: Socket::set_multicast_if_v4Á|ã³Ñ Ñí^Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ö­«yÁ ó³Á
È$ô³ü³¶IüžµB? Set the value of the `IP_MULTICAST_IF` option for this socket.ÁåµúüíµA> Specifies the interface to use for routing multicast packets.Áœº¶ÒÓ Òí^ Óö­™ïÁ ζÁ
É$϶³ÊLÕ¶üéº3ü€¹DA Get the value of the `IP_MULTICAST_LOOP` option for this socket.ÁɹúüѹJG For more information about this option, see [`set_multicast_loop_v4`].Á ºúü¨º<9 [`set_multicast_loop_v4`]: Socket::set_multicast_loop_v4ÁŒðºÔ Ôí^Õ©Á ‚»Á
Ê$ƒ»L¼Ê–ôË®ôËËôËËÊËÕf¡«üª¾DüʼDA Set the value of the `IP_MULTICAST_LOOP` option for this socket.Á“½úü›½JG If enabled, multicast packets will be looped back to the local socket.Áüê½;8 Note that this may not have any affect on IPv6 sockets.Á¬±¾Õ Õí^™ïÁ ǾÁ
Ì$Ⱦloop_v4Á<ξü¬Â1üÇÀC@ Get the value of the `IP_MULTICAST_TTL` option for this socket.ÁÁúü—ÁIF For more information about this option, see [`set_multicast_ttl_v4`].ÁåÁúüíÁ:7 [`set_multicast_ttl_v4`]: Socket::set_multicast_ttl_v4Á„³ÂÖ Öí^Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
èp«yÁ ÄÂÁ
Í$ÅÂ,ÝÃÍ–ôήôÎËôÎÎÍÎÕf¤«èpüùÆ>ü„ÄC@ Set the value of the `IP_MULTICAST_TTL` option for this socket.ÁÌÄúüÔÄFC Indicates the time-to-live value of outgoing multicast packets forÁüŸÅJG this socket. The default value is 1 which means that multicast packetsÁüîÅ>; don't leave the local network unless explicitly requested.Á±Æúü¹Æ;葤€Ç× ×í^èp™ïÁ •ÇÁ
Ï$–Ǹ+œÇü¿Ê$ü‹É96 Get the value of the `IP_TTL` option for this socket.ÁÉÉúüÑÉ<9 For more information about this option, see [`set_ttl`].Á’ÊúüšÊ  [`set_ttl`]: Socket::set_ttlÁÆÊØ Øí^¸–Á ÊÊÁ
Ð$ËÊ,ÈËЖôÑ®ôÑËôÑÑÐÑÕf…˜ü Í1üïË96 Set the value of the `IP_TTL` option for this socket.Á­ÌúüµÌLI This value sets the time-to-live field that is used in every packet sentÁ¬†Í from this socket.Á<§ÍÙ Ùí^èp™ïÁ ¯ÍÁ
Ò$°Í¸+¶ÍüÍÒ1ü¸Î96 Set the value of the `IP_TOS` option for this socket.ÁöÎúüþÎJG This value sets the type-of-service field that is used in every packetÁÔÍÏ sent from this socket.ÁìÏúüôÏ\Y NOTE: <https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options>ÁüÕÐ@= documents that not all versions of windows support `IP_TOS`.Áú¬±Ñú®»œÐÑúÛ¬íÑúÿ¬ŒÒúÒü§Ñžü£Ñ£üšÑ®<ÔÒÚ Úí^èp™ïÁ ÜÒÁ
Ó$ÝÒæ+ãÒüú×$üåÓ96 Get
ö ö ÷ ìù ˆ¦ èóÇãp9Üöÿ¥ó è›ó
õ$í›»½$ó›Dߟõ–ôö®ôöËôööõöÕf¾ƒväôŸˆ0øøž_ùúá â úùùŸü— 7$š ÷ø ÷ž_ øç±ÿ¥÷ Ÿ ÷
ùˆ0$¤ ¯ãª ü™¢Mú®»œþ¡¬ý¡üô¡ lœ¢ùúû ùž_ ú
ö ö ÷ ìù ˆ¦ èóÇãp9Üûÿ¥÷ ª¢÷
úˆ0$¯¢»½$µ¢D¢¤ú–ôû®ôûËôûûúûÕf¨€¬·¤í^ýþÿ !¡!¤!ýþÿüÓ¤4,Ö¤üý üí^ ýç±ÿ¥ü ܤü
ý$᤯ãç¤üÑ¥Gú®»œ¶¥¬µ¥ü¬¥ tÔ¥þÿ þí^ ÿ
æLæLçLÐŽéLˆ¦ —óë@M$Tÿ¥ü ã¥ü
þ$襻½$î¥üǦ%,ʦ í^™ïü Цü
ÿ$Õ¦쇧ˆ0ž_‚ƒ !¡!¤!ƒŒ§ü«§4,®§ƒ ž_ ƒç±ÿ¥ ´§
ˆ0$¹§¯ã¿§ü©¨Gú®»œŽ¨¬¨ü„¨ t¬¨ ž_ 
æLæLçLÐŽéLˆ¦ —óë@M$Tÿ¥ »¨
ƒˆ0$À¨»½$ƨüŸ©%,¢© ž_™ï ¨©
ˆ0$­©Ôß©í^†Àcü€ª8ƒªˆŠ ˆí^  c cˆ¢cµ
 `£c¯ã `àB¤GS
Š„ã ‡ª
$ˆª± Žª\ƒ3<‡3× ¤,ˆ…ö\…öƒzd:ÃÛŠr,Vé!AsFdÁ$,AsRawFdÁ<ˆ«+Žø‘L‘­+ºrDÊĺ´0•|L†Œnsu[]IKlô<´£ü„PM A reference to a [`Socket`] that can be used to configure socket types otherÁüÕ" than the `Socket` type itself.ÁøúüüNK This allows for example a [`TcpStream`], found in the standard library, toÁüËOL be configured using all the additional methods found in the [`Socket`] API.ÁúüŸJG `SockRef` can be created from any socket type that implements [`AsFd`]ÁüêGD (Unix) or [`AsSocket`] (Windows) using the [`From`] implementation.Á²úü¶&Ñü¦MJ [`AsFd`]: https://doc.rust-lang.org/stable/std/os/unix/io/trait.AsFd.htmlÁüôXU [`AsSocket`]: https://doc.rust-lang.org/stable/std/os/windows/io/trait.AsSocket.htmlÁÍúÿ»àúüäIF Below is an example of converting a [`TcpStream`] into a [`SockRef`].Á®ú»Áüº*' use std::net::{TcpStream, SocketAddr};ÁåúÌé use socket2::SockRef;Áƒ úü‡ ;8 # fn main() -> Result<(), Box<dyn std::error::Error>> {Áüà 41 // Create `TcpStream` from the standard library.Áüø 85 let address: SocketAddr = "127.0.0.1:1234".parse()?;Áü±
?< # let b1 = std::sync::Arc::new(std::sync::Barrier::new(2));ÁÔñ
 # let b2 = b1.clone();ÁüŒ /, # let handle = std::thread::spawn(move || {Áü¼ FC # let listener = std::net::TcpListener::bind(address).unwrap();Áœƒ  # b2.wait();Áü— 63 # let (stream, _) = listener.accept().unwrap();ÁüÎ B? # std::thread::sleep(std::time::Duration::from_millis(10));Á´‘
 # drop(stream);Á
 # });Á„²

# b1.wait();ÁüÃ
.+ let stream = TcpStream::connect(address)?;Áò
úüö
.+ // Create a `SockRef`erence to the stream.Áü¥,) let socket_ref = SockRef::from(&stream);ÁüÒ/, // Use `Socket::set_nodelay` on the stream.Áü‚" socket_ref.set_nodelay(true)?;Á¬¥ drop(socket_ref);Á»úü¿(% assert_eq!(stream.nodelay()?, true);Áìè # handle.join().unwrap();Ád†Àç<“°ç<»ÁÕ1Åa­Pvßó0ŒjäøÈñü·"…öFu\»Ÿ Õ1í^ôÞÕ1Åa—˜ê!ë!˜ãí^üž  Åa Åaê! §
˜Õ1üÞ:üßMJ On Windows, a corresponding `From<&impl AsSocket>` implementation exists.Áúd­Õ1š¤šÍì•b ç,•b$“Åaœëœã')ôØüŸ41 The caller must ensure `S` is actually a socket.Á$ÛbÅa
œÕ1•b¡¹{ü™8ŒŒ£bžÀcžü¿8ÂŽ £b Ž c cˆ¢cµ
 `£c¯ã `àB¤GS
„ã Æ
ž8± Í<ç3ë3Ž˜¥¦¨©ª«¬­¼½¾¿ÀÁÃÅÆÈÊÍÐÑÒÔÖÙÛÜÞàâãåæèéêëìíîïñóöùúûüýminÁï ÅŸ OsStrÁ,‚ˆŸ¡ÐŽæLŸ¢…öŸ£…öŸ£í럥š ÀŸ¦Ìs\üÑÛŸ§Ý‘¶MŸ¨‚­¾ºŸªû­̺Ÿ«OsStrExtÁDÔ Ï$Ÿ¬´ ,Ÿ®Í «+Ÿ¯Ò÷ ÎNŸ°ø‘ ­+Ÿ±”’ ¯+Ÿ²¹d<
ö+Ÿ³ô‹
…0Ÿ´µ ƒŸµýå­ÖŸ·InstantÁ<¢óTŸ¸¬Ö¦Ÿºžë1Ÿ»ssize_tÁ<ú Ÿ¼„¥õ Ÿ¾Ë¡èŸ¿—K4¯ŽŸÁ—KŸÁ¥LD·¦ŸÂ¥L§ŸÂ–IDÁîŸÃ¾Md˾ŸÄóšŸÅóŸÅåE4ÄŸÇÎGL•ØŸÈñLL ²ŸÉñL³ŸÉ½²¿¬ÊØ Ì¬Ø ÍÌØ Î
SOCK_DGRAMÁTÛ ÄHÐ SOCK_STREAMÁ\ç ÃHÑ
IPPROTO_MPTCPÁl Ò IPPROTO_ICMPÁdû ËÔIPPROTO_ICMPV6Át‰ ÌÕ IPPROTO_TCPÁ\™ ÍÖ IPPROTO_UDPÁ\¦ Î×íÖÅ ÙÍÚÀ ˜ÛÚ£dÿ¥ÜÀp„Ýí×ÜÞ MSG_TRUNCÁL Þß SO_OOBINLINEÁd× ÄOàIpv6MreqÁD»ˆ áIPV6_RECVTCLASSÁ|Ö# éâ
IP_RECVTOSÁTê' ûãIP_TOSÁ4¢) ïä²
LÒ* ÇOå SO_PASSCREDÁ\è, ÊOæIpMreqÁ4-ðèÔ%4£-» é
IPPROTO_IPÁT«- Ïê IPPROTO_IPV6Ád·- ÐëIPV6_MULTICAST_HOPSÁœÅ- ÍìIPV6_MULTICAST_IFÁŒÚ- ÌíIPV6_MULTICAST_LOOPÁœñ- ÎîIPV6_UNICAST_HOPSÁŒ†. Ëï IPV6_V6ONLYÁ\™. ÕðIP_ADD_MEMBERSHIPÁŒ¦. ñIP_DROP_MEMBERSHIPÁ”¹. ŒòIP_MULTICAST_IFÁ|Ñ. ˆóIP_MULTICAST_LOOPÁŒâ. ŠôIP_MULTICAST_TTLÁ„õ. õIP_TTLÁ4‡/ ðöMSG_OOBÁ</ Ú÷MSG_PEEKÁD˜/ Ûø
SOL_SOCKETÁT¢/ »Où SO_BROADCASTÁd²/ ÀOúSO_ERRORÁDÀ/ ¾Oû SO_KEEPALIVEÁdÊ/ ÃOü SO_RCVBUFÁLØ/ ÂOý SO_RCVTIMEOÁ\ã/ €Qþ SO_REUSEADDRÁdð/ ¼Oÿ SO_SNDBUFÁLþ/ ÁO SO_SNDTIMEOÁ\0 QSO_TYPEÁ<š0 ½O TCP_NODELAYÁ\£0 ñƒ IpMreqSourceÁdô2ƒIP_ADD_SOURCE_MEMBERSHIPÁÄ‚3 IP_DROP_SOURCE_MEMBERSHIPÁÌœ3 ¥œ¶6 ϤË6 Њêt±B ôŸŒß’4¯­C§p
]
„®N
ÄÄ?

ç

þ 
”Žñ D¦â å Ñ Ô äÀ ½ Œ¼ ® ± ž ¡ Ž  ~  n q _ b |é
S Dþ
E LŒ6 9  " °   ò$‡ãæÓÖÈˤ§ƒmp^a,…>A/2 #ÿðóàãÐÓ»¾¡¤œŒorRU8;!õøæéØÛÉÌ|”Ñœ¬Ð#j„ä'Rdœ)>|Ì*0Œâ,$„-<-öùÞáÃÆ¡¤_b?B%(äçÆÉ¦©Šru\_EH,/úýßâÇÊ­°z}`cJM03$Ö2tâ2ô÷ÌÏ$¯6ÁIJµ¤²>$Â>Õf”›B»¤ŠC<—C ŸC ¦E ¥C ËC, ¦C8 §C& ©C8¼,«C ±C ÉC, ³C ´C ¿C, µC8argÁ¶C& ¹C8$»C$ ÀC
ÁC, ÃC ÄC ÆC$ ÅC
ÇC*ÍC ÐC £E ÑC ¢E+ ÛC ÜC ñC8«,ÝC âC ðC8
unused_unsafeÁlãC8ûC8¦ŠÿC ƒD8"4…D ŒD ¤D8$ŽD'D, ”D8 •D —D ¢D, ˜D ™D  D, šD8ÂD$ žD
¡D% ¥D8¯D8¦Š²D¶D ¹D7 ºD ¼D ÷D8ÊD ÍD íD8ÀÎD'ÑD8¬ÖÓD'ÕD8µx,×D'ÜD8
last_os_errorÁlÞD ëD ìD8$ùD þD œE8«ŒE ŽE ’E8¦ŠE% ¤EÄ¡GúÉ
Œ‡FúØ
´žFúì
œºFúý
”ÓFú¬ëFú«¤†GüüýE¡üôE¬\§GŸƒv\ùOúþœÃNîgnuÁ”ñN•Oû64ÁܬOü”O4üãNoü¹NŸúandroidÁ¬ÞOü°NÆü§NÑ4þOŸƒv\ùU”æU Unix only API.ÁébL«`”˜`ÌÈ¡c’ü„t* ú”Ȭ“qúƼ²qúÛ¬Óqú¬òqúª”‘rúÿ¬­rúþœÌrú¤érúȬ‡sú®»œ¦súÛ¬Ãsú«¤âsü‰qôü€qÿD˜t¡c¡cÐÞx}t·‚”ƒ‚ Unix-only API.Áú®»œ ‚¬Ÿ‚ü–‚ ‘d”üñ…+üÌ‚-* Check if the message terminates a record.Áþ‚úü†ƒHE Not all socket types support the notion of records. For socket typesÁüÓƒIF that do support it (such as [`SEQPACKET`]), a record is terminated byÁü¡„63 sending a message with the end-of-record flag set.ÁÜ„úüä„30 On Unix this corresponds to the `MSG_EOR` flag.Áœ…úü¤…" [`SEQPACKET`]: Type::SEQPACKETÁú²¤Õ…´Ô…üË…!„þ…‘d
J~üĈ)üΆ30 Check if the message contains out-of-band data.Á†‡úüއC@ This is useful for protocols where you receive out-of-band dataÁüÖ‡)& mixed in with the normal data stream.Á„ˆúüŒˆ30 On Unix this corresponds to the `MSG_OOB` flag.Átш‘d
Öüþ’"ú®»œç’¬æ’üÝ’ ‘d—Àcü§“Bª“ ‘d  c cˆ¢cµ
 `£c¯ã `àB¤GS
„ã ®“
$¯“± µ“ü¢™„­™ˆ0ÊdaCžš¾™„șșŸ˜˜º†üÞ™1LÞ™Ÿ˜˜…öFu\»Ÿ ˆ0΄ü”š-ˆ0Êd šüÆš-ˆ0ŸŸÊdÒšìøšˆ0¡¡Êd¢£¤ýšüœ›Iª›ÃÖÊd  
¢ˆ0¯ã³‚üÁ3 Êd ΄  Ø 
£ˆ0üמ?dåž Êd ΄  òž 
¤ˆ0$÷žüΠBtÜ  ƃv ô 
¥¦Iˆü­¢@l»¢ êŒ¢Ž Ï¢Æõ
$É¢d—¯)üǯ@ú®»œ°¯¬¯¯ü¦¯ |Õ¯˜ Õ“ ˜þZ ê¯
¨±”ŠÐ 
Šü¾±Qú®»œå°¬ä°üÛ° ṯ Õ“ º†ƒv à±
©±”Û±µ í±„²üŒ³Vú®»œõ²¬ô²üë² ”š³š šÕ“ú‚ƒv ²³
ª±”²Šµ ½ŠÇŠüÇ´Dú®»œ°´¬¯´ü¦´ „Õ´ Õ“Õf ë´
«±”H‹ÃHR‹ü͵5ú®»œ¶µ¬µµü¬µ dÛµœ œÕ“‘d íµ
¬±”ï‹üƶ7ú®»œ¯¶¬®¶ü¥¶ ”Ô¶ Õ“ƒv ì¶
­±”]Œl²·”Ÿ·ÌÈþZ¯±³´µ¹üÀÆ üªÅ[X Returns true if this address is an unnamed address from the `AF_UNIX` family (for localÁüŠÆ1. interprocess communication), false otherwise.ÁTÇÆž žþZ® ÒÆ®
¯”L’ǯ–ô°®ô°Ëô°°¯ë üÍAt›ÍŸ ŸþZÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ŸÆ® ªÍ®
±íͱ–ô²®ô²Ëô²²±ÑŸü”Ñ8D—ÑŸ ¡  þZ ¡Æƒv®  Ñ®
³$¡Ñ¦I<§ÑüÁÓOTÄÓŸ¢£ ¢þZ £Æ ¢ç±® ÏÓ®
´$ÐÓ¦I<ÖÓ
abstract_nameÁlóÓü²Û?ü¶ÚLI Returns this address as Unix `SocketAddr` if it is an `AF_UNIX` pathnameÁü‡Û&# address, otherwise returns `None`.Á<¹Û¤ ¤þZÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙþMþMݱÿMÚŠê%€Nê%è)6{}š~É® ÁÛ®
µ$ÂÛüÚÞ*üÝÝDA Returns this address as a `Path` reference if it is an `AF_UNIX`Áü¦Þ/, pathname address, otherwise returns `None`.Á\áÞ¥ ¥þZÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ¥êŒ® íÞ®
$îÞL®ß–ô·®ô·Ëô···Õf÷ Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙæŸ“à–ô¸®ô¸Ëô¸¸¸ÕfÂpÄüÜã4üÄáYV Returns this address as a slice of bytes representing an abstract address if it is anÁü¢â96 `AF_UNIX` abstract address, otherwise returns `None`.Áàâúüèâ\Y Abstract addresses are a Linux extension, so this method returns `None` on all non-LinuxÁtÉã platforms.Á¬ã㦠¦þZÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ¦ç±® ùã®
¹$úãLÉæ¹–ôº®ôºËôºº¹ºÕf÷ Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ´æŸÇç¹–ô»®ô»Ëô»»¹»Õf´Ÿï´ôè4„éÕfü•éL|ªéÕfÐ_
½¡4ºéü•êDl£ê§ §Ð_Õf ¹ê
¾¡˜üöêE|„ëÐ_Õf
¿¡M™üÚëU4èëÕfÕfÕfÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
Õf«y
À¢4ïë´þ뀴D‰ìü‰ïA$—ï¨Õf ¨þZ™ï ®ï
ÁÉdœïÚŠ$¨ïˆðÁ–ô®ôÂËôÂÂÁÂÕf¤«ü“ðD<¡ð©Õf ©þZ™ï »ð
ÃÉd©ðÚŠ$µð“ñÖôÄ®ôÄËôÄÄ
\äˆüÚŒCDèŒÕf –™ï
ÒÉdñŒýŒãŽÒ–ôÓ®ôÓËôÓÓÒÓÕfÔùüîŽ^$üŽ«Õf «΄Õfÿ¥ 
ÔÉd¯ãÃH,ªÓÔ–ôÕ®ôÕËôÕÕÔÕÕfƒvüæ~¬Õf ¬΄Õf”Ò ˜‘
ÖÉdƒ‘¯ã“‘ÃH,´‘|Ì’Ö–ô×®ô×Ëô××Ö×ÕfÀxÿ¥ŸÿÌ„ŸÿÓ”Ö–ôØ®ôØËôØØÖØÕfµ‡ ü÷”=\…•Õf¢Ž
ÙÉd‘• §˜ÙÙƒvüê˜ú®»œÓ˜¬Ò˜üɘ lø˜­®Õf ­
¯¯°å7²ˆ ßã3 œ#®ÕfÁ½ ¡™
ÛÉd‹™»½$›™ÃH,É™üœ›Ÿú®»œ…›¬„›üûš ”ª›¯°Õf ¯
¯¯°å7²ˆ ßã3 œ#°ÕfõÙ Ø›
ÜÉd›»½$Ò›ÃH,€œtžÜ–ôÝ®ôÝËôÝÝÜÝÕf‡‰  úŸŸÿŸÿüí tú®»œÖ ¬Õ üÌ  <û ±²³´Õf ±ØØÎGÜÇÝ¥F*W½§k1²³´Õfÿ¥ ¡
ÞÉdˆ¡±”˜¡ÃH,½¡™¢Þ–ôß®ôßËôßßÞßÕfµ‡ ü¬¢M$º¢µÕf µç±Õfÿ¥ Т
àÉd¿¢¯ãË¢ÃH,×¢ü£à–ôá®ôáËôááàáÕfµ‡ ü°¤`ú®»œ™¤¬˜¤ü¤ l¾¤·Õf 
æLæLçLÐŽéLˆ¦ —óë@M$T·Õfÿ¥ Þ¤
âÉd̤»½$ؤÃH,î¤üã¥a<ñ¥¸¹Õf ¸ç± ¹þZÕfÿ¥ Ц
ãÉdù¥¯ã…¦ÚŠ$‘¦ÃH,¢¦ô§ã–ôä®ôäËôääãäÕfµ‡ ü¨¨ú®»œ‘¨¬¨ü‡¨ „¶¨º»¼Õf º
æLæLçLÐŽéLˆ¦ —óë@M$T» ¼þZÕfÿ¥ â¨
åÉd̨»½$ܨÚŠ$ö¨ÃH,‹©ü³ª^ú®»œœª¬›ªü’ª <Áª½¾¿ÀÕf ½ÄÄåEÈÇÉ¥FÓ%ìHÖ >3¾¿ÀÕfÿ¥ Úª
æÉdɪ±”ÕªÃH,ïªÅ«æ–ôç®ôçËôççæçÕfµ‡ ü¡¬]\¯¬ÕfÕfÕf¹
èÉd»¬optÁǬ¹Ó¬ü¾­BdÇ­Ÿ¦¹¢é
éÐínœü¬°|º°ÕfÕfÕf¢é™ï
êÉdϰë™ ß°¹ï°ÐíDÿ°ü‘²<d”²Ÿ¢é¦¹
ëÐíD¡²ü‡ºWŒ•ºÁÕf Áµi™ï ¾º
ìÉd§º©%L³ºü›Æ)úÅúȬÑÅúªŒìÅúÄ”ƒÆü²Åeü®Åjü¥ÅuLžÆŸñæÕf
íÐíD¨ÆüÁÇ9úÄ”«Ç¤ªÇü¡ÇLÄÇŸÕfÕfž÷
îÉdÎÇcmdÁÚÇüóÈWúÄ”ÝȤÜÈüÓÈLöÈŸÕfÕfÕfÕf™ï
ïÉd€Éget_cmdÁ<ŒÉset_cmdÁ<œÉ—È$¬ÉßÊï–ôð®ôðËôððïðÕfÔùü†ÌZúÄ”ðˤïËüæËd‰ÌŸÕfÕfÕfÕf™ï
ñÉd–̦Ÿ <¢Ì¶Ÿ <²Ì—È$ÂÌöÍñ–ôò®ôòËôòòñòÕfÔùüˆÏWTÏÕfÕfÕfÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
¥«y¥ôôÍ쀤 ¨Ï
ó€¤ Éd«Ïë™ ·Ï¹ÃÏ*,ÚÑó–ôõ®ôõËôõõóõ€¤ Õf¤«€¤ ÍÑÛÑÛÌsÓÛásÝÔÛ»ÝÍõƒ«%9€¤ üÂÓwT×ÓÕfÕfÕf€¤ ™ï¥÷÷£¤ âÓ
ö€¤ ÉdêÓë™ úÓ¹ŠÔpayloadÁ<šÔ:<ýÕö–ôø®ôøËôøøöø€¤ ÕfÔùüˆÖ:TœÖ Âö­Á¢ ­ÖÄÚŠóü·Ø8dÅØÁ¢ö­
úË¡Ξü¦Ù<\ºÙà Ãï®ú¥ ÌÙ
ûÚŠxŸüÚ7l«Úú¥ï®
üÚŠá ü¦Ýƒ ú䌎ÛúÛúÿ¬¾Ûú¤ÙÛúȬóÛú®»œŽÜúÛ¬§ÜúªŒÂÜú²¤ÙÜúÄ”óÜú«¤‹ÝüˆÛšü„ÛŸüûÚªDºÝÄÅ Äö­ Åž^ûÈ ÓÝ
ýʳÊy¤”Ÿì”ŒìÌÈí^ÿüžùT ú”Ȭ…÷úƼ¤÷úÛ¬Å÷ú¬ä÷úÿ¬ƒøúþœ¢øú¤¿øúÈ¬Ýøú«¤üøüûöœüòö§D¬ùÆ Æí^Õf±ëþ µùþ
ÿ$¶ùÃH,¼ùtåúÿ–ô®ôËôÿÕfÀxˆ´ÀÚŸÿü´HúÄ”š¤™üÇ Çí^™ïþ Ïþ

close_on_execÁlÖÜŠ²í^ƒŽ,ƒü¬²!,¯²È Èí^ÎNÎNÒ÷ÐNÉdä+ÑNñ÷ä+§]òÞ^È µ²
ƒ$¶²ôä³í^…¬+䉴LŒ´É Éí^Õf –´
$—´üë´$¯e‡ëü–µ'$™µí^¯e
sockÁ$žµüä¶ í^‰°+ì‹·\Ž·í^Õfˆˆ
\¨üð·$í^‹ëü›¸%$ž¸¯eí^ŠŠ
Éd£¸üæ¹ í^®+üº1\—ºÕfí^ŒŒ
Éd£ºTÔ4DÙ”é4]Ùt…5oÙ„5€ÙüÎ6’Ù\ø:éb”´Í;
­ÜÈ@Õf›ëÜê@$í@ébÕfšš
¯i­L E¡cž´Fü°E(% Type corresponding to `SOCK_STREAM`.ÁÝEúüåE# Used for protocols such as TCP.Á4—Fœœ¡c¬ŸGüÃF'$ Type corresponding to `SOCK_DGRAM`.ÁïFúü÷F# Used for protocols such as UDP.Á,©Gœœ¡cÌ‹N¡c ë Ì«N$®NÕf¡cŸŸ
 ¿
°ÌàNÕf¢ë¢Ì€O$ƒO¡cÕf¡¡
¢¿l°l¸RÙc¤¥¦§¨ÔøRüÌR'$ Protocol corresponding to `ICMPv4`.Á4S££ÙcÔãSü·S'$ Protocol corresponding to `ICMPv6`.Á4íS££Ùc¼ÍTü¤T$! Protocol corresponding to `TCP`.Á×T££Ùc¼±UüˆU$! Protocol corresponding to `UDP`.Á»U££ÙcÌ·VüŒV&# Protocol corresponding to `MPTCP`.ÁúþœòUÜìU,ÁV££Ùcì™^Ùcªëªì½^$À^ÕfÙc©©
ª»E´ìú^Õf¬ë¬ìž_$¡_ÙcÕf««
¬»¤´tøaú®»œáa¬àaü×a üÙd'üb74 Check if the message contains a truncated datagram.ÁÉbúüÑb63 This flag is only used for datagram-based sockets,ÁÜŒc not for stream sockets.Á¬cúü´c52 On Unix this corresponds to the `MSG_TRUNC` flag.Áüîc@= On Windows this corresponds to the `WSAEMSGSIZE` error code.Áú²¤½d´¼dü³d!dæd‘d­­
®ʶñÕü±eKH A version of [`IoSliceMut`] that allows the buffer to be uninitialised.Áýeúüf'$ [`IoSliceMut`]: std::io::IoSliceMutÁ„Éfˆ0±±ãhßã3 œ#°²ÊdãhñÕCÊdãh¯¯
°ˆ0ÚfÌÞf¯¯Êdüûf,ˆ0´´ãhµÀcµ€gü®g:±gÊËÌ Êãh Ë c cˆ¢cµ
 `£c¯ã `àB¤GS
̄㳠µg³
µˆ0$¶g×¼gì¤hˆ0··ãh¸©hüäiBüÈh;8 Creates a new `MaybeUninitSlice` wrapping a byte slice.Áˆiúdi # PanicsÁ¡iúü©i63 Panics on Windows if the slice is larger than 4GB.ÁëiÃÖãh
¸ˆ0¯ã¹üìj'ˆ0ººãh»¼ê!ë!¼ñj\šk4Ÿk¹¹΄üÀk%,ÃkÍ Íãh Í΄¹ Ék¹
¼ˆ0$Êkü‹l*ˆ0¾¾ãh¿÷!¿lü¼l1L¿lÎ Îãh Î΄½ Él½
¿ˆ0$ÎlŒïsµiÁÂÃüït"ü‡t96 Returns a new, empty set of TCP keepalive parameters.ÁütµiÀÀ
Áü­4ü˜{KH Set the amount of time after which TCP keepalive probes will be sent onÁ¬è{ idle connections.Á|úüŠ|74 This will set `TCP_KEEPALIVE` on macOS and iOS, andÁüÆ|>; `TCP_KEEPIDLE` on all other Unix operating systems, exceptÁü‰}=: OpenBSD and Haiku which don't support any way to set thisÁüË}B? option. On Windows, this sets the value of the `tcp_keepalive`Áü’~# struct's `keepalivetime` field.Áº~úüÂ~?< Some platforms specify this value in seconds, so sub-secondÁü†" specifications may be omitted.ÁLºµiñæµiÀÀ
ÂÄÂÒMÎÂüΊ<ü¹€JG Set the value of the `TCP_KEEPINTVL` option. On Windows, this sets theÁüˆDA value of the `tcp_keepalive` struct's `keepaliveinterval` field.ÁÑúüÙ85 Sets the time interval between TCP keepalive probes.Á–‚úüž‚?©Ô üâ‚"òÔ ú”ȬœƒúƼ»ƒú۬܃ú¬ûƒúÿ¬š„úÉ
Œ¹„úØ
´Ô„úþœô„úì
œ‘…ú¤®…úý
”Ì…ú¬è…ú⬇†ú«¤¦†ü’ƒ¯ü‰ƒºlÛŠµiñæµiÀÀ
ÃÞM`Äüô˜)ü¤—0- Configuration of a `sendmsg(2)` system call.ÁÕ—úüÙ—OL This wraps `msghdr` on Unix and `WSAMSG` on Windows. Also see [`MsgHdrMut`]Áü©˜)& for the variant used by `recvmsg(2)`.Áú®»œÝ˜¬Ü˜üÓ˜ 4ÿ˜óEÅ€FÆFÇÅÆÇ€F€Füâ™QÄÄåEÈÇÉ¥FÓ%ìHÖ >3óE€FFÓ%ìHÖ >3ÈÉ,†™,D”™”¤™,¤™ÄÄÕ“šTâ™ÄÄ…öFu\»Ÿ óEþZ €FæLæLçLÐŽéLˆ¦ —óë@M$T€F Fç±üÙš;ú®»œÂš¬Ášü¸š óEË€FÌFÍÌÍË×Ý ÎÏÐÑÒ,Þš,åšDìšüÿ›.ü››52 Create a new `MsgHdr` with all empty/zero fields.Á†œ×Ý ÊÊ
ÎóE€FŸ9üè*' Set the address (name) of the message.Á—žúüŸžJG Corresponds to setting `msg_name` and `msg_namelen` on Unix and `name`Áìîž and `namelen` on Windows.ÁL—Ÿ×Ý «ß ×Ý ÊÊ
ÏóE€FF$¥ŸÚбÊüÅ¡Aü™ %" Set the buffer(s) of the message.ÁàúüË MJ Corresponds to setting `msg_iov` and `msg_iovlen` on Unix and `lpBuffers`Áü¡# and `dwBufferCount` on Windows.ÁdÌ¡Ï×Ý €F
æLæLçLÐŽéLˆ¦ —óë@M$TÏ×Ý Êù¡Ê
ÐóE€FF$Ý¡»½$ã¡ü®¤:ü‹£*' Set the control buffer of the message.Áº£úü£IF Corresponds to setting `msg_control` and `msg_controllen` on Unix andÁ̤ `Control` on Windows.Ádµ¤×Ý óß ×Ý ÊÊ
ÑóE€FF$Ƥ¯ãÝËüê¦6üï¥! Set the flags of the message.Á•¦úü¦HE Corresponds to setting `msg_flags` on Unix and `dwFlags` on Windows.ÁTñ¦×Ý Õf×Ý ÊÊ
ÒóE€FF$€§ÃH«Ìü‘¨Jú®»œú§¬ù§üð§ ªGÔ€FÕFÖÔÕÖ‰j×Àc×,–¨,¨D¤¨üâ¨:å¨ÐÑÒ Ð‰j Ñ c cˆ¢cµ
 `£c¯ã `àB¤GS
Ò„ãÓ é¨Ó
תG€FF$ê¨×ð¨ü«,ü©0- Configuration of a `recvmsg(2)` system call.Áó©úü÷©PM This wraps `msghdr` on Unix and `WSAMSG` on Windows. Also see [`MsgHdr`] forÁüȪ%" the variant used by `sendmsg(2)`.Áú®»œøª¬÷ªüîª Lš«óEÙ€FÚFÛÛÚÙÅÝ ü€¬ØØÎGÜÇÝ¥F*W½§k1óE€FF*W½§k1ÜÝ,¤«,««D²«”«,«ØØÕ“›T€¬ØØ…öFu\»Ÿ óEþZ €F¯¯°å7²ˆ ßã3 œ#€F Fç±ü«­>ú®»œ”­¬“­üŠ­ óE߀FàFáàßá«ð âãäåæç,°­,·­D¾­ü×®1üð­85 Create a new `MsgHdrMut` with all empty/zero fields.ÁÞ®«ð ÞÞ
âóE€FFü¥²=üư2/ Set the mutable address (name) of the message.Áý°úü…±JÜá ìÔ±°â L¬²«ð ÿñ «ð ÞÞ
ãóE€FF$º²ÚŠiÑüæ´Nü²³-* Set the mutable buffer(s) of the message.Áä³úüì³Múã ü¾´#Òä dí´Ó«ð €F
¯¯°å7²ˆ ßã3 œ#Ó«ð Þ§µÞ
äóE€FF$þ´»½$„µüηKü£¶2/ Set the mutable control buffer of the message.ÁÚ¶úüâ¶Ióæ ̰·Æç dÕ·«ð F΄«ð ÞÞ
åóE€FF$æ·¯ã²Òü´¹ üй%" Returns the flags of the message.Á,»¹Ô Ô«ð ‘dÞ Á¹Þ
æóE€FF$¹üø»"ü‰º*' Gets the length of the control buffer.Á¸ºúüÀº]Z Can be used to determine how much, if any, of the control buffer was filled by `recvmsg`.Á¢»úüª»IF Corresponds to `msg_controllen` on Unix and `Control.len` on Windows.Á\ÿ»Õ Õ«ð ƒvÞ ‹¼Þ
çóE€FF$Œ¼üô¼Mú®»œÝ¼¬Ü¼üÓ¼ ªGé€FêFëëéêÚjìÀcì,ù¼,€½D‡½üȽ:˽Öר ÖÚj × c cˆ¢cµ
 `£c¯ã `àB¤GS
Ø„ãè Ͻè
ìªG€FF$н×Ö½´ã ¦
skipÁlÔ „Ò  ú  æ2 ™! ¸!, š!8ì6<!& ¢!8¯¤! §! ¶!, ©!8sectionÁ<ª!& ±!8¯³!*º! ½! ë"8¨4Ç! Í! Î! å" 8†ILÜ! å! æ! ï!8__Áç!8introÁ,ê!$ ð!8†ILþ! ‡" ˆ" £"8Ò
‰"8ú$Œ", "8ì6<" ™" ¢", š"8Ü€
<"$ ¤"8†IL²" »" ¼" Ú"8Ò
½"8â<À", È"8ì6<É" Ð" Ù", Ñ"8Ü€
<Ò"$ Û"% ì" # ¶#8ú$#& #, ˜#8ì6<™#&  #8¯¢# ¥# ´#, §#8Ü€
<¨#& ¯#8¯±#*¸# »# ²$8¨4Å# Ë# Ì# ¬$8†ILÚ# ã# ä# í#8Ò
å#8ß
,è#$ î#8†ILü# …$ †$ ¡$8Ò
‡$8ú$Š$, $8ì6<$ —$  $, ˜$8Ü€
<™$$ ¢$% ³$ ×$ ÿ$8â<Ø$& ß$, á$8ì6<â$& é$8¯ë$ î$ ý$, ð$8Ü€
<ñ$& ø$8¯ú$*% „% þ%8¨4Ž% ”% •% ø%8†IL£% ¬% ­% ¶%8Ò
®%8ß
,±%$ ·%8†ILÅ% Î% Ï% í%8Ò
Ð%8â<Ó%, Û%8ì6<Ü% ã% ì%, ä%8Ü€
<å%$ î%% ÿ% —&  &8Ò
˜&8ß
,&*¢& ¥& ø&7B\n\nAdditional documentation can be found in manual of the OS:\n\nÁü¯&D% ù& ž' Å'8Ò
Ÿ'8ú$¢', §'8ì6<¨'& ¯'8¯±' ´' Ã', ¶'8Ü€
<·'& ¾'8¯À'*Ç' Ê' à08¨4Ô' Ú' Û' Ú0p79 * DragonFly BSD: <https://man.dragonflybsd.org/?command=Áüé';$ ¤(8ÔL¦( ¯( °( ¹(, ±(8ì6<²($ º(7 &section=Á\¼($ Ç(8ÔLÉ( Ò( Ó( Ü(, Ô(8Ü€
<Õ($ Ý(7>\nÁ,ß($ ä(77 * FreeBSD: <https://www.freebsd.org/cgi/man.cgi?query=Áüò(9$ «)8ÔL­) ¶) ·) À), ¸)8ì6<¹)$ Á)7 &sektion=Á\Ã)$ Î)8ÔLÐ) Ù) Ú) ã), Û)8Ü€
<Ü)$ ä)7ª
,æ)$ ë)7/ * Linux: <https://man7.org/linux/man-pages/manÁüù)1$ ª*8ÔL¬* µ* ¶* ¿*, ·*8Ü€
<¸*$ À*7Â*$ Å*8ÔLÇ* Ð* Ñ* Ú*, Ò*8ì6<Ó*$ Û*7Ý*$ à*8ÔLâ* ë* ì* õ*, í*8Ü€
<î*$ ö*7.html>\nÁTø*$ +7n * macOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/Áü+p$ €,8ÔL, , Œ, •,, ,8ì6<Ž,$ ,7ô
˜,$ ,8ÔL, ¦, §, °,, ¨,8Ü€
<©,$ ±,7%.html> (archived, actually for iOS)\nÁü³,'$ Ú,7# * NetBSD: <https://man.netbsd.org/Áüè,%$ -8ÔL- ˜- ™- ¢-, š-8ì6<-$ £-7ô
¥-$ ¨-8ÔLª- ³- ´- ½-, µ-8Ü€
<¶-$ ¾-7ª
,À-$ Å-7% * OpenBSD: <https://man.openbsd.org/ÁüÓ-'$ ú-8ÔLü- …. †. ., ‡.8ì6<ˆ.$ .7ô
.$ •.8ÔL—.  . ¡. ª., ¢.8Ü€
<£.$ «.7ª
,­.$ ².7l * iOS: <https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/ÁüÀ.n$ ®/8ÔL°/ ¹/ º/ Ã/, »/8ì6<¼/$ Ä/7ô
Æ/$ É/8ÔLË/ Ô/ Õ/ Þ/, Ö/8Ü€
<×/$ ß/7.html> (archived)\nÁ¬á/$ ö/7- * illumos: <https://illumos.org/man/3SOCKET/Áü„0/$ ³08ÔLµ0 ¾0 ¿0 È0, À08ì6<Á0$ É07ª
,Ë0$ Ð0% á0 1 »18Ò
18â<•1, 18ì6<ž1& ¥18¯§1 ª1 ¹1, ¬18Ü€
<­1& ´18¯¶1*½1 À1 ã28¨4Ê1 Ð1 Ñ1 Ý27U * Windows: <https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-Áüß1W$ ¶28ÔL¸2 Á2 Â2 Ë2, Ã28ì6<Ä2$ Ì27ª
,Î2$ Ó2% ä2œÚä™ The address of a socket.ÁúüºLI `SockAddr`s may be constructed directly to and from the standard libraryÁü‡A> [`SocketAddr`], [`SocketAddrV4`], and [`SocketAddrV6`] types.ÁþZ Žy†:¹ïðÌôîî¶qt“îîèpg7g7LþZòÙòg7g7Ù ÙþZþZñÒñ
òg7üƒø üùôJG A local interface specified by its index or an address assigned to it.ÁÄõúüÈõOL `Index(0)` and `Address(Ipv4Addr::UNSPECIFIED)` are equivalent and indicateÁü˜öC@ that an appropriate interface should be selected by the system.Áúîœïöúÿ¬ˆ÷ú¤£÷ú®»œ½÷úÛ¬Ö÷üéöüåöŠüÜö¼Œøž^º8¹¶¨gôõ÷øõöèpž^øùö­ž^¼ªø An interface index.Áóó
õèpž^óóú¥
ÌøóóèpüÖø(% An address assigned to an interface.Áóó
øö­ž^óó—§
D‹ùóóö­}o}oñž^ûÀcû}o}oÚÛÜ Úž^ Û c cˆ¢cµ
 `£c¯ã `àB¤GS
Ü„ãúÏû÷ú
û}o±}oÈÐí^ýëýðз кÐ_í^üü
ý¡¿ÈÑí^ÿëÿðÑ· Ѻ•`í^þþ
ÿ¡¿ÈÒ í^ëðÒ· ÒºÜ`í^
¡¿ÈÓ!Ð_ƒëƒðÓ· Óºí^Ð_
ƒ¡¿ÈÔ"•`…ëðÔ· Ôºí^•`
¡¿ÈÕ#Ü`‡ëðÕ· Õºí^Ü`
¡¿ðØâ%éb‰ÀcøØBØÝÞß Ýéb Þ c cˆ¢cµ
 `£c¯ã `àB¤GS
ß„ãˆØˆ
 رØðáâ&¡cÀcøáBáàáâ à¡c á c cˆ¢cµ
 `£c¯ã `àB¤GS
â„ãŠáŠ
 á±áðéâ'ÙcÀcøéBéãäå ãÙc ä c cˆ¢cµ
 `£c¯ã `àB¤GS
å„ãŒéŒ
 é±éÁÔüð6;8 Specification of the communication domain for a socket.Á¬7úü°7MJ This is a newtype wrapper around an integer which provides a nicer API inÁüþ7PM addition to an injection point for documentation. Convenience constants suchÁüÏ8NK as [`Domain::IPV4`], [`Domain::IPV6`], etc, are provided to avoid reachingÁüž9$! into libc for various constants.ÁÃ9úüÇ9OL This type is freely interconvertible with C's `int` type, however, if a rawÁü—: value needs to be provided.ÁG4è:éb9sÊñ
ÃïÕfébÁÔ4ÕfébŽŽ
,ï:ŽŽÕf –À:Žéb‹¨‹¨‹¨éb‹¨‹¨éb”Ù‹¨‹¨æ æébébÆ:
‹¨©©éb–©©©ç çéb˜Í:
©¢©¢©éb¢©¢©éb™·ß¢©¢©èé èéb ééb˜Ñ:˜
¢©¹
¢©
ÕüA96 Specification of communication semantics on a socket.Á×AúüÛAM†³
ü©BPݳ
üúBMJ as [`Type::STREAM`], [`Type::DGRAM`], etc, are provided to avoid reachingÁüÈC$µ
íCúüñCOɵ
üÁD¢¶
H$E¡coñK¦¯^œÕf¡c
Õ4Õf¡cšš
,—EššÕf šêD¡cŽ­Ž­Ž­¡cŽ­Ž­¡c Ù Ž­Ž­ê ê¡c¡cŸðDŸ
 Ž­®®¡c¢¢®®®ë ë¡c¡œ÷D¡
¢®¥®¥®¡c¥®¥®¡c¥·ß¥¥®¥®ìí ì¡c í¡c¤ûD¤
¥¥®¹
¥®ü±OGD Protocol specification used for creating sockets via `Socket::new`.ÁùOúüýOM†³
üËP52 addition to an injection point for documentation.ÁQúü…QOɵ
üÕQ¢¶
ID¦RÙc¡$Í…Z §¨ÕfÙc4ÕfÙc¦¦
§,¯R¦¦Õf žþQÙc‘°‘°‘°Ùc‘°‘°Ùc¬Ù¬‘°‘°î îÙcÙc«Ÿ„R«
¬‘°±±˜Ùc®®±±±ï ïÙc­ R­
®±¨±¨±Ùc¨±¨±Ùc±·ß±¨±¨±ðñ ðÙc ñÙc°¡R°
±¨±¹
¨±¥ÕüÓ_  Flags for incoming messages.Áô_úüø_A> Flags provide additional information about incoming messages.Áú®»œÄ`¬Ã`üº` JLÄa‘dVÔ¦ÈU¯Ç³´Õf‘d¥Õ4Õf‘d²²
³,Îa²²Õf ¢œaš‘dÉ´É´É´‘dÉ´É´‘d¸Ù¸É´É´ò ò‘d‘d·£¢a·
¸É´œºó ó‘d¹¤©a¹
ºàµàµ‘dàµàµ‘d½·ß½àµàµôõ ô‘d õ‘d¼¥­a¼
½àµ¹
ർŽnü—m30 Configures a socket's TCP keepalive parameters.ÁËmúüÏm&# See [`Socket::set_tcp_keepalive`].ÁKd™nµiYùús§;]¿ÀÁ´©o$©o¾¾¢éÔ®qúȬÜoú®»œûoúÛ¬˜púªŒ·pú²¤ÒpúÄ”ðpúqüÒoÔüÎoÙüÅoäD®q¾¾¢é¤ÖsúȬåqú®»œ„rúÛ¬¡rúâ¬ÀrúªŒßrú²¤úrúÄ”˜súsüÛqóü×qøüÎqƒ<Ös¾¾©ü¾¾žµiÃÀcþ¾ö÷ø öµi ÷ c cˆ¢cµ
 `£c¯ã `àB¤GS
ø„ã¦ÿmÂ
þ±¾¿¿ŸµiÅÙÅ¿¿ù ùµiµiħ†nÄ
Å¿üº9ýº9‘ýº9þº9¡þº9¾ÿº9zº9tº9^º9Yº9Nº9©º9xº9 ƒ`º9—`º9ûº9 ˜fº9º9 Àgº9©º9º9 Ó8º9ª&º9 á@º9@+º9 ®Iº9à/º9“5º9[6º9ç;º9÷@º9Bº9 Dº9Fº9ùJº9ÝRº9 ¼ƒº9ÂTº9 Ö‡º9²Uº9 Šº9ñLº9 º9´–º9žJº9 È›º9ß›º9Hº9 ý º9ÛBº9 Ú¤º9¯Aº9 ²§º9?º9 Ñ­º9è­º9=º9 £³º9º³º9h7º9 þ¾º9è5º9$3º9 ¼Çº9ËǺ9ÏǺ9ÓǺ9¢.º9 àʺ9Œ-º9 í̺9o,º9 ¢Ïº9¬Ïº9›'º9 ŠÓº9”Óº9.&º9 ¨×º9³!º9 ûÙº9 ˆÚº9| º9 Áܺ9 Öܺ9!º9 Ýߺ9çߺ9 óߺ9mº9 Éãº9Óãº9 çãº9.º9 Îæº9Öæº9Úæº9Þæº9º9º9º9æº9º9
º9Ì
º9T º9ê º9yº9Ôº9º9 º9ëº9ܺ9Žº9¤þº9º9âûº9Óúº9Ïùº9º9 ûùº9 ‘úº9øóº9 Ãþº9 Ùþº9Éñº9 9 Œˆº9åïº9 κ9 ìº9íº9 ¡™º9 »™º9 Ù™º9Öêº9 õ¡º9 ¢º9 ­¢º9º9º9 ය9Íæº9º9º9º9º9±Þº9º9»Úº9غ9Öº9¡Òº9 ´þº9Äк9 €…º9º9áͺ9ƒÌº9ªÊº9º9œÇº9ŸÆº9ƒÅº9º9ÁÁº9Á¿º9º9µº9 Іº9Û³º9º9×°º9 ‘™º9°º9 ù›º9Šœº9¯º9 ¯ º9º9 »¢º9Ì¢º9º9 줺9•¬º9 ô¥º9þ¥º9º9«º9 ħº9Õªº9 ̨º9Ö¨º9‚ªº9¶©º9 ‘ªº9¥ªº9º9µº9º9 к9äº9º9 ¸“º9Ñ“º9>„º9Úƒº9„ƒº9º9µ‚º9 ý¯º9E‚º9º9Hº9×€º9m€º9Iº9X~º9¤}º9 °Ñº92}º9 ßÓº9Ä{º9šzº9¯wº9ùuº9Çtº9tº9Psº9nº95mº9Tkº9¿™º9œjº9ö›º9Ziº9¬¡º9°¡º9´¡º9¯hº9gº9褺9"gº9 —¦º9ðeº9쨺9 ü¨º9eº9⪺9檺9ꪺ9)cº9‘]º9]º9¶[º9 íݺ9³Zº9ÏYº9Yº9˜Xº9lLº9 Ágº9Õgº9 Jº9Jº9¿>º9s;º9 õ¨º9‰©º9<6º9È4º9V3º9!2º9 Û½º9コ9!º9Õº9Ûº9}oº9¹º9Ø º9عº9öº9á º9Ṻ93º9é º9鹺9èº9bº9Ϻ9Õº9œº9º9ƒº9º9vº9ðº9]º9cº9 º9ÿ º9l º9r º9ƺ9̺9¾º9_º9*®ÁÙîþœ­ £ÀÊÞ3 Type::DGRAMÁì—KŽstd::io::IoSliceMutÁö ºróÎGstd::io::ErrorKindÁstd::ioÁÀEINTRÁ Domain::IPV4Ástd::io::ErrorKind::InterruptedÁLSocket::set_tcp_keepaliveÁ Domain::IPV6ÁåE Type::STREAMÁïå
ì—Kæ
óºÎGØ¿æ
ÀÖæ
¦çæ
åEÄ«ç
ñæ
‚ç
Éç
ßç
ïå
—Kìóšæ
º¿æ
ËKÎGÖæ
çæ
À«ç
ñæ
‚ç
Éç
åEßç
 ©[©[ª¼ݱƒ\ݱ©[ƒ\ݱ“¼ƒ\½¼¯std::netÁž"ê_Socket::set_recv_buffer_sizeÁ(À Socket::bindÁSocket::join_multicast_v6ÁSocket::recv_vectoredÁ¿%Socket::recv_fromÁê_Socket::set_out_of_band_inlineÁ(©ê
×+Socket::set_tosÁÀåê
đ
£,½ë
(Þ^ Socket::newÁ×+ðë
đ
£,Ó Socket::set_keepaliveÁ½ë
Î.®ì
Þ^Ì#)Socket::set_multicast_ttl_v4Á×+ðë
£,ë)Ó Ùì
Socket::acceptÁÎ.®ì
Þ^Ì# Socket::recvÁ)“í
­-Socket::send_toÁë)Ó Ùì
Ôí
Socket::set_multicast_if_v4ÁÎ.“í
Ì#)üí
ü.­-TcpKeepalive::with_timeÁî
ë)Socket::accept()Áô!Ôí
Çî
io::Read::readÁü.üí
Ε
ó­-î
³ï
Socket::join_multicast_v4_nÁô!Çî
È+Ùï
á ü.Socket::set_recv_tclass_v6ÁŒï
!ó³ï
“ð
ô!Socket::connectÁÈ+Ùï
Óð
Socket::peek_fromÁóš!â%“&Ipv4Addr::UNSPECIFIEDÁ“ð
È+“ñ
Socket::set_multicast_loop_v6Áó#Óð
¸ñ
!std::net::UdpSocketÁâ%Socket::set_no_peercredÁ“&çñ
“ñ
’ò
ó#Socket::recv_from_vectoredÁ¸ñ
Êò
â%çò
Socket::set_reuse_addressÁ“&çñ
Socket::set_multicast_hops_v6Á¬Öó#’ò
Ÿó
std::net::TcpStreamÁÊò
ð#Socket::new_rawÁçò
ñLÕó
boundÁþó
¬Ö±"Ÿó
·ô
â*Úô
²ñLSocket::set_passcredÁÕó
ÿô
Æ&Socket::set_recv_tosÁþó
¬Ö¦±"´)·ô
‡#â*Úô
²É!Socket::accept_rawÁñL²ÿô
Æ&»õ
io::Read::read_vectoredÁåõ
±"´)â*­Socket::set_lingerÁÉ!»õ
²œ+¹ö
Æ&Socket::set_ttlÁåõ
ëö
â ´)‚­¢÷
É!‚%œ+¹ö
Ù÷
Socket::out_of_band_inlineÁëö
Socket::send_to_vectoredÁô%Socket::set_broadcastÁ#¢÷
‚%­¾ºSocket::set_multicast_loop_v4Áœ+Ù÷
ªø
÷&ö+Socket::set_nodelayÁÏø
ô%ñø
#%§ù
io::ReadÁŠªø
÷&ÈISocket::send_vectoredÁö+Ïø
¾Mäù
ô%ñø
#Socket::join_ssm_v4礝
ú
keepalive timeÁŠ÷&ö+¿ú
ÈI¾Mäù
ÿú
ú
à £û
Šéº Socket::sendÁÁ"¿ú
ÈIóæ-¾M¾Socket::join_multicast_v4Áÿú
Socket::set_only_v6Á£û
ºü
Á"æ-Ù'¶ü
ô, connectedÁÚü
Socket::peek_senderÁ©*ºrü
Á"æ-Ç/á"Ù'Socket::set_send_buffer_sizeÁ¶ü
ô,ý
Socket::set_multicast_if_v6ÁÚü
±ý
©*Ç/’ê
á"Ù'öý
Ôê
ô,ý
¨þ
¿%¢ë
©*±ý
Ç/’ê
ê_á"©ê
öý
ÀÔê
åê
¨þ
¿%¢ë
!·ô
’ê
ž"ºrÞ^´ŠÆ1À?https://doc.rust-lang.org/stable/std/os/unix/io/trait.AsFd.htmlÁFhttps://doc.rust-lang.org/stable/std/os/windows/io/trait.AsSocket.htmlÁ·ô
‡#’ê
Þ^º´ŠéÆ1™€ ÀÝ€ ·ô
’ê
º´,Þ^ŠÆ1À™€ Ý€  Type::SEQPACKETÁ SEQPACKETÁ¾‚ óÒ‚ ó¾‚ Ò‚ óšé!ö!ØŠ ³ºµßíßÃLðì ãàéæŒ""“""Û Þ ã ŒMÃMÐLÇLùMÌìÍì“í²—6à Ÿ!­+¯+ØŠ ³ºµßíßÃLðì ãàéæŒ""“""Û Þ ã ŒMÃMÐLÇLùMÌìÍì“í²—6é!,«+­+ØŠ ³ºµßíßÃLðì ãàéæŒ""“""Û Þ ã ŒMÃMÐLÇLùMÌìÍì“í²—6Ï$,«+­+¯+ØŠ ³ºµßíßÃLðì ãàéæŒ""“""Û Þ ã ŒMÃMÐLÇLùMÌìÍì“í²—6ƒ€ƒ€AddressIndexassertion failed: fd >= 0 TcpKeepalive timeintervalretriesÊš;ƒ88ƒ88̆ Õ† Þ† ì† ø† ˜‡ «‡ ¶‡ Ň Ó‡ ò‡ ˆ ˆˆ òV —õZ/ÜTRçD)ð°ô ¢j4 qXøѹèÒ£ü}ê‰fË€öž¾¹"%þ’ªßs‹a¯hTÖ»@¼Y
½®ó~‰¹åß¶4ïV‘ıÍ·@Œµ Èh¸îQö4þlç3‘¯,lJÅÿm$‹g2œµ§¸..ÆF=ù‡‹I“bÍkdKðŠâƒof¬_š=+ðI¿§U¢q­ÊŒ ð,ƒ3Žy*Ù?òmE,x´TíŒ4Wk—‚Lº`Ü€$™ÙK3¥§V#»äýúFñMhaI'PýÿHiQ|ü}JÂýÂU†$uâ?{ÒD÷`Þ! JI¥¨î¼EøÕI2ט±ß†ÚuÒ ¸ '¬ï bJk}\^X;÷jzÒ02í†PòHr¬Üððì*bÒæývÐçHGßú€£å_†ñŠ2²\7¹Ngô”§Îx7­p,â‰Ï£÷±í]!¨@¦îa¸ïšýrÃÿ<³¦œ>;п(Ë{b“*øN¢|¼(ý…íAfm$äZÝ,¯˜©}N¿„HLX¬=Gi¿ÈmÁuvù
¹³ŒÊ ­
9È{^ãžd½Ì¦¨)Í­BCòŸv‚cNqø·²Ùfõ•½/Vòbw­«Š? fq} ÀÎdç2sTX¦ex~Sí襙G[KzL@d0Ý ¨.žò´ÿ€m18Œ“M ŠÒä“GeÞ%õ"<é››SM±¹œ}ª­¯ñ–Ÿb7¹…Q‡|û›C&Àû2x þ#á¬f3CA¤³@lSZÁûNÕbcö{IªYœài¼ÎZÏ éhʰ°NQ[þï„åm•h8%ù tµ[+ùNΡ‰ÿë—õc/ýyse6‹¿:ý§@ýw“㛃 ¨÷÷饗9Í®„I¾³MvÕø%VK éeÀyi&à7ÑI/†òð¿Þ fýzêÀÃú(ì#´¹¥ô—R]“î3
ðmT°£=a2séhºW;ŽÖæß¢/G|zâ4­a7TýÚ·íC…‰5ÒýÇ„ßÁŒWMÄ9¬ð(œí“$ZÖ¶ÊúS#FZ”?Øñ/§Ë „Šñ'.á÷K+G¶Ð¸§¹¶ úÒ
7 ¬‡5³· ÀHf]Íé–ЇÛôÁÁžh¥Lgg1Ê¥j
ÞìO9?ä
)
b•Ú?:ÀtãGOºŒâ{Fö)r/§ña&n<›óN×Lò@Æ[fÑ â
4ý(|˜‚-~ú`@¼æ(Æ¥[HkމhSóìßÚajkkaP5à#¥ÈGž´1:7ŒvbNýÛF³±ŸÂ5´Ë-m
JÔ“}ƒvÏÓ¿„Pw´Û¼4DÉ)hzN£œR£ÃÝYv34ð<
BïKc£MƒS(ÑýñƒOMHGéÑZ°X)æ65KŽDTìË÷<ÊñºŸ½z'Um©[ýÓŽCÖöÙ¸¥uM²8Öl(;1ú|@Å_zÓ^¡Ý¹V7…c6IöÆK­t0fîÁƒp×€ÙÇ-¯jžÙÊFÓÝnÖÒÄ7nô•öÊ¿H,|Õ.PçUkì°ïᮂèìÙIB¢·[sp*– ·#îö’]”p²¶XEIsÝλyìñM½×ü†Å„XÁàsVÑ(UîÐM< Ëþ#jšõ§'Äz{ÊïP¼J
âÊj„)Ð1¿y3[È·*ßG&meBÙÁ"lg 눷‚+÷qzÿ1,/…‚É£ÈXST\Õ‰:ëÑל·õÔ‡ÈqàJ ~¤˜Èc(¨‘U­S»‹zfšr±ïí|¥p¿uî8W“aƒ¤ë/Ÿî†ÜÛDŽ‚q±ˆÀñ´3h}w<1Ç)Ý´k©\wt ‘Ô„Ò,YX+f»Ex‰qµkf’ýâð§Ícì?9ò¿´$õ$–0Üô÷
³aìSºSÃóÿâ׈û ïH÷ñ„––I·O¡ÝpŠ”ì€þÆž7=P´B,bteŸ˜Òôö@]ÙÊ«PÌå¡ÎÁ¦Ü+OãuO»*K8IÌ¿ŸSwb[ÝÄ9ÀØA‡Q)OϺGê\æÆEv²aFVà'³NÊÈAì†ìèaØ›™˜|<ì1áZå:HDÉôN"”û©1i¾/Møp+@Óh Bâ
p(¹…Ó¬›1Á@Œíò×cÝ®Ïή}n8½$»“ÿD?èùM—²»sÂL´(öŠˆi ÜÈ~½‰õÑ4yÑCNÔ,ÚÓba%“¾a…èDCÒ?9RˆòçÙ' •ã»áÌËpuøž‚+ý¾@>>… Ë›ó!¥»ˆ
Ù¶€p›÷å ¨¯ì˜D>„­|¥¸´ß!Ùüu ý¸£lñÍ?ÑÅNéž>ÈcYí„9‰ÅOfŽ«ÛvßëU˜·Ø{³r šIÚå†Dc 0w麶ï’JV¡R
¢Rvç{˜CœjrŠŸ¹o÷áÃkÑù¹pŒ'yãºà– P”\¬›”á¤ì+ß™pèó&
|íøvÃãzuLƒ¢{J9¦Âß—v<é”Ü(S­Ö¤" €ãÈ'8KÂUç3\ýwI;!-D Š ìÊ#®by=ìßhО’ñxHÞl¶6ï°7gë3UJ
»™C"C6_e#^YYaÌìgíE×Öžm"^HÓ!6üGŠo%\¹{Öø*kâ Ë ²€ª¹ ññÁº­nÆ~è¦;‰ÓE)A!\qg¬z¾*woÑþE †u¯AQí0$]•¡ÚgÞa¬[©¤¯¯<[ÜÓªÙÍoëGÙ”¿Pò•'F\AQOJÿpÛ#×KQ+~]9"¢ìņø Ø0ôuY•÷ø
©Ç4îæ¤×m%:%‚7Tùõ‚æúJ§À+„Ó±è¤òà£`×4Yt£œaüɉôM€EIíºAÆ—•ìÖ$Ž£×ö1:EãâLî²ožøÑÍbwºAØò´%‰TR²·‰ G‚¤@rËšÉ|öfï&{¶Ã€Œ…glýØ÷"9“l±IÌ•Þ3X©Û9b‚ á ©Ížçÿ ÛÈÞùŒá½Ý2€“è€N̽d{3Á  ƒèKÎÏÁð0 ñ<a&]6Þj+_‹Û¥`+ö4/8gš»OÀ¯CU˜È¢n{7K³QQ»ÃQ‡­¯Ôªo¾×Ã×R˜è(ý«ºü4Vjôè»9iûÍv öê*¶Ôs§%làÓVMyjòy6 }KUÂìñåyˆlÿ@èA>Ú¬¾e¥I;ÂÑÙžÌ"n†Á©·Œ„%Óç.,ÑÌܥ’ô¡¦`OÚÀƒáÏ<ǪcmñÜï
Ñç+µ%¸bùiÏ=qË uñ“,¹7)wà¡£,5ìÃ¥²~ý𳿼ÙUìã¨#™«Î¡‹épįìV
–`J¹ñúk¡Â%v‡¢ýŦ'íwwK²>¶=ìˆÀ€¸‹PI|aQŠ­~mÃCl½¥íŽâ2+«Íˆ–àzB÷.“hûÃK
µ¥“ÁÞ…kX—t­ì«´É9€s³6!Žƒ=ˆ»ŠùWpÊßkLO—lO_zÃ5!8â êV8Û £®‚M Ð=Ošå1]â¾JUpAÔŠ±t{‘›·
´iÏta={+š]9xCßü…תöQØ,@N8h-n¥ãݤ·žÑgöÀ°Žnsk§ Ð<ùé˜ÅáR¼Ú_†°Ê¡•ŸRyF¤åÔ¿²i·ÔÈDBèd«÷å,è<ù:ªßq.ÂK`ɘö Ä€ÉB¢5£ˆ©›=àyh _¦ª…|Q©¤ ¶ñ>tZ‡s1¬76º:ºñšì
‡>K ®}êצ½b—/Ú¬á-ÌA,hä¦?f cÕÑhÞ‘ÇùúA/PïÝÔÃŒJ±‚¯»Ì‹éŠcKÿŠk!nÿæ;ä~‹‰+¬X¥a[O^-¾Øþ
Ÿ`ALxßÁò *!Šÿ]éÙ!U"=Gµ‡°,ÑŒ#éRæ®XIµwÄgí$cÚ?’í·žåÖjÿ‡dR©ˆ„œqÖKÙ 
àšäÑåöÐt]^àîô•)úM
襲e ¤×åtE“5=‡$ÕèîÔÝg7aÍiðü8'ßÈ?å·Šå(‡œÜ¯#Œ¢ø!Æû_0Cœ :Ùëîï™k‡ë^Ó©ŽEÿ-)Ÿ¨ã_B7‹>êʽüAØÊØ7Ýh(Ï¥c$¯w×]
@÷‹
ô ž©q5….Õ§õvò*o3Lqqÿ€«ÝzF³WÏù7”)„L!|b“ý(;ìAüÒD­µ
ˆ·­ %d&é`#q–‚­žÓ"åÝyƒÞ°â?ŠŠEŠ;qËÜôkí7#šÃ²(]I6[áÞá®f˜Ls=4ù3¥ìYý˜îª%Þ¬¸§Ä÷y0A9ݸ½žš÷ÁcòÂaܲްzÒ®¬$âäãÕëwb¨êÈÜòˆÍèXjlÏÛXª=8+ógüÄŸÎMýuÖ|âÕ¶O¸·Iñy<>ªm¡©â/V<Ùb×]ŽOê¿Ep]CÖÑŽç®é¦}칦ž‰ØTÝ%xè¼±à‹ÇaÐcŽGþ\…»€;2ì9­F(öY\Õßkòe÷HÊZ”jtËQ+nô¤VsP7¨:"žSF~Ñ¢/À¯ßïuŠ»ˆ\P÷3ÎkAŽœ=ÀÓÞM3Œ,–.¾Çú{Þi¤çMñë4T¤žk }S†¤ŒHûä+)N|t÷[îZtÉè3Ñ4Ëׯ‹‰Ÿ€3+”a¡áÓ Ø¤ð©ã<}ƒÇUTIã÷‘2ƒ'¤æ?Ÿä7Çœ÷ÌCÐ$²Œ­?%öÍBÈø£Ý•°VûçCœðë.ö>—„Ùö œ*TETŽ*¶ÏT&žMú† ÚÿmÀ·Hü”âæúšPÌÝm1ÂV kUxÈ&R¤M3³üü´9}_Z$1u{WØöüoªeJ8ÓÎ)±}«B¡ºÊ\W„Ïãþäc8D­šoÌuYRm
®¯¯lD«w?™:÷yzWï±µT0èB­ÊÌVŠb€g”ŠóA…0-_&[§ž+¡{RêþKS‰€ö²’¹Ó!yì&ˆ¸—lhF‹õ—ã”ãŸ^÷ÝŸ7Âtâ©ÈÞ+­¿Úô)N¨¶†~¡ÿ
è#²G¶ŸÇáeGžl4³ñ­gg˜_º~V1Æl9Y<_/³  ½ðt 9¤}·˜ 5¿oÇ`u4éø¾xdžÃÀàÆ)Æ‘jw¥ßÕV–Ôû÷O92%J´ë}Ÿ,fE5èe—Ù+RIó‹ì³v†¨CºzîÎèåßý<
ªŒu,èˆeš‚‘Æ©,½O=BÿêTü-ÀWO‡f[Få=8ÏþD wö”b^3T'†ÙÿÈäÓg1§PXÓX¦B,8êÍà–ƒÝ}Òa/Žjϼù>wKíjÙ ô^Œc‚¨÷"Ã/*îÉÛŒüŒÜÉ7õ¿¡lî„ËøÁí)#ç1wà$“4ÌÚªvqq}ÓL…Ä\zn±ì}³= ¿1ÈßD ¯ÒB_œN¹_ÚgëáôŸ¼l$ q™7j—%—ÅFÉXv¶ýæ)×ÿ¢
!$hn+8Qd2¨ÅIYup€3èÆ”‡CI¾˜p¡7_XÍcxì²ôÝògÿÅ‹\;×äUj:Ïíï× ›êàä?70ShéqÀÔÎi”Ÿ˜9|ÿù£}éà!¼­ˆïíöõ3ð`|+<&¨êèq@²ãf+Ú¾?RšŽ+Vr—•t¤Bóâ§5¨IQl –êjòNSãm
¬¬'׋=>]ä2°þÈWn?ž¿’ìá`Îù»ºg°aš¶mÀm¾ÖTÔªÐKÍ
<ÿ¢$\ª¤Çe©Cèï’uš¤J<§o›Ä.
Ù¢¦a@—ŽéçY¶¹Ù–é<‰K‘sôÐ8l
4»ü^ =he ¿~PtøNTŸ°í¾xý ǃõš0&‚–Œ< E©­,¾HëÛË1ÿ
%V
q CìÏ_òŒzŽºýuV(ï»ÄÙ=—ó„19©ÕwIÁŸÈÐÃ
µ“²×Aÿ+Ëð ß„¯³LvZëƒì1`"JÙBÆbÊ8rbcÄvUð¿úÌÎÌÈÄ,cãdq³ä«¬ó¨ó#T¦R:cÆsØj$„xº1ªÑ¿Àþ’Ü¡]$ADQip vŠ´XP’? o»#`¬~Áû‹Ñ¹™éöN2 ʳÍà<Û@¡]Ô‘õmuÖ›–³—A\ŠÆX øD¨4äˆ
x3·0pÝøÈucG8±vD#õVM]ä®[—ûÀTÑìˆ(ä¸8œÁk>…/k á‘ê8cYçhºäRÎÿ=uUCD,‡¼éŸŠ&º+85 ¡eqJµU@3‰x´¥4ú« ¨Úu`¹÷ùQËZoÅ„O¡@Ò:fJ&›˜æ"Xä3”ñÇa ~a“BûôÌž©HÆSב³‘8ÚîÞÒV¨ÛB«ßBJ9œòx±H§ ¦Zºvv­úß`®VQd÷ïþ†Ö=‘²R£œ
Ù¹©^(´Ö[ß wž–€!GÅ*¶œ™&Á  ók¢"2Ä”É}ÛüŒ¹âÀýÞ
îš!]¡Hp­u0,U9 ”…«ükHe䦳oÈwÞšƒn³Ýˆ®¤}tB‡«‚R|z’O¬–m§’ð¤Oð·:|©Ô±=Êê9rË&ϵv1áé+4Nµâ:y·UŒÏÔ½†n:e“,6«Ò"P:©£ýzþMZæß{™¨>˜ ¢·ì“й÷Ø¢‘tâîÀvJ\<™¸¨ÖloxG<Žvã¸Õ.ÐÖ§ñ'>j̆ũPö︩"ÄDÅ=â³U(0ÊòñûcâÒÒQ²ù«ÅÓ^pu×¾¡ÁÚPÞÓVS/Åø§ÍäÕÏÜÐé²T¿I]AÞÃúÕ8Õ|ËTÑPWwê/àÙû×Ëÿ¥Tû÷W•)=¡2I¾ZJ8C±`OÁ jâ¤MãÑübNÖ«xöë›=@ÍÞÌᕵ\ØÁ¦âß«F¶»3±–Ð ÍQìj+99‘ç‡ØBµ®R².íY®s€Ïºº-£ÁœL/bF6f
0´vL[/ ©c˜˜t¥R/
<Qzb=²mG4gæ@]l“3„C†ì´U}†½Ü0–­(’ äé³È
÷Ws#üËúÀT1Jò7ƒôÕ®Æ -PQGùÙù½ß‘%íûÈ£÷=­#SLâÞHöÞ/Äõåó¹¸7¶4¿¯/MmÞ_'sWâ+ApkŠïéÅÅàhsÝ}b0àPŠØÓùýµØï¬ó𠔜=äS
*ÓAéHìÿâ°`Ϧ
X\s•C)AtSüî7½•qè‡Õ¦"¢Æ ¼læµùh¬¼#ºAÆF.ßGãe°Û“ÑGâF—³ášø:¸QŽ5AYHyOZ¶/~I°Œv¸”P‡à¬µ6DÆ 1nð–ž°_ÏXmY}éÊ›
‹ßɹ¬ÛP¡’±=6플
Ÿ©ëÇÇÕ.Ÿ~^£ô“n ƒõÎa¯>5,Û‘Æ•’ò
…ÃÕ65Œoê²´µeíú%ÆýÇv‚îúê´ÍødN—[ñ‡ãxÑÕE#šÕA³¹aÒöû¶'B)ªêé†4⵫Ѹ ÈmÀ l©Õ*Å.ÁæØO‡„+¯²Ö/Fcí6t¤%bhNΩq`Ń™Ryã:3÷¾¬¼[éfåì'¤4é¥ÂoÒ4kE{¥*&x`Ûïwu‘Ò©öﹺC1Ô%Z†š}ÞÊ75·|kf\8·Õ•éh."E|¡·ëØfS ©Õ„Hä z›°ôÑ2~`Ø·7ãq‡¾*´Ä³BÖ¤¥ ZÿŒx‘ ®Üa-ÏÀ¯«ZTH®OFkÀßœ š4º<±ä¦ÃûḘˆˆFMA]¢Î‰óéo¼îžƒø¼¥;x]zY–<_™]ûþÈ ¹sSÌì|fœ+•9¼Dk¢
¥}ššSÇ÷—·Ä/¥¦rÇʃN(L=æÞ½Œ+—:`X®™/EV#´vˆqxð4Î`~*óEtP­€Fhâ=X§ƒSúE-Ÿ¾ŽÁ9סޓ‹0|Î^ªý†[$ã`²QÎ…nìµ»/ÀÃX¾¢®¨­óݧb¢\å‹ubo~jr2#Õ<œMGÇ‚£H"ä;P%¡qÓ#’¯-Ë8? Œ´PøÅ®PԺū„Û{r¡gbUOšD<l“®.…ñ–-ás2 ¦ª=Mÿæá§ä~†\Ò_2öL)]Ý"AïBéÓIÙ>hk'ïy¼O¦à¹m»î£¯ÕUI³(ì)Î{p~uöæû/ÌzvWx}V<! ‘¥æÈĺ]ÔÔÑ]&RVÓ• ´ì†µ¥Ö]hì×§‘òˆß±väÒw–›ÅVmË?ÿ1¨jdv"¡CÊ¿ñ«œ!'Û°ôç;-žm37Ò&ü¨äœ^dó²¡6ÉaOx9s“œ†adaezX­Öo3Ã{ŽžÏ¶ [ï}˜˜…Ьץ ”ÄkJñô¿£wHõcf+ þyâÐl ríä{D÷Ç2ÖݱRn#Ûw¶>ãÊÐË.¥®‡{l?y‘…›Á®n'ñGz2¬ÒßBi¤ö•Nds(´ü¶‰z|%’¹µpW*ÑêN Η’&#”½b ÐipÁÛ
*SÄ¥wƒq̹Jïþa¦>õF0Ÿ„yìÚZ…šÔv¾Ü+´Šy†•°ácGAOý­)“‰LpKlmµ}¦2§Ñ(¾z¦ðl¾¶T´âe]{ÉpFÎ)Ð,—¦ŒŠk³[:7ÞÖ¾þ®øÙ¿6þ.×{jí·xè°ã<fc'G3s'ÓxÊ·‹½ë±ïJê½ޙߤÔ÷ƒ‰«ÒéŠë±›Cë§ð¸‡®.»Ó¹¡Kì
¸º+qÚÀFOWø`*5—)ÿëÞ1!çŸø>spof|¬˜í0Ìù— ¥{L§-
ªhcZ&½&Ê”»æø¬ÿï7¬mH˜6NÀú©Šß®tkr¼µ“q³¡/ïZðv}ÍJÒsç,_¬˜sØ‹½À
ÕñQÿÑsuÈÈ¢¤ŽÇ&EAÊÌ*A«ê’¶KXId‰"8ŠªœÂrÄ¿n™íƒÈÐȧYo оAâ®ãi…Ä£TTóžÉÏ©"«)Mo){±ÀQ¹zý‚iÈu¡çȘ}<ò‰>œ6õÚYV\™á×]d¦ïr¥ÉG2™gâ×ZÃX¨â„J”Ï2šŠ‰ë™W “‚\$lŒ±deÆLÝЗG®S:Væ\'œ„”#Ì
IV;ÐTLPÑFÄKïÊÇØ9Àžƒ€xÇÇ]Ñp©‚Ìî1“rž¾LÛ€à×ÑšEÊਕŸ+ëÄ»LfŸvðè>0$‘ïó;ËÈ
n·éš} ³¤JêV¯2ð²q†r>ÑdÏsh¨~ï‡íal®pŽ<tÍ#WÙbCðæ¿Ê·Ü“`íÛ•KAh°î2SLÓ4J^0Ûm“M²Ëƒwú«s¡²à¨•N Á–&à¨AU[N$àCþ'a ï(ùnxC(õc%â{Œòf„s{'kýs…8¢‘€Íh»Ðô[aaÆyÎJt¶ÀX1NÍMø¿zû~Ö˜@ˆ{kÆÛ˜ e#}œ{”1Ö¤=˜˜PÊT’0xå»Ù—.‡IÌ¿™˜Õ¥ºC¢çÊó® x„7kóLVEœ]ï˜)X“ Òyû³ˆýWìp§ô—ÅyÅîÍ ¶Ø 0Ϩh…|¯|&Bj Ä«™š†ÈS·>(h‚VdwòPÍœ5nߎeÓ
Þí°!>?ÚDy¡n, ö² »G8Æü倠¯ÈÆ‘™™xöu¦n^Ÿ>ó[éxžºxž_HÉ«€fµA~æð\³ÕzÓü¯®Ýþåz¢wý½
PyßAÍ7!É}ñUõjxB}ÜW"Æ’åU}ê@œ³îyǪ×o[ÀÑ„ÞbèI|o<™ŽRB^ýÚ(´.«÷À1}sŠŠˆÜù°×òɸF\„جjKÏîWft®/h&{Š)ǬHJú!+ ¡!4j¼ŒæC—4ñH.2t^
Á,ô»qúLWò|Àó¨½Õ³°ÅöTñXøÂèÁkrŽl/
±.†E³è¡s? ž“ú›=4ÐÎéÀ‡‚ÃFI–MËòXÍ-;_:~´«åIÿ©’‹Ñ@PØe'p3lƒÈª;îÌ.–†F]Çë‘„ˆ¹+áÂÉÎ%‘òà$~Ž¥iäÃÉ¡íp÷†r>(£n ͤs"Jly‚•§¨|(˜ŽE¹´BL__ƒÏ¯£—©åéxªk$fn² öøôàì’?äÖ²¤>Íâ}^ PweÕ'á4"ܶw
ÛÂÙæ±Vé iô EFŸ+|÷dþE“í‰nw…]›ÿ¯³ŽŒDn wʲ
ciaj
m'oÛt` v>yÞ} /#ž3ŒóÎ"a AÏ5VU˜ñúš~œÌŸA¡Ÿ¡Æ£*¥ˆ¥à¦-¨¨·©Õªõ«?­­9¯°ç°²³(´i´ª´¸&ºk¼e¾pÁ±ÃWÅqÆÍÇ+ÈÉ3ËËbÍÎçÎÐZ Ò ÔgÔÄÖÐØ-ÙŒÚJÜ5Þßðß%á{âÙâeäÃå!æçwèÕè¤éÜê:ëqímïËïòA&ó6úmûËûëýþˆþVÿ½ÿúÿuJ©ÝQ w¿:nŒBC0·ÔSmØ«4]{  I#¾#B$n$$s%Å
%Õ'/)j)"*g**Ó*ú* +P+œ+,p,Â,-¥-0.³.,/œ/ 0A061ˆ1-22ó23æ46Á6,79²9:/:n:¿:ü:£;<h<Ç<%==Ñ=/>¿>*?i?Ç?-@l@Ê@(AhAÎABxBãBJCµC#DDØDžEbFÌF²GH{HÙH I&JJgKML«LMHM¬MïMNNÜNGOÓO1P±PQëQR,SŽSâS"TxT¹TÒUùUåVQWÜWüWX³X
Y*YrYYÒYòY6ZVZ¼ZÙZ:[œ[\}\\Ø\ô\3]J]Î]Q^m^¬^È^_'_q_»_`I`¥`Á`aa[aŠa'cDd]ddFeneifŸfºfgOg³gÎgJ hß jmÓnínƒoÿoŽp±q%sCt2u©uvv'xAxÕxTyæy²zÄ{|4}¬~#îæŽåÿ8EºÐXoDb¨Æ *pŽÔò8Vœ»wR˜q˜* ™¯ÉÞœ/œœ¡œ "D¬ Ÿ-ŸBŸrŸŸäŸ p  ¨ ¡Q¢k¢¢°¢Ñ¢"£C£®£Ä£æ£N¤Z¥t¥¥¹¥Ú¥+¦L¦·¦Í¦ï¦X§¨¨¥¨8©Y© ª*ªámêõJ6
œ œœ4Ìž>ŸnŸŸöŸ ˜ 
¢|¢¬¢Â¢4£À£Ö£¥¥µ¥Ë¥=¦ɦߦö§J©ª++     
 +                      '
+))''''šáçüóíùðüúýþÿžÿZT<óè|óM§ÿÊ\óa¡IØ:ÔXw&
+¼/596Å;Õ@•A~DùEŒJYRŽTUß]`{cnhûil†nt"v{x„}§~€„D†½Š Œ?_:‘y‘A” €—T™°ší›€Ÿ¡ë¤–¦î§•ª¨«­ð®½±Ô²Û³´¸­¹ó»í½ÒÀÃÆÄÆŽÇ¤ÊÍÆÏÒÊÓ‘ØâÛÍÝÖàä„åê³ñÖù¢ý½þªõ8×o(¤H{»ØWt š ­#1$J%«')))*l**h+´+,ˆ,Ú,R-Ú-e.è.a/Ñ/û0 1—2 3)4‡5x8:G:†:×:;»;€<==ž=G>B?E@@AœAæABbC™D
EÓEG(HI¸IºJœKÃLM`MÄMN²NO{OeP'Q±R¦SúS:TT|UšV…WXËXBY©Y
ZnZ%[‡[ï[S\°\ ]¹]<^„^ß^\_¦_í_4``Ø`3ac¿cdFd¤d7f£fÑffg(hªjâlnØnònWpdqŒrösçtÁumw,xFx¯yez-{C|ß|W~;¾éNù‘k’˜’¼’5“Z“¦“{”ß”C•§• o–Ô–¯—Š˜F›‹›±›ÑœZªžïžŸ©Ÿ¾ è¡ç¢ü£ñ¤ð¥§×§¨ލ¡Ùæâìâïâöâýâã ãããã…çì–ì™ìŸì¥ì«ì®ì´ìºìÀìÆìÊìÐìÖìÜìàìæìììòìøìþìí
íííííËùØùåùùù„û‘û¨ü¦ý¶þ$ÿÓÿqla¼×1pÉã®&@Üé
½
Á
È
Î
Ô
Ø
Þ
ä
ë
ò
ö
ý
  
   $ + 1 7 = C J N T Z ` f l p v z ~ ­-k¼ù
k¦Å&k+0§5o6Ù6û; AB´D8FKýRâTüUÆ^6aÏciZjùl!oÕtZv8yØ})€˜†,‹ƒŒìÈ[‘›‘;“Ê”/•P–Ž™ë™ôšÆŸ™¡À£‚¥Ú¦¨±©Ϫï«—­„°á°²³¥´¸º«ÃÈDžɓ˄ÎáÎ ÐÔ¾ÖËØ†ÚßêßáÓâ¾åæçÏèžé×êÅïòÅûæýþ‚þQÿ¸ÿíÿôÿoE¤×Kr²¹4
i> %*-159?­³ÏIOhÓš§/Xý $*07;AGNRX^djpv}ˆŽ˜ž¤«¯µ»¿ÅËÑ×Ýáçíóúþ
 '+17=CGMSY_ekryŽœ£§®´ºÀÆÌÒØÞäêðöü      & , 2 8 > D J P T [ a g k q w   E#º#>$j$$n%¿%Ï'))d)*[*b*€*Í*í*ô*++C+J++,j,¼,--Ÿ-*.­.&//0;0111(2y2í2ƒ3à46¼6&79­9:):h:¹:ö:;ý;b<Â<=€=Ì=)>º>$?d?Â?'@g@Å@"AbAÈABrBÞBDC°CD{D»DÑD—E]FÆF­G
HvHÓHšI!J~JaKHL¥LþLAM¦MéMHNÖNAOÎO+P¬P QÙQæQ“RS'SˆSÜSTrT²TÍUóUàVKW×WöWX®XY$YlYŒYÌYìY0ZPZ”ZZ¢Z©Z°Z¸ZÕZ6[˜[\y\•\Ô\ð\/]F]Ê]M^i^¨^Ä^_#_m_·_þ_E`¡`½`ü`aWa…a$cûc:d@dXddˆdBeceiedf•ffµfgDgJg¯gÉgEhÙjm¹nÀnÇnÎnën}oäoëoòoùoˆp«qs=t,uŽu•uœu£upv
xxx"x?xÏx9y@yGyNyày¬z¾{|.}¦~êâŽáû5B’µ’Í’S“l“>”\”¢”À”$•j•ˆ•Εì•2–P–––´–q—'™s›«›ÛÛ› œžœ A©מŸŸáŸ ƒ ¥ 
¡¢­¢΢£«£Á£ã£¥†¥¶¥×¥´¦ʦì¦ü§¨¡¨ª„ªŠªª–ªœª£ªªª±ª¸ª¿ªƪͪÔªÛªâªéªðª÷ªþª« «««…«Œ«”«›«£«««²«º««É«Ñ«Ø«à«ç«ï«ö«þ«¬
¬¬¬¬‡¬¬–¬ž¬¦¬­¬µ¬¼¬Ĭ̬Ó¬Û¬ã¬ê¬ò¬ú¬­ ­­­!­(­0­8­@­H­O­V­]­d­k­r­y­€­‡­Ž­•­œ­£­ª­±­¸­¾­Ä­Ê­ЭÖ­Ü­ä­ì­ò­ú­®®®®®„®Š®®–®œ®¢®¨®®®´®º®À®È®ή֮ܮâ®è®î®ô®ú®¯¯ ¯¯¯¯€¯†¯ޝ”¯œ¯¤¯ª¯°¯¸¯¾¯ƯίÔ¯Ú¯â¯ê¯ð¯÷¯ý¯° °°°°…°°“°™°Ÿ°¥°«°±°·°½°ðɰѰ×°ß°å°í°õ°ý°± ±±±±±…±‹±‘±˜±Ÿ±¥±«±±±·±¿±DZͱӱٱ߱ç±ï±õ±û±²²
²²²²…²‹²‘²—²²£²©²¯²µ²»²Á²éâóâúâãããã ã‰ç“ìœì¢ì¨ì±ì·ì½ìÃìÍìÓìÙìãìéìïìõìûìíí ííííåóÍùÚùéùû†ûÙüãýëþ‡ÿC=%ÜÑeÜ6è³EÞïº
Ä
Ë
Ñ
Û
á
è
ï
ù
     ' . 4 : @ G Q W ] c i s x | ]2pÁ#½A`&ó*¥/5"6®;¾@~AgDâEuJARvT…UÇ]ƒ`ccVhãiûknnit
vcxl}~h„,†¥Šñ‹'øŽG"a)”ô•h—<™˜šÕ›ê Ó¤Ö§«è¬Ø®¥±¼²ó¸•¹Û»Õ½ºÀîÄýÅŒÊÿÌ®Ï÷ѲÓÊ۵ݾàäç è…êíï›ñ¾ùûŠýþ¥þòÿúÿÝn ·¿WŒD#(/37=w±·ÔMSm˜œé] '-4>DKU[agmsz¡¨²¸ÂÈÎÔÚäêð÷
$.4:@JPV\bhov} «±·½ÃÉÏÕÛáçíóùÿ     # ) / 5 ; A G M X ^ d n t {   ©#-$3%“'í(j)$*`*g*†*ò*+H+P+œ+,p,Â,-:-Â-M.Ð.I/¹/ã0ˆ12ó24o5`8:/:n:¿:ü:£;h<%=†=/>*?-@(A„AÎAxBJCDõD»EéFHöH I¢J„K«LMHM¬MïMšNøNcOMPQÛQ™RSŽSâS"TxTdUVmWüW³X*YYòYVZ˜ZŸZ¦Z­ZµZ![ƒ[ë[<\™\ô\µ]8^m^È^X_¢_é_0`Œ`Á`aéb»cþc>dDd†ddge f™fŸfºfHgOgh“jÊl n¾nÅnÌnÓnínéoðo÷o?pLqtrÞsÏt“ušu¡u©uhwxx x'xAx>yEyLy—yMz{+|Ç|?~
#ºåÿ8ô‘h’‚’º’X“b”Æ”*•Ž•ò•V–»––—B›v›¯›»œD¦žÚžŸ“Ÿ ¨ ä¡¢Ñ¢æ£í¤Ú¥ï¦Ó§¨Ѝ©ª‡ªª“ª™ª ª§ª®ªµª¼ªêʪѪتߪæªíªôªûª« ««««‚«‰«‘«˜« «¨«¯«·«¿«Æ«ΫÕ«Ý«ä«ì«ó«û«¬
¬¬¬„¬Œ¬“¬›¬£¬ª¬²¬¹¬Á¬ɬЬجà¬ç¬ï¬÷¬ÿ¬­­­­%­-­5­=­E­L­S­Z­a­h­o­v­}­„­‹­’­™­ ­§­®­µ­»­Á­Ç­Í­Ó­Ù­á­é­ï­÷­ÿ­®
®®®®‡®®“®™®Ÿ®¥®«®±®·®½®Å®Ë®Ó®Ù®ß®å®ë®ñ®÷®ý®¯ ¯¯¯¯ƒ¯‹¯‘¯™¯¡¯§¯­¯µ¯»¯ï˯ѯׯ߯ç¯í¯ô¯ú¯°°°°°‚°а°–°œ°¢°¨°®°´°º°À°ưΰÔ°ܰâ°ê°ò°ú°±±±±±‚±ˆ±ޱ•±œ±¢±¨±®±´±¼±ıʱбÖ±ܱä±ì±ò±ø±þ±²
²²²‚²ˆ²޲”²š² ²¦²¬²²²¸²¾²IJôÕùâùõùŽû‘üý•ýþ¥þÿÂÿ~xb]R­É#_}¹Õ|Ÿÿ!2¡æh©¹\­ëæìP®&D+ä/—5_6·6ë;û@ B¤D FýJâRÇTØU¨^a´cûh6jÞlýnºtIvy½}â~ù„}†ÇšøK‘‹‘÷’¸”5–|™×™Ùš«Ÿ…¡›£¥¿¦¨–©½ªÓ«ƒ­¯Ͱç±ü²´”´εù¹¶ÇÈËÍÎðÏòÓ£Ö¹ØÙÜ ÞÖßá¿â¬åæ»è‚éÅê ë±ïÜñú±ûËýóý5ÿšÿÒÿM#ޱ/þ`ŒèQv#Çä2a¼e¤Hó¶#:$e$ƒ$^%´%½')T)*>*x*—*è*+5+~+è+R,®,-‰-../‡/÷/!0!1z12q2Ò2R3Î4þ5Y67ï8J9ö9%:X:«:è:z;ã;F<¨< =f=²=>ª>?T?­? @W@°@ARA¯AûA^B»B'CCùCgD«DÉDtE:F¦FŠGöGSH¿HwIôIjJ4K%LLÙL0MyMØM/NÅN%O”OP~PõP QãQ/RÚR$SpSÍS
TaT£T´UèUÅV)W¯WæW}XžXòXYUY|Y¼YÜYZ@ZZÄZ/[[ù[f\…\Ã\à\];]Ã]F^Y^—^´^ò^_f_°_÷_>`š`­`ë`aFa}acÔc(dQdrd#e[eLf~f­fg4g˜g»g9hÀjølBnãnýnÏolpqñrtu~uCvžw7xQx!yÄy€z{e|
}‚~ø~½Åô%uu’«’Æ’I“d“}“'”L”Ž”°”ò”V•x•º•Ü•@–‚–¤–T—
M›Ÿ›¼›Ö›œœŽœùœ0±žŸ Ÿ€ŸÑŸòŸ” ö ï¡¨¢¾¢£›£¼£Ò£ø¤¥±¥Ç¥¦¤¦ŦÛ¦Þ§¨™¨ï©ªôÏùÜùïùúˆû…ü ý‰ýþ™þ ÿ¶ÿrlVQF¡ÃýWw±Ïpó,ˆàb£³T¡ãÞä$ƒ¢&8+Ø/5S6†6ß;ï@ÿA˜DFñJÕRºTËU^a§cîh)jÑlðn­t<vy°}Õ~ì„p†úŠºëE‘…‘ñ’ª”â”'–n™¦™ËšŸ¡£¥±¦¨ˆ©¯ªÅ«­ ¯œ°Ù±î²ø³Ž´ȵ빨ÇàÇËœÎâÏäÓÔ•Ö«ØãØÜûÝ¥ßòàŽâžåÖåŠè·êïê€ïÎñú€û½ýíý'ÿiÿ¿ÿ?]«!ðRyÚCp}¾ÛX¯Cž 6æ °#4$_$}$U%®%´')N)ó)+*o*Ž*Õ*ü*"+u+Ú+D,£,ö,~-ü-…./|/ì/01I1
2@2Ä2D3À4ð5(6Ô6á89Å9:R: :â:t;Ø;<<Ú<[=¬=ä=¤>Ò>N?|?Ú?Q@@Ý@LA©AõA-B°BöBCÈC6D¥DÀDiE/FuFGÅGHHŽHlIéI9J)KL`LÓL*MsMÒM$N¿NOŽOæOxPÄPQÝQþQÅRS?SÂSTVTT©UâU·VøV¡WàWoX˜XäXYLYvY³YÖYZ:ZxZ¾Z&[ˆ[ð[]\\º\Ú\]5]º]=^S^Ž^®^é^ _]_§_î_5``§`â`a=awa cÁcdHd_deHeCfkf¤föf!ggµg0h·jïlnÚnôn¢ocpvqãrtøtQu5vqw.xHxôx»ywz{\|ü|t~Ë~¯¿ëgú‘l’¢’½’@“[“w“F”…”ª”é”M•r•±•Ö•:–y–ž–E—y— ˜û˜G›–›³›Лœœˆœêœ*ƒ«žúžŸŸìŸŽ ç é¡¢¢¸¢£Œ£¶£Ì£ò¤«¥Á¥ ¦•¦¿¦Õ¦ا¨¨à©ªô¹ù÷ù•üý›ý«þÿÈÿ|faV±Ë %c½×¡#4Æj«»`±ïêðT²&H+è/5c6¼6ï;ÿ@B¨D$FKæRËTÜU¬^a¸cÿh:jâlo¾tMvyÁ}æ~ý„ ËžüO‘ù’½”:–ܙޚ°ŸŠ¡ £¥Ħ¨›©ªØ«ˆ­¯Ò°ì±³ ´˜´еþ¹€Ã»ÇÈÒÎõÏ÷Ó¨Ö¾ØÙÞ€ßÛßáÄâ±å æÀè‡éÊê¶ïáñú¶ûÐýõý:ÿŸÿÔÿR(³4eŽíVx(Ìé4fÁJø¸#<$g$…$e%¶%Ä')V)*@*}*œ*ê*+7+ƒ+í+W,°,-- ../‰/ù/#0&112v2×2W3Ó46^6
7ô8O9û9':Z:­:ê:|;å;K<ª<=h=´=>¬>?V?²?@Y@µ@ATA±AýAcB½B,CCþClD­DÎDvE<F«FŒGûGUHÄHyIöIoJ6K'LLÛL4M{MÚM1NÇN'OOP€PúP´Q4RåRuSÑSTeT¥T¸UêUÊV.W´WèWX X÷XYZY~YÁYÞY"ZBZ†ZÆZ4[[þ[m\‡\È\â\#]=]È]K^[^œ^¶^÷^_k_µ_ü_C`Ÿ`¯`ð`
aKaacÖc/dVdtd(e]eQf€f²fg6gg½g@hÇjÿlWnènoÑoqp„qörtu€uHv«w<xVx#yÉy…z•{j|}‡~ú~ÂÇù'zz’²’Ë’P“i“,”N”“”²”÷”[•z•¿•Þ•#–B–‡–¦–Y—O›¦›Á›Ø›œœœþœ2³ž
Ÿ‚ŸÖŸôŸ€ – û ñ¡ª¢À¢£ £¾£Ô£ú¤ƒ¥³¥É¥¦©¦Ǧݦ২ž¨ô©ªýó?ù+ûküñüqýûýþÿŸÿ[U=ôé~ôN¨Ë]bKÚ;ÕYx& +½/5:6Æ;Ö@ADúEJZRTžUà]œ`|cohüilnt#v|x}¨~˜E¾Š
Œ@`<{B
U±šîŸ¡s£ì¤¦ï§m©ª©«­ñ®K°¾±Õ²ܳB´ƒ´¸®¹ô»î½ÓÀÃÇÄÆÇ;É¥ÊÍKÎÇÏÒËÓ{ÖØãÛÎÝTß×à=âäå5ç9èYéžê(í/ï´ñ×ù/û£ý-þ¾þ«ö9Øp)¥|uL%¬')ƒ)**j++ ,Š,Ü,T-Ü-g.ê.c/Ó/ü0¢1š23*4ˆ5y8I:ˆ:Ù:;½;<?= =I>D?G@BAžAèABdCDEÕEG*HIºI¼JžKÅLMbMÇM NµNO~OhP)Q³R¨SüS<TT~UœVWXÌXCYªY ZoZT\±\ ]^à^Ù`4acÀcd¥d8fÒfgg)h«jãlnXpeqr÷sètÂunw°yfz.{D|à|X~<¿Oú6§|àD¨ pÕ°˜GFœÒœ[«žñžªŸ6 ¿ é¡/¢è¢t£ý£ò¤8¥ñ¥}¦§اp©Aªýóñüûý€þÿŸÿ[U=ôé~ôN¨Ë^KÚ;ÕYx& +½/5:6Æ;Ö@ADúEJZRTžUà]œ`|cohüil‡nt#v|x…}¨~˜E†¾Š
Œ@`<{B”
U™±šî›Ÿ¡ì¤—¦ï§–ª©«­ñ®¾±Õ²ܳƒ´¸®¹ô»î½ÓÀÃÇÄÆÇ¥ÊÍÇÏÒËÓ’ØãÛÎÝ×àä…åžê´ñ×ù£ý¾þ¬ö9Ùq*¥vL%¬')ƒ)k+·+!,Š,Ü,T-Ü-g.ê.c/Ó/ü0¢1š23*4ˆ5y8I:ˆ:Ù:;½;<?= =I>D?G@BAžAèABdCDEÕEG*HIºI¼JžKÅLMbMÇM NµNO~OhP*Q´R¨SüS<TT~UœV‡WXÌXCYªY ZoZT\±\ ]…^à^Ù`4acòcd¦d9fÓfhg)h«jãl[phqrúsëtÅu³yiz1{G|ã|[~?O%’™’8’6“§“|”à”D•¨• p–Õ–°—‹˜j›Òœ[ΞñžªŸ¿  ¢è¢ý£¥ñ¥§éóýùûÝüçýïþ‹ÿGA)àÕià:ì·I6tÅ'ÁEd&÷*©/
5&6s6²;Â@AkDæEyJFR{TŠUÌ]ˆ`hc[hèilsnntvhxq}”~m„1†ªŠö‹,ýŽL'‘f‘.”Ï”ù•m—A™“™šÚ›ï ؤƒ¦Û§‚ª•«í¬Ý®‰°ª±Á²ȳ¸š¹à»Ú½¿À
Ã³ÄÆÍÇ‘Ê͉γÏüÑ·Ó ÔÐØÏۺݒßÃàäÃåŠêÜêíï ñÃùûýþªþVÿÿÿJâs%Ä\qía7%˜'ò(o)U+¡+ ,u,Ç,?-Ç-R.Õ.N/¾/è0611-2„2ø24t56Á6e89²94:s:Ä:;¨;<m<Ç<*==Ñ=4>¿>/?i?Ç?2@l@Ê@-A‰AÓAB}BãBOCµC#D†DúDÀEbFîF²GH{HûH¥I&J§J‰KML°L MMM±MôMŸNýNhOÓORP±PQëQžR,S“SçS'T}TiU‡VåVrWX¸X/YY÷Y[Z@\\ø\q^Ì^Å` aíbdd$f¾fSgh—jÏlDpQqyrãsÔt®uœyRz{0|Ì|D~(;…’"“““h”Ì”0•”•ø•\–Á–œ—x›¾œGÜž–Ÿ" « ¢Ô¢é£Ý¥ò¦8-•-ï-m.w.…..è./*/4/>/@0‡0ž0Œ1Ä1 22 2*2k2u22Í2Ú2(353ƒ33Þ34&4„4Õ4ù,™.H//Ô/0&030ä01T1Œ22 2ª2´2¿2ç2ñ2û2333B3L3V3`3j3u33§3±3»3Å3Ð304z4×ùäùûè¦
Õé¨ú©ì­ý®¢Õï°²îÕj¿Áôý™ý©þÿÆÿM‘–´c%Â')2MÏScT¶Uk\c-d>hÅjýl°’N“¤›Ÿ8Cå|ˆ™ZªÁª(«]¯Ä¯`²Ç².³•³ü³<Cé|
ánâMäågçjèŒéÏêZí`ïæñú`ûÕýpþ?ÿ]39j"øa-Ì(h%É'#) *Ž+ø+b,µ,--../Ž/þ/+1"2Ü2\3Ø46ù8_:²:ï:;ê;¯<m=¹=±>[?^@YAABÂBC²D{EAFGZH~IûI;K,LàL9MMßM6NÌN,OOP½QîRÔSTjTªT½UÏV¹WXüX_YÆY'ZZr\Í\(]¡^ü^õ`Pac3e\fg¨gEhÌjmˆpq
s-tu_vàyœz¬{|&}ž~Ù1˜ü`Ä(Œ^9˜wœœÛŸg ¡£¥£>¤"¦®¦G§ù©rª˜á íÁuÍ*í[±ï’Ƶëý½ÿ©wnBuA4]${$¬%L)"*Ó*ú* +0àUÞWX YtYÔY8Z¼Z}\Ø\3]Q^¬^_
n oOufwòxÉ~¸ò‘f’t“D”¨” p•Ô•8–œ–w—@›Í›ý›œ…œ'¤žéŸ‹ â¡Ÿ¢µ¢³£É£ë¤¨¥¾¥¼¦Ò¦ѧªy¡O*åc­nxÖ^›ž¢ ¥ï§lB*
"&*.26CO[_n{ŠŸ£®¼Òßìý#)9@OZqºÅÕð -=O]h~±ÈÖï(6Lcgx}¤µºÏÝï ,<AUmrŽ¢ºÏÔí
&;Tfx|¯Êæù
$?X]z³¾ÃÒáìñ7QjoŒ£¨ÃÜáþ5DI\rw®½ÂÕÙåúÿ
"&3IVZbjrz~ž£¨­²·¼ÁÐÚâóø%-2:DINSX]bglqv{Šž£¨­²·¼ÁÆËÐÕÚßäéîóøý  %*/49>CHMRW\afkpuzŽ˜¢§¬±»ÀÅÊÏÔÙÞãèíò÷ü $).38=BGLQV[bgv~ ¥½ÓØàø"*/7?OcyŽªÀÚò %7<RWgyˆ ¥ÂÇÌÔë',49MUZbgzœ¡©±¹¾ÆËÓØÝåêòúÿ !).6>CVj®¿ÐÕéî 
 ' , > R e z Š Ÿ ¤ ¸ ½ Ê Ï à å í ò !
!!!*!.!2!6!:!>!B!N!Z!f!y!}!…!‰!!•!£!°!´!¼!À!È!Ì!Ú!è!ó!þ! """"#"'";"B"G"O"W"["c"k"o"w""ƒ""“""Ÿ"§"¯"³"»"Ì"á"î"û"## #2#6#>#F#N#V#g#{##¡#¥#²#º#Â#Ê#Ú#â#ê#ò#ú#$$$$$&$.$6$>$K$^$b$j$r$z$$$¡$°$¸$¼$Ä$â$ï$ô$ü$ %%%%$%(%0%4%<%@%H%L%T%X%`%d%l%q%y%~%†%%“% %¥%­%±%µ%¹%Á%Å%Í%Ñ%Õ%Ý%ä%é%ñ%õ%ù%ý%& &&&&!&0&5&=&A&E&I&Q&U&]&a&e&m&}&&Š&Ž&&&ž&¢&ª&®&²&º&Í&Ù&é&ø&ü&'''''' '$'(','0'4'8'<'@'D'H'L'P'T'X'\'`'d'h'l'p't'x'|''†'''•'š'Ÿ'¤'©'®'³'¸'½'Â'Ç'Ì'Ñ'Ö'Û'à'å'ê'ï'ô'ù'þ'((
((((!(&(+(0(5(:(?(D(I(N(S(X(](b(g(l(q(v({(€(…(Š((”(™(ž(£(¨(­(²(·(¼(Á(Æ(Ë(Ð(Õ(Ú(ß(ä(é(î(ó(ø(ý()) )))) )%)*)/)4)9)>)C)H)M)R)W)\)a)f)k)p)u)z))„)‰)Ž)“)˜))¢)§)¬)±)¶)»)À)Å)Ê)Ï)Ô)Ù)Þ)ã)è)í)ò)÷)ü)** *****$*)*.*3*8*=*B*G*L*Q*V*[*`*e*j*o*t*y*~*ƒ*ˆ***—*œ*¡*¦*«*°*µ*º*¿*Ä*É*Î*Ó*Ø*Ý*â*ç*ì*ñ*ö*û*++
+++++#+(+-+2+7+<+A+F+K+P+U+Z+_+d+i+n+s+x+}++‡+Œ++++ +¥+ª+¯+´+¹+¾+Ã+È+Í+Ò+×+Ü+á+æ+ë+ð+õ+ú+ÿ+, ,,,,,",',,,1,6,;,@,E,J,O,T,Y,^,c,h,m,r,w,|,,†,,,•,š,Ÿ,¤,©,®,³,¸,½,Â,Ç,Ì,Ñ,Ö,Û,à,å,ê,ï,ô,{¤R*èc°nxØ.’`›Äž¢ ¥ñ§Î(Ú¤7 
  
 !"#$%&'()*+%“&“'“(“)“*“+“,“-“.“/“0“1“2“3“4“5“6“7“8“9“öµ÷µøµùµúµûµüµýµþµÿµÚ€ÚÚ‚ÚƒÚ„ÚûýþÚÿßÿ»ÀÅ |:?ŠN‰$¼%½%Z)?+@+A+30405060708090ðUñUìW¤XYYâYFZÐZÑZÒZÓZ\æ\C]D]_^º^___ _!_³`aƒaxdae†ff:gÅgÆgÇgÞoßoàoáoâo„u2y3y4y5y6y7yþ~+ƒ“R”¶”~•â•F–ª–…—”œ6†ŸøŸš Ä¢Ø£Í¥á¦ªçœ