rust ó#rustc 1.98.1 (48a229cea 2026-09-01)Á‰m6GÞ­n6ÇèÆ2-64f5f36fb0927694ÁûÊÆÍRLñ.åSÛAúwjL-df1bddb45adbe94bÁ«ª1Úë• ¢›ºXÝÓrŽ*-1ad4f876c768bda9Á±ò‰<å%Z‰>¸64‡ËV`-2d2ab9fb0fe1def5Á»ÄóG Øg{ë(3íi«F×-06449a08aaab5e30Árustc_std_workspace_coreÁ€û{ù`ä"Ei¥€ÞÏ%G-cb0d4d77988d81b5Áó"Æ)ΉÉðÛÕpEÍ—E-3ec41d3a5a80a4a4Á miniz_oxideÁÐ8°ø‚ðbž Lƨ°J-e44eaef1807e5fc0Áadler2Á9lí©yA6P/D$UBŸ-dca52f01a59c33e7Á hashbrownÁ™¸ÈXó®÷ …ùý{e-143c77bb957d9940Árustc_std_workspace_allocÁð…¨À �¶÷Üúò·_z%í-145a318e0772276cÁ std_detectÁK(ƒ0ì*ãÛ8²D?-f99feda5ce9e492aÁrustc_demangleÁµ%jŽeårVŠÕÓ•-cfd0ab54bb33760eÁcfg_ifÁÍ}λ—©ŒÕž§C•×o-360da4ba13154744Á addr2lineÁ‹c²ŽúY\ÈGÞö÷ö--09755979c57b7e64ÁgimliÁ¢±QÄÍ`ª§DÞåù¬y-9a1fede77fbbf2f0ÁobjectÁö‚F λâËvú.zËí-7ff85ea729a864ffÁmemchrÁž˜]²1<õ¶=U�ý�Où-0e3477fb2664a277Á  ÿŽ—jl‹®¾To–K™G-549498e8b2e4d924Á»9|:×H”©~´CZÊG-65e1a9c648e56d89Á* AtomicBoolÁT·¬„Ö*²Dì*K°¬„ØhermitÁ4™Å®¤˜wasiÁ$‡ÅÊ”òÉ<ÃÉ<ÜÐ AtomicUsizeÁ\‡¬„\вD”¬ÐNEXT_IDÁ<„¬„ê„AsRawFdÁ<ÁÅ®¤�„ FromRawFdÁLÊÅ® "„RawFdÁ,ÕÅ®:<ÍWakerÁ,ƒÅsolarisÁ¬Êžÿ ,‚Å®¤Òòà <ÚÅ®¤©òá LãÅ®‰à <ÂÅ®¤‘‰á LËÅ®— SocketAddrExtÁl9ÅandroidÁ¬—testsÁ,þ%Í$ó%¬set_nonblockingÁ|‚� ÅaixÁŒ¨Œ ÅillumosÁ¬»Œ Ū ¬ÒŒ ÅvitaÁ”éŒ ü§ŒU UshellÁ,‚ Óos-pollÁ˜®„ ¨®ƒ äà <œ Å®¤ì ä AsRawSocketÁ\Ï É<« äø\� ¬„â ä²Dš ¬ä SelectorIdÁTñ1 ¬„Æ1 ŽAsFdÁ$Ø Å®¤§ Žà <Þ Å®Ž BorrowedFdÁTç Å®68Žá Ló Å®KMŽ IntoRawFdÁLþ Å®ikŽOwnedFdÁ<‰ Å®…‡Žÿ ,’ Å®šœŽ” \Ê É<  ŽAsSocketÁD× ÉŽBorrowedSocketÁtá É<>Ž FromRawSocketÁlñ É[]Ž IntoRawSocketÁl€ Éz|Ž OwnedSocketÁ\� É—™Ž RawSocketÁLœ ɲ´Ë÷ $§Å®¤öËà <­Å®Ë§T¶Å®,.Ëá LÂÅ®ACËÛLÍÅ®VXËù<ØÅ®kmËÿ ,áÅ®€‚Ë” \™É<ï˾D¦ÉËØt°É&(ËølÀÉ8:Ë—lÏÉJL˶\ÞÉ\^ËÓLëÉnp«÷ $ÚÅ®¤©«à <àÅ®«§TéÅ®,.«á LõÅ®AC«ÛL€Å®VX«ù<‹Å®km«ÿ ,”Å®€‚«” \ÌÉ<¢«¾DÙÉ«ØtãÉ&(«ølóÉ8:«—l‚ÉJL«¶\‘É\^«ÓLžÉnp‰macrosÁ cfg_os_pollÁcfg_not_os_pollÁ cfg_os_extÁcfg_netÁ cfg_io_sourceÁcfg_any_os_extÁtraceÁºerrorÁlogÁinterestÁREADABLEÁWRITABLEÁAIOÁLIOÁPRIORITYÁìûžœremoveÁ is_readableÁ is_writableÁis_aioÁis_lioÁ is_priorityÁ#´#¹&º(ñÀ ********** * * * * **»:registryÁ*RegistryÁ<selectorÁ*>œ>À *A as_raw_fdÁ*Cñ*EregisterÁF�E reregisterÁH�E deregisterÁJ�E try_cloneÁL Eº*Oñ*Qas_fdÁ*SßsysÁtokenÁVW”wakerÁYYYYYY_˜ ` _wakeÁeventÁcàdddddi�iÚiìiis_errorÁiis_read_closedÁiis_write_closedÁi˜iþi‹ifrom_sys_event_refÁdtñu EventDetailsÁv v'aÁvóuzñceventsÁ||||EventsÁ€innerÁ|‚ with_capacityÁ‚capacityÁ‚is_emptyÁ‚�‚clearÁ‚…|‰¦‰Ÿ‰IntoIterÁ‰�|Ž¦ŽŸŽ¥ Ž size_hintÁŽŠ|”ñcsourceÁ––––––áœþœ”œ¬– � þ ” ¬ccccc̱pipeÁ²²²²±featuresÁguideÁInterestÁº ºó¿•ÁÝ ÄŽ Ƥ  È–>˜ Ê U debug_detailÁUÌÍsyscallÁUͺÐÐÐÐÐÐÐÐÐÐ Ð Ð Ð Ð ÐÐÐÐÐ㘠ãÄå ãselectÁç ç ãþê ÐìîÐîßÐinterests_to_epollÁÐEventÁÐÚÐàóóóó�óÚóìóœó«óÀó˜óþó‹ó debug_detailsÁ€ check_eventsÁÐÍͦ„„„„„„„„„„ „ „ „ „’˜ ’new_unregisteredÁ’Õ• ’ ack_and_resetÁ’fdÁ’wokenÁ’resetÁš „œßÍsourcefdÁžžžžžžžž¦¦¦þ¦”¦¬ÍÍÚ ¬¬¬new_rawÁ¯ ¯ ÐÐSelectorÁ³epÁеñã”· 㬹 Ѐ EventsDetailsÁ¼ ¼ó€¿ñÐstateless_io_sourceÁÁÁÁÁÁÁÁ IoSourceStateÁÈ Áʘ Êdo_ioÁÌ�̂̎ÊþʔʬЄ™ ÔÃ&„ÖñžSourceFdÁØ Ø¦ØóžÜ¦ÜñÍnetÁßßßßßßßßß new_ip_socketÁß new_socketÁßSocketAddrCReprÁêv4Áêv6Áßías_ptrÁß socket_addrÁï ßto_socket_addrÁÍtcpÁòòòòòòòòòò ò ò ò ò ò new_for_addrÁòbindÁòconnectÁòlistenÁò set_reuseaddrÁòacceptÁ† † ÍudpÁ‰‰‰‰‰‰‰‰‰‰ ‰ ‰Ÿ-‰only_v6ÁÍudsÁ—————————datagramÁ           bind_addrÁ unboundÁ pairÁ—listenerÁ­­­­­­­­­­ ­ ­ ­ ­ ­­­­¾/­Ý-À —streamÁ connect_addrÁÂÞ/—UNNAMED_ADDRESSÁ— path_offsetÁ— unix_addrÁ—Þ/Ï�Ï ¬¬¬¬¬¬¬¬ ¬ ¬ ¬ ¬ ¬¬¬¬¬¬¬¬¬¬¬¬˜ ¬êí êtry_ioÁì‚ì�ì ¬ðþð”ð¬¬ôwriteÁõ ôwrite_vectoredÁ÷ ôflushÁù ¬ûÎ3ü ûà3þ ûû3€ ¬‚”¬„ from_raw_fdÁ¬†ß¬ˆ into_raw_fdÁ¬Š”¬ Œî¬ Ž”¬ �í �‰3’‚’�’ ¬ –þ–”–¬¬ šreadÁ› š read_vectoredÁ� ¬Ÿö5  Ÿ‡6¢ ¬¤”¬¦”¬¨ð4¬ªß¬¬Ë4¬®”¬°î¬²”¬í ¬SenderÁµè¬·ñ¬ReceiverÁ¹è¬»ñVTokenÁ½ ½óVVVÂŽVÄñVVÇ•VÉÝVˤ V Í–V ÏÆÐÿY™ ÒèYÔñdŒ$ÖèdØŽ|IterÁÚ¦ÚèÚposÁ|Þ¦Þñ|á¦áŽ io_sourceÁääääääääää ä ä ä äIoSourceÁò�òƒòèäö�ö˜ öÛ)ù‚ùŽö into_innerÁäý�ýëýÃä���Åä„�„þ„”„¬ä‰�‰ñô*Œº,�ê/ŽŽŽŽŽŽŽŽŽŽ Ž Ž Ž Ž ŽŽŽŽŽŽŽŽŽŽŽŽŽŽ TcpListenerÁªèެŸ-¬from_stdÁ¬Ý-¯ ° ¬ local_addrÁ¬set_ttlÁ¬ttlÁ¬ take_errorÁ޶þ¶”¶¬Žºñ޼ð4Ž¾ßŽÀË4ŽÂ”ŽÄîŽÆ”Ž È”��ä0ËËËËËËËËËË Ë Ë Ë Ë ËËËËËËËËËËËËËËË TcpStreamÁèèËê«-êç=ê peer_addrÁê‰>êshutdownÁê set_nodelayÁênodelayÁê›>êª>êµ>êpeekÁõ ê‰3÷‚÷�÷ Ëûö5ü û‡6þ Ë€ö5� €‡6ƒ Ë…Î3† …à3ˆ …û3Š ËŒÎ3� Œà3� Œû3‘ Ë“þ“”“¬Ë—ñË™ð4Ë›ßË �Ë4Ë Ÿ”Ë ¡îË £”Ë ¥”�ŒŒŒŒõ-«««««««««« « « « « «««««««««« UdpSocketÁÃè«ÅŸ-Åç=ʼn>Å“AÅsend_toÁÊ Å recv_fromÁÌ Å peek_fromÁÎ ÅsendÁÐ ÅrecvÁÒ ÅöAÔ Å«-Å set_broadcastÁÅ broadcastÁÅset_multicast_loop_v4ÁÅmulticast_loop_v4ÁÅset_multicast_ttl_v4ÁÅmulticast_ttl_v4ÁÅset_multicast_loop_v6ÁÅmulticast_loop_v6ÁÅ›>Ū>Åjoin_multicast_v4ÁÅjoin_multicast_v6ÁÅleave_multicast_v4ÁÅleave_multicast_v6ÁÅ¿.ŵ>ʼn3ç‚ç�ç «ëþë”묫ïñ«ñð4«óß«õË4«÷”«ùî«û”« ý”ŒŒÎ.€�/���������� � � � � ���������� UnixDatagramÁ™è�›Ÿ-œŒ›¾/›ç=›«- Œ›Ï/›Þ/£ ›‰>›“A› F§ ›ÝF© ›ŒF«Œ« ›ÌF® ›µ>›¬A›‰3²‚²�² �¶þ¶”¶¬�ºñ�¼ð4�¾ß�ÀË4�”�Ä”�Æî� È”€€ê/ËËËËËËËËËË Ë Ë Ë Ë ËËËËËËËËËË UnixListenerÁãèËåŸ-æŒå¾/åç=åÝ-å‰>åµ>Ëíþí”í¬ËññËóð4ËõßË÷Ë4Ëù”Ëû”ËýîË ÿ”€€ä0‚‚‚‚‚‚‚‚‚‚ ‚ ‚ ‚ ‚ ‚‚‚‚‚‚‚‚‚‚‚‚‚‚ UnixStreamÁžè‚ «-¡Œ •1 ç= Þ/¥  ‰> “A µ> ¬A ‰3«‚«�« ‚¯ö5° ¯‡6² ‚´ö5µ ´‡6· ‚¹Î3º ¹à3¼ ¹û3¾ ‚ÀÎ3Á Àà3à Àû3Å ‚ÇþǔǬ‚Ëñ‚Íð4‚Ïß‚ ÑË4‚ Ó”‚ Õ”‚ ×î‚ Ù”€ŒŒŒŒÀ8À8Â8Å8Ç8Ç8É8É8'8)8)8)8?8@8@8B8D8D8D8F8F8H8H8J8J8L8N8P8P8P8R8T8¶8¶8¶8å8ç8ç8ê8·8¹8í8ï8÷8ø8ù8ú8û8ü8ý8þ8ÿ8€8€8€8�8�8À8À8À8Ì8Ì8Ì8Ð8Ð8Ñ8Ñ8Ò8Ò8×8×8×8“8•8—8˜8™8š8�8Þ8Þ8Þ8¨8¨8©8©8ª8ª8î8ï8‚8ƒ8„8…8†8–8ª8¿8À8Ê8Í8Î8¸8¸8¸8ë8ì8ñ8ñ8ò8ò8ó8ó8õ8õ8÷8÷8÷8ù8û8ü8ü8þ8þ8þ8€8‡8�8¼8¼8¼8‘8’8—8—8˜8˜8™8™8›8›8�8�8�8Ÿ8 8 8¢8¢8¢8«8±8Ã8Å8Å8Å8È8È8Ê8Ì8Ì8Î8Î8Ð8Ð8Õ8Õ8Õ8`8b8Ù8j8k8l8m8n8o8p8q8r8s8u8u8u8z8{8{8{8à8à8à8ã8„8…8†8‡8ˆ8‘8’8•8•8•8�8�8ž8ž8Ÿ8Ÿ8¢8¢8£8£8¤8¤8ù8ù8€8ƒ8†8†8‡8‡8ˆ8ˆ8‹8‹8‹8¯8²8³8´8µ8·8·8¸8¸8¹8¹8»8»8»8¿8Å8í8î8ï8ð8ñ8ò8ó8ô8õ8õ8÷8ü8ü8þ8þ8þ8€8�8�8ƒ8ƒ8ƒ8†8†8ˆ8ˆ8ˆ8Š8Œ8�8�8�8�8�8‘8”8”8•8•8–8–8˜8˜8˜8œ8¢8È8É8Ê8Ê8Ì8Ì8Î8Î8Ð8Ð8Ò8Ò8Ô8Ô8Ö8×8Ø8Ù8Ú8Û8Ü8Ý8Þ8ß8à8á8á8á8â8â8ã8ã8ã8ä8ä8å8æ8ç8ì8ì8í8í8î8î8ð8ð8ð8ô8ú8ž8 8¥8¦8§8§8©8©8«8«8®8®8°8±8²8·8·8¸8¸8¹8¹8»8»8»8¿8Ç8è8ê8ë8ì8î8î8ï8ï8ð8ð8ò8ò8ò8ö8þ8£8§8¨8©8ª8«8°8°8²8²8²8´8µ8µ8·8·8·8º8º8¼8¼8¼8¾8À8Á8Á8Ã8Ã8Ã8Å8È8È8É8É8Ê8Ê8Ì8Ì8Ì8Ð8Ø8œù ºº»™!¼ó >kÒ!õƒüË�Çßm÷±ßmßmÌßmˆßm…ßm¯²ßmßmíßmËÔßmßmÊòßmßmŸgßm¢#::»;œ*ÑG;@KŸgŒoŸg<<«=º*‹CŸIm#«„$Ço¢#ÇoŸg³³†(´–(Ðýg‰­üw&„$Œp¢#ŒpŸg¼¼½Ì(¾óó ªkvëXøw€ŸgÔÔ™ ÕÃ&„ú7ð1>𹮢#ŽqŸgØØÙº*Ûó Bù ŠÅ\}¦œÍqŸgµµ°7¶è¬Iê òß{7?œ“r� “r�  8“r¬“r­)­) ChildStdinÁ®)è†)ÆQæ£HN¤#“r¢#“r¦#“r¬í#í#ùî#Ã&Û#¬ݶÑ÷˜Ì“r„$“r¬“rÌsŸg¹¹Ó7ºè¬{!Ÿn¥¨ªBœ›tç›tç 8›t¬›tÁ)Á) ChildStdoutÁÂ)è†) ¦4£”BçଛtÑ)Ñ) ChildStderrÁÒ)è†) -™uî6–l¦#›t¢#›t¤#›t¬Ìs›t„$›t¬›tÌsù ½½¾÷7¿ó ¡¼€]x‹¶ˆ¼v…¼vŸg¼v�Ǽv÷±¼v¼v̼v¯²¼v¼ví¼vûh¼v¬¼vŸgÒÒ™ ÓèYåV†i¹q‚'…ÖÖŒ$×èd¾rî?!e»ÖŸg–xŸgvvw�yód Ïö«¦„Ôב8ŸgÚÚ®9Üè|ÝÊ9|ú™¼Pˆf¦…�yŽP ¦€€Ú�è| m´ aÄQ�yŸgâyœŸŸ BoxÁ£ó‹¤ô‹ljô²ßk#�ÅFÅFÆFGlobalÁ Ä› +ÉÑÜ"òòÎ:ôƒäõèäW¥A¨nÆìzé"¥{œ¥{Ÿg¥{œªª¿=«èŽ%¬i4²º=Ÿg‡|¦#‡|¢#‡|¤#‡|¬Ìs‡|„$‡|¬‡|Ìs¬å!å!æ!¿=ç!óÏ! t�+¼³-‡|çèèå@éèË2œd31¥\ç 8Ä}� Ä}� ù}œÄ}ŸgÄ}¦#Ä}¢#Ä}¤#Ä}¬ÌsÄ}„$Ä}¬Ä}Ìs¬â!â!ã!å@ä!óÏ! · !©+€”Ä}œÃÃÎEÄè«}šTÌIŸg¯¦#¯¢#¯¤#¯¬Ìs¯„$¯¬¯Ìs¬Í"Í"Î"ÎEÏ"ó½" êIÄ™ç…g¯œ™™ùKšè�ˆÃhµÉUŸg쀦#쀢#쀤#쀬‹G‹GŒGùK�GóëF K ˆ�ÕàÙ>쀬Ìs쀄$쀬ì€ÌsœããÝOäèËôüf/Æ[ïæŸg±‚¦#±‚¢#±‚¤#±‚¬ÛGÛGÜGÝOÝGóÃG Jq¡«–=O±‚¬Ìs±‚„$±‚¬±‚ÌsçžžÏRŸè‚8ÖÈ­¡¾(éç 8öƒ� öƒ� «„œöƒŸgöƒ¦#öƒ¢#öƒ¤#öƒ¬¤H¤H¥HÏR¦HóæE Dÿážö‚Šöƒ¬Ìsöƒ„$öƒ¬öƒÌs½ºÀ½¾ºÆ½¿ºÇ½ÁºÉ½ÃºÁ½ÄºÂ½ØÖáÚÆºË½ÈºÍ½#º&º(ºC:O<µ³¿¼ÖÔÜØ·µ»¹Ä½ÔÒtÖzvÞÚ”€‰òºª—èïú™ñãËžA:S<Ԇµª¹¾ª›èóþ™õãÏžQ<쳌µ°¹Äª¡èùÃÆ™ýãמ¦Øðµ–¹ Ÿ„ò¶ª“èëö™íãÇžôµû …èŒ ¹žÀ ‚µŠí#޵¤¹¦¹®í#²¹WÂí#ƪÈå!Ÿí#£è¥â!÷í#ûÃýÍ"‹GÄí#È™ùÛGûí#ÿãÓ¤HÕí#Ùž„µ¬¹Àª�èõÃÀ™÷ãÑžˆµ¨¹¼ª™èñü™óãÍžš¹Ÿ ûè€ ¯ž´ Ͻ‰ ŽÚýò�òù ‰�Ç÷±Ìˆ…¯²íËÔÊòŸg¢# ’„$ Pœ D� M¬$¤#³¦#8ç8ûh$ŽPÄQÜ"é" Uý3‚%ý3‚ ù ù ú ¬ü óÕ  >¨WTÑp™Yý¯}%‚  †4‚]‹4‚-‹4‚ ”ŽC  •4‚y«éÞ_%„ÀHûýÐ3L‚Š H·ýÁt› ‚¼ -‚4‚¼ -‘4‚ù«ÄÞ6_IJÍý3‚o ßmyÍ��o”Žn ”Ž ¬î ¹ÃˆÂ†Í�%/(Š�Å$)ßm5Í�=FPP‘Uã@‚%ã@‚ ”ŽB  ì@‚]ó@‚-ó@‚ ”Ž�  ý@‚ù½“„3_ þ@‚ ­ Å™�²‚²ƒ²LessÁ„²…²†²‡²ˆ²‰²GreaterÁв%ÑÓ¡yûš›ÇB �ÉUý±@T‚™ H ·Õ¼ -è@‚ë¼ -ù@‚ù½Õƒƒ_½³�î@‚řǙș­É™Ê™àË™óG*¤�R{9 ™”Í�Í�™” ”Žñ”ŽðLî Ze lip”Ž© gdah”Žà _\V]  ÉÍ™ ¾�¼ »£¼ ¸µ½³®™”#Í�,Í�5|”Ž{N”ŽMaî oz0b0001Á0b0010Á0b0100Á0b1000Á0b10000Áü™-ü¢"  Ä¢ ¹ D» 5ü�7 º ÆüñWßmD…”ŽŠ-k_Áü¸ -üÁ "  ÄÁ ª›DÚ  0ü¯ 7 º å ü� WßmD¤ ”Ž…-k_Áüà-üé"  Ä骛D‚ 0ü×7 º �ü¸WßmDÌ”Ž…-k_ÁüïAä‘d‘4‘”Žu  œl < ”Ž­  ¬x üø6 e°b‚ ýÇ^"‚  řǙș­É™Ê™àË™óG*¤�R{9 ”Žc  •ªb‚  " Ðb‚ à”Ž ·f‚ Æ ­üæK º °·ü¨�= ¼ ,˜P ¼ ,¨ýða΂¹ GeËb‚ýä\�‚¸ `ý¬*ñƒÇ9ªî$ƒù˃â[Á°ùËêä4 ßmDÓßm$¹ßm,¿”Žcbb”Žc;”Ž<Ì ñ=Ëb‚–bî f( ·å骈%ƒçåäãꔎ  ˜ ¼ ‡ ”Ž# +¨·¥7Æ• 5<  (Äøª›ÐF€ º}|{ ßmáßmàßmß”ŽA@@”ŽA”Ž%î *íüô-ìƒdƒ4ƒ”Ž   Žt’l“<“  ”ŽQ   Ÿ @’ )/£ Ì   l¢ %ÎÚn UÈÚn - ®µ@%ŒÛnřǙș­É™Ê™àË™óG*¤�R{9 ßm  Ûn æÚn   à”Ž%ñÚn œ£ º UìÚn Å™ßm õÚn   ¡Ûnü±„A¼ ,ŠT¼ ,›â¸ FýÊÙ×nþW”Žßm »™­áÚnýŽHB±Ž#‹­‹­”Žëå»+ Ùª„Ùßm$¿ßm,ÅÌ ÈÇÇ”ŽÈ  ”Ž¡=áÚn”އßmnkî o.‹­Ç Ì»d¼4¼”ŽV  Ç@ q Óô»“ ØßüŠU¼ ,Ã$¬ßm$£ÆÅ”ŽÅ!TDË”Ž! )÷¥5¤Z { ßmÅŔޯ#W Ìådæ4攎Z  ñ@ u ýôå— ‚ ‰ ü´U¼ ,í$Ößm$ÍÆÅ”ŽÅ!TDõ”Ž! )í·¥5¤Z { ßmÅŔޯ#W ¤†!d‡!4‡!”Ž^  ’!@ y ™!̆!› ž!¥! üÚ K!¼ ,Ž!$÷ ßm$î ÆÅ”ŽÅ!T–!”Ž! )Ž!·¥5¤Z {  ßmÅŔޯ#W ¤¢"d£"4£"”Žb  ®"@ } µ"Ì¢"Ÿ º"Á"!üö!K%¼ ,ª"$“"ßm$Š"ÆÅ”ŽÅ!T²"”Ž! )ª"·¥5¤Z { !ßmÅŔޯ#W ÌÈ#dÉ#4É#”Žf  Ô#@ �  à#ôÈ#£  å#ì#"ü—#U)¼ ,Ð#$¹#ßm$°#ÆÅ”ŽÅ!TDØ#”Ž! )Ð#·¥5¤Z { "ßmÅŔޯ#W|è$B  $è$,ñ$Tí$ý$%üº$Cßm$Ù$ßm$Ã$ßm,É$î BšÃ‹Œó%|ó%,ô%½ý šÃº¸¶ �&S”ŽÔê%”Ž ƒ& „&‹&'ü¸%Sù%£ß% ßmLÈ%ßm,Ó%”ŽÓßmÒßmÑ*î .gšÃ¡tÔlÇoèl?ü¦lB ÇoLÀl Œo,¶l 2=³. ÇoŒpÌsЗЗÑ— I32NotAllOnesÁÒ—ó§  >½²È˜;„Ùµ “  Ä.Ÿ“BüÙ’Fü…ïFT\Ž“üŸ@ï\ºïýŒ.?ø#\ÎùµÆ …“�–U».,ð’öÆ,æ’ÂÇŽü‰¶'Œ ��4‰¶$™¶,Ÿ¶L¦¶ü�¶ ¶¶FüÛ³Û¨£ ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw�7�7ErrorÁž7½ Ù6wQ?mˆ!؆t«´êÆ,î³ êÉ4õ³¼v,…´ßmL“´.·-�0 interestsÁ<äÉvü�Ë) žêÉ4�Ë$“Ë,™ËL ËüˆË"°ËHüÏÈᨠ£ ÈÊt¡ÉêÆ,äÈßË4ëȼv,ûÈßmL‰É+·-�0«Ë4‚èÌç¼³Ý ŸêÉ4³Ý$ÅÝ„ºÝÐÝJü€ÜШ"£ ÈÊt¯ÜêÆ,•ÜßË4œÜ·SÛΦ^eŒpÌsÂÇ ËïT ýïûøø#õô�–í,œïêÆ,’ïÂÇûpX(ˆ Ìs&2 Ÿg((ºÃ Ùg× (æ±Ò„‰C(¾ (¿¶qÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwĤĤŤ¤Ê Ñâó:½ÖàMõ Œpÿ €g€gŠ‚gê ûcƒgbufÁûcØ«q¢1È¡EþÑœ  ÌsªâÔ³oœ}ˆàÔþÑä›Ò�ÌsÂÇÎ Éßï«�ø#š˜�–‘,¶†Ô,¬ÂÇ�ÿ”ð Lð !Õw �!Ìê  ½ ‚!‰!÷ü» N¼v,Ú  ÌÌ epoll_eventÁÍÁΫš8¢ø‰EÉ,È ÕwÈÇà{üÃ!-dÄ!ÜÄ!, 9üÃ!2 ô!üÃ!uo)ü…".   ü…"3¾ ·"s¾"øü�!¯$´!Ý×,¢!þŸà*Llâ!ßt¤"à üø".Üù"dù"! “#@ ³ ¥#üø"3Ù ª#±#ùüÄ"m$é"Ý×,×"¼º¹à!Bt—#á üè#.Üé#dé#! ƒ$@ ­ •$üè#3Ó š$¡$úü·#j$Ù#Ý×,Ç#¼º¹à!Bt‡$âü�%,d�%Ü�%, “ü�%1 ¿%ü�%ýÊ*ü”&+  ûü”&0 Ã&üØ&.  ; üØ&3Y Š'ü“&y_‹'å’'ûü§$ë$Ï$Ý×,½$„p‹Ùà3Ut­%ãl²&ß„ö&é ü�(,d�(Ü�(, �ü�(1 ±(ü�(èüñ(,  Õüñ(1 ¡)ü¶),  ü¶)1 æ)”œR² 0p��ü¼*-™ü ï*üü˜'×$Á'Ý×,¯'�‰¤>à4VtŸ(ãt�)átÔ)âtÛ*â ü©+.ܪ+dª+! Ä+@ ª Ö+ü©+3Ð Û+â+ýüõ*m$š+Ý×,ˆ+¼º¹à!BtÈ+à,É,bÔ,þüè+l$„,Ý× ö+ ,Ÿ-ºª-ÿüÚ,P$ö,Ý× è, šËüØBÈÈÉ´) ðþ&_…¹%lï:,û €  Ž#‚ ìz û@H ÿ†Ìü æÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwŽšËlÕ øê,½Þë ÄæëÊäëø'œ*ioÁ/¿Øë1@”ñ §B§BFileÁ¨BèéÏDǃÕ.{VbþÑ(”Ë"›Ò/"±Ò$="±Ò§¬?”Ï ”Ð×o†Ó{ Žq…�Ô�þÑ   —î„ð"·œÄ΂ðþÑP›ÒâÕw8ÁÕw8ÁÝä—îöVöV÷V¡íøVó¼V ÜÐÊ85Í¥ ¶V¶V·VFileDescÁ¸VóóU ðwþþ®ÌsÂÇ  î�ü®@ý‹.H¯#\Ýýº÷?½U·.ý�ß?G™X]Â.ýÔ£?F¯V]ËßG0ø#]‚¤F/�–(,Åçï,»ÂÇ4°h–ù  *6þÑ(–Ù÷$ çg %±Ò(v5–Ý –ÞÞe†Óq ØØÙº*Ûó Bù ŠÅ\}©�Ô±þÑ  ›ô€öÛœèòþõþÑHÏôÕw8Á÷Ì Õw5BO   ùüØ#ÌÂ÷,ï†÷›†÷£ˆ÷ø†÷µI_Á% Üê̇†÷ˆ÷dÕw2ÁÕw2ÁÕw2Á¨«Î8  òòÎ:ôƒäõèäW¥A¨nÆ—îbnþÑ(«®8 ý'›Ò (±Ò$(±Ò³¸?«²8  «³8 ¸o†Ó{ “r…�Ô�þÑ  éù%âû.·œÄÎàûþÑ\›ÒâàL ê( Ž#‚ àL ),4êL ìüÛK� üÆ— ù—îïÈü� —îÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw§ýšËUÿÈü§ýtÖL  Ì—î�ý§ý¬Â <ÜL ïÈü§ý°ýšþ® ÁýlÿK Åû,ïK Èü öK œ%Âü|ipÈü£Œ*Âü—�*ÂË âL ãL ïÜÁýßL �ýò„ð ÝL ÈüõœÐÈüÂü7œ5‡¢G5+ÈʵT ùüÒSc -ù—îúµýÈÊUÿü�T" Ë Ì—îÇ�ÀÜ“T úÐ�d ý£¡HÑ<§T ýסÁe‚2ýØÜ6G“Xe�2ý¹¤BF±Vmœ2ý±/Sú#mè¤Fý¹4o}ÆÌs½Ù/ýˆ_~ìÌs͇5}ý˜U9}ÏÌsÕÙ/ýì8~ íÌsEÃU} z!�–Uô/,¿\ “r$¶\ ÂÇb)dÌ] éù—î—ñËñÌsò] ‹ü¢]P rü—îdÙ] ý¥ç0”Æ—îÌs4æ] ý�X^“$mÂç”�Áe³XŒ“XeÀXý–¡5F©VeÍXÌs$½] “r4ª] ú‚ ¯ ìÀ_ tÎ_ ýŠ[6ý [u­¢F ¶V}ïÝG öV ¿[�Ùø §B À[üú ¥  ò—î€2øê Ü_ ü¤_D µ ç_ î_ �üý^q ýÌZ{•$ìýú¡GF«VìýºÝJG•X ý¨øH¿ýùZHüÏ Ö ø—îGˤ˜ “r$•_ Ìs…_ éùu—îv—ñwËñvÃ&0Ç—î ¤ ¨¬û`  éù(4þÑ(¬Ù` õ3›Ò4±Ò$4±Òy~?¬Ý`  ¬Þ` ¼o†Ó{ ›t…�Ô�þÑÜàûäâû쮜»ÅàûþÑ›ÒÙ‘u Ù4Âü ‘u ë4!)›u ’üŒt� ä ù—î•Èü§ý°ýšþ§ýt‡u �Ì—îþ”§ýw <�u •Èü§ý°ýšþ$Áýl°t ½“, t Èü §t œ·ÂüúÈü(6Âü'6GP “u ”u •ÚÁý�u þ”ð„ð Žu Èü…œÎÈüÂü¼œTñƒ éù—î—ñËñÌsÂÇ(  œ„ © üɃS 4ü—îdüƒ 3³#l‰„ 1Á-+“X'%±V!ú#ÆÌsìÌsÏÌs   íÌs (�–,რ›t$؃ ÂÇ6û¨)¯)éù—î—ñËñÌsÂÇt) o)ƒ… «üÀ„C £ €—î´ç„ ‚¯#\ò„ €½|z™Xvt¯Vp�)ø#m™)�–’),ׄ ½“,Í„ ÂÇ *°t‹‡ éù—î—ñËñÌs³‡ ¯ü݆V ” ü—îdš‡ #Æ—îÌs4§‡ “$¨ Á¢ “X©VÌs$ü† ›tDå† Ÿ  � 쇉 t•‰   ¶V öV §Bþ ò—î{:øê £‰ üéˆF ¹ ®‰ µ‰ ³üˆs •$Ùý«Våú•Xÿö¿òïø—î$Ëì›t$Úˆ Ìsʈ éùS—îS—ñd Ëñc Ã&1µ—îí(°ü&°�'Ã&+¼v7 ¼vAJTH±Â' Õw'3þÑ(±ƒ'C<ÏôS<±Ò$o1±‡' ±ˆ'Åa†Ómž¢u�Ô}þÑË  ÕwØ—¤à£œ°º•¤þÑ ÏôÎH²Â' Õw!Õw2²Ê' ²“'ÈH²Š'ž¢ž¢Õw‹Õw’5î BL³—'ʳ•' ž¢&0 P´™')½¸„_ Õw1½¿„_ ÕwdI ½Å„_ f Å™™”´¢'´£'Ìžµ¥'α3I¸³HµÂ'™–Ïž¢מ¢ß™”çÕwäÕwÎþî  #ÕwÕwdIµ¨'ÎèJ¸³Ü™”ž¢ ž¢Õw¶Õw¡/î =H)¾‡Ñ‰ Õw‘¾ûЉO@ ‹iÿ)¾ûЉMa¾�щ ¾ŒÑ‰¶®'Ð ¶ª'ù¾¼Ðc‰ÿ¦­«H¶Â'-ž¢5 ­«@ÕwÊPƒ]g§«Ô,—(Õw¢(Xüð'2Õw,‡(¼vø'Ž -ˆ·— Žq'3þÑ(·øÑA›ÒáA±Ò$ïA±Òx}?·ü ·ýÕo†Ó{ âw…�Ô�þÑÛ çïæçï¾È³¯þÑ›ÒÜ(¸ï¸ôÙ&¡¿�<ш¸£–xU –x_hr!- -'-ß×F-Õw&-%- ½$-¸jüíK*-÷ô”¼v,„Ú°,úÕw»-»-Mü« $ --ß×-0- >D-jpÕ --†D0-A-- - ¸D-ÔD-ˆ-küÿV-ø$œ Ú°,’ *..1.¸-+[-ß-à ----ß×:--Y- ÍE--ðE-ð lüš V-ùüÆ $$· Ú°,­ â-á-á-#U(-á '-%-$-+-ß×J-*-i- ×F*-)-úF'-àmü�P--úü¹!$ªÚ°, ò-ñ-ñ-#U8-âüé' F-D-ß×H-s- ÛGH-jp–]-\-#Hs-„-[-b- UHZ-X-W-^- ‘H V-­HT-S-°-c-ÞHz-nüº\F-û}$ÚÚ°,ÐÐ.¼.×.].%.3cL-ãK-ßJ-é üÈ&( X-V-ß×Z-…- ÛIZ-jpö&o-n-�-l-s- @Jk-i-h-o- |Jg-e-ø-.¸J.—-ØJ é-êJ i-Kc.oü˜&^d-ü¢$¹&Ú°,¯&/ó./¨.p.3ci-ãh-ág-âf-â e-c-b-i-ß׈-h-§- Lh-g-5Le-�-pü«,Vk-ýü×,$$È,Ú°,¾,0././.#Uv-àu-ÖL¨3qüÜ2L{-þüƒ3$ô2Ú°,ê2 =�-IMÞ5rü’5L–-ÿü¹5$ª5Ú°, 5 =ü§80ô¨8L¨8 –x Ö8ü¥82 æ8ç8sü­6ºÚ°4é6Ý×LÎ6¯Æ… ß׆ sys_eventÁ'K ˆ¹å  ây$þÑP¹ü Õw'3þÑ(¹¼òN ÛgO ±Ò(O±Ò±¶'O ±Ò�”V¹À ¹Áà’†Óž ÚÚ®9Üè|ÝÊ9|ú™¼Pˆfß�ÔçþÑj ÞÇvþÑJ•¤S—¤\ œ.9¯ÊþÑ•¤þÑ—ÊÈXˆºå ÞÇPºü Õw(ºÃ ÚºÇ ºÈãBßÉNÝÉVÞÇ•Õw€nx †ÞÇ¿ †Õw®Eñ¹ …C…CüˆC±ÓÐ=‰C¶Ð=ò¹ÚàÅß×òz((RawVecÁ+è,_markerÁ©XÕ”ˆó‰ß×òz-- RawVecInnerÁ/í 0capÁ1«#,P»›McÎòz¦—¦—§—UsizeNoHighBitÁ¨—ó§  „H·’äèBަC Õw ƒºÛ„ü–EýòIŸCß×òzTËý¹\`Gß×òzUü²ýøj•Ùß×u„]ý‹¹�^òzÅû\ÑC½•Uú¹Õw,°ÞÇ,¦çεý˜p •§ß×ÕwUݹħÕwUÆ�E›‰‹ÍÕw½Ã‹ ©Sªªªªªªª Õwý°‹+ Ú‹}Æ�äSÕw Ô�”…üÐDý—�DêCß×òzT„ý戋éCß×òz-Ë�ý‘‰à$êÞÇ,àÕw ï�…Ê‹¬ß×Õwü¢= ÚÑTÕwå†üùlßÉD�ÞÇ,… .e‡…‹ÍÕwÒTÕw€&‡üÅ%;ýùÿÒèCß×òz<ò%ýÙ�òý•¶Ì ®Cß×òzuô�ý‘ïÚ°Cß×òzeºÀýýYIEß×òz-àðýº·NZòzß×-»Zýœ¸[\òzß×}ê·ýº-ǬÔß×5Ù¸ý‚˜µbÔß×5Ý.¬ýÖ|ûb ÏEœ™b ýò#M¬Ñß×�à¸5Ïß×Eú·ý¬µ”‹Ó ß×Í¡…ýµ»_‹ Õ¢ØŤº‹ Ü% âyLÒ% ±z ÚÒTÕw¨(�üè'@€†4œ(ßÉtþ'ÞÇ$õ' >üª)Eüª)*ÞÇmò±E÷±Eи‹ÍÎÍ—ÎÀÀUniqueÁ¿ µÃî̵´]8"»Oÿ®®«°¿ ”3¯f*²Û�uŸÕ ŽÇ´E�²‹ÍÕwýº±P ¢Ø ‰²Dæ)Õw•°3j    ý™4 j   ý”4&j Å™Ý× ¹4j ç4j î)0U 0U àÝ×QU à  Þ Ý  û  ¯ÆÜ Û   Ù  qU řڰ �U �U ŸU± ®ÆTÒTřǙș­É™Ê™àË™óG*¤�R{9 Ú°$U š*l¥*ÕwÕwÒTÕwÅ*‘üí(Øü )¥ýÙØ7¯Dß×òz:ý”©† ­Cß×òzU€ÙýãÓЯCß×òzLUEß×òz-¨ÕRZòzß×NL\òzß×HEÔß×@=Ôß×85 Ï1 .Ñß×*\Ïß×(ýЗ�iÕwß×Õwlâ)ýû2ój ùnß×MΘi óUþWÝ×Ú° sôý)VVŽ#€ã€ãÝ×QUIsV„ß”ƒ) ßÉLõ(řǙș­É™Ê™àË™óG*¤�R{9 Ý×ÕwüÞÇ` ¢Ø2ŽÇÕw]¥ÛÝ×÷Ý×0UÚ°QU¯Æ|ŽÇ|ÂretÁ¤)� ³wß×]·3j€ã$U $‡+„Ž+ÞÇ% ‹ÍÕw" ) ÒTªªªªªªª Õw  Tµ+ Å™Õw”®+  ¿+ Å+Æ+’üË*{üƒ+C éCß×òz,Ÿ+ ÕwřǙș­É™Ê™àË™óG*¤�R{9 Õw´â*ÝÉ,Ø*ÕwRËçðÞÇX *߀Év ¬ß×Õw„î+ÞÇÅ ‹ÍÕw É ÒTªªªªªªª ÕwÀ ¼ Š,“üÌ+>q éCß×òz,ÿ+i Õw,Þ+ßÉ$Õ+ÞÇ T [f ¬ß×ÕwD‡!ÀÀêÙ¿ µÃî̵´]8"»Oÿìz®®«°¿ ”3¯f*²Û�ìz‡  ìz—ü‡!-ÒT �ìzÁD™!,£!Lª!ü�!$ ³!º!¢üõÅÈÊtî  «zLŠ êÆD� ¼v,º ßmLÐ  ìzEÿë1Âë9BœE�I«ËN�¢ìôDÔ"‚ëÂë ÿë.üÔ"/ÒT žìzXDè",ò"Lù"üÝ"& ‚#‰#£üÀ!ÉÈÊt»"„íL×!êÆDê!¼v,‡"ßmL�"¬íØÿë.Âë6?œB�F«ËK‹ßîïDÙ#‚ëÂë ÿë.ìÙ#ÒT ŸìzWDí#¤â# õ#ü#¤ü�#mÈÊtÀ#„íL�#êÆD¨#¬íµÿëÂë$-œ0]–ñ±Œ1 òìzÒTøê¥ ø 1DËú0¥{\ä ìzÚ Ïì E1ìzÕ0\Ë ìz.D5D EDÒTØëD^DgD D Ü Ý ù»;-DÌìzÞëùì";ªìlé ¥{,Ù Þë à æëÁäëÞD&œ)+<Øë ETü ìzŒ üÞ5ìz ð ¥{$ç  6\‹ ìzœ €G7æëló òô,é  s7|” ìz© ƒüÝL ¬íŒø ¥{Lê  0T¸ øê´õ Tõ ìz#ÒT £#ìz2\€  Š ü¸T ÒT Ð…DÙ ,ã Lê „üÐ<  ‹ ’ †üÖ¼ ÈÊtÏ É÷Lë êÆDþ ¼v,› ßmL±  øêæëDœG�K«ËP�¼øOïøT„ øê´Ã Tà ìz#ÒT¼ø-\Î  Ø ü„V ÒT Ñ€D§ ,± L¸ üœ>  Ù à ‡ü˜È ÈÊt“ É÷L¯ êÆD ¼v,ß ßmLõ ÿù øæëø?œB�F«ËK‹¼øEçûþT‰ øê´© T© ìz#ÒT¼ø-\´  ¾ ü‰ 7 ÒT Ò€DŸ qü” ,  ¿ Æ ˆüæà ÈÊt— É÷Lô êÆDÿ ÿùë׿ë×,œ/]¼ø ÙþÂTé0 ìzŒé0 ÒT  gìz4 ø0 4ô0  ù0 €1 ‹ü¦0Z †Ó\Ó0 òô,­0 �Ô ´0 æë’œ MÀ€¡¼˜ .9 òˆ}ÒTøêü÷C ª ¹ À ®ü²Ž Ô8øˆ}sèKËÏ8‡|\á ˆ}D òòÎ:ôƒäõèäW¥A¨nƈ}Øê/M�ˆ}ê8Tá3 ú‚ˆ}ƒ]ƒ]¿=„]è“\¶ãB(L¬lü]ü]ý]SocketÁþ]óÌ] ‘üª«"XýËñÌsÂÇg^  Œ4 ½ ü¹3S „=üˆ}dì3 ùÁò …„ÌLlù3 ý¤¿Bº"aÁ§ „ý��=KŠ]iÁ´ „ý²¸6L¯^aÁ „<©VaÁÏ „£=ú#iÁÜ „¢=ÆÌsŸ=�=ìÌsš=˜=ÏÌs•=“= íÌs�= _�–Ž=,Ñ3 ‡|$È3 ÂÇÌ10`7`ú‚ˆ}÷ƒ¦„ËñÌsÂÇ` û_²5 ¿ üï4C -@€ˆ}´–5 ù­ßa„ÀL\¡5 ý‡½C¶"Q­“„ýÎŒ;K‰]A­ž„ýïº?Lµ^Y­§„,K¯V]�»LX`ø#(KT`�–M`,†5 ‡|,ü4 ÂÇ[aà”Õ9 ú‚ˆ}÷ƒ¦„ËñÌs�: Ãü 9a P@üˆ}dè9 Ý>ƈ}Ìs4õ9 ýÉf‹Ÿ$Ø>ߺ"ešgØŠ]m§gѯ^eµgæ>©VeÂgÌs$Æ9 ‡|d¨9  tcp_listenerÁ¾tú= ý®idýÄiMýÚi6ï> ¶V}˹L ü] �j한K ƒ] ‘j•; å! ’jç? òˆ}ÒTøêæ ªä ˆ> �> Ç ü½=R ýðh©¡$?«Vý–¹JL±^&ýÞ›ZK—]Dý‰¾\¸"ý�ivU®üä=% 1?øˆ}ÐGRË.?‡|$Õ= ÌsÅ= ˆ}´÷ƒµ¦„´Ëñ³ú‚!Ã&8ïˆ}4?¬�%y@ òó~ÒTøêüâ$? è  %§%ìü£$„@øó~s3SË@Ä}LÎ$ó~4³$òòÎ:ôƒäõèäW¥A¨nÆó~Øä0M�ó~5@³TÒTÂü ³TÒT!)½T÷ü®S�íJùó~úÈü§ý ó~ÁýUÿšþ§ýt©T›SÌó~†“§ý�J<¯TúÈü§ý—“šþ=TÁýlÒS Ä},ÂSÈü ÉSœÉÂü Èü;ÒTÂü:ÒTZc µT¶TúÝÁý²T†“ó ó~ °TÈüšœÑÈüÂüÑœ5ÜÏÒTÈʸ\Šü×[a¿Lùó~‹œ“ÈÊUÿü’\ \UÌó~Ø–PL̘\‹á–ôUý¬Ï<’"<ª\ÈÊtî[ Ä}Là[ ­ðÒTÈʱ\‹™ƒ’"~ÈÊ£\Ø–¾Ë•L™\è ÜrÒTÈÊÏ_‘üî^a.Nùó~’á–ü©_ ÃVÌó~Ç™·M̯_’á–]Wi’"<Á_ÈÊt…_ …”L÷^ ¤VÒTÈÊÈ_’™ê’"�Èʺ_Ç™¿Ë•L°_è ÝT”fÅ‘ó~×\×\å@Ø\è“\mf”½q.µ¦„ËñÌsÂdžc  ¿fš üìeSWIüó~dŸfÓ ÊLl¬fý¼Ò@˜"Ì ýþ[=Kß\Æ Á ¯^½ ÔG©V¸ VIú#³ PIÆÌsMIKIìÌsHIFIÏÌsCIAI íÌs>I úc�–ÒT^g ¿+À+®ÞÁý¼+Ó÷ô ‰… º+ÈüŸœÒÈü!ÂüÖœ5ä¯�ÒTÈÊÅ3¾üä2a ~ù‰…¿é÷ÈÊUÿüŸ3 žủ…«û¤~Ì¥3¿´û6uý´¯<�ÔH<·3ÈÊtû2 öƒLí2 ±õÒTÈʾ3¿›…ÔHÈʰ3«ûÀ›úL¦3è ÞwÒTÈÊÝ6Åüü5a ~ù‰…Æ´ûü·6 žủ…žþ¿~̽6Æ´û6umÔH<Ï6ÈÊt“6 ÔøL…6 ¦]ÒTÈÊÖ6Æ™îÔH�ÈÊÈ6žþ¿›úL¾6è ÝTé<�ö‰…¦„ËñÌsÂdžc  ”=Î üÁ A getting started guide is available in the [`guide`] module.ÁÑ�ÌÕ ## Available featuresÁï�üóDA The available features are described in the [`features`] module.ÁüŽ#tŸ*UVYc±¸¹äŒ‰<Ú=€ª§™!<º«»;:­«:<®÷79½¯÷7J¾¯™ 9Ò°ÅÈËT‚ 4† Ķ \à  Ï €  Õ ä , Ö  × â , Ø 8›$Ù & Ý 8›$Þ  ã *æ  é þ , ó  ô ÷ + ‚  ƒ œ 8ì„  ‡ › 8Ó<ˆ � 7ã L’ + ª  « Û 8îD¬  ´ Ú 8docsrsÁ4µ $ » 8å½  À Ù 8ìÁ  Ä Ø 8Ó<Å Í 7ã LÏ , é 8›$ê ø äª |·  Ç ¾  Í Ü , Î  Ï Ú , Ð 8›$Ñ & Õ 8›$Ö  Û *Þ  á ¼ , ë  ì µ + ú  û ™ 8ìü  ÿ ˜ 8Æ €  ƒ — 8Ó<„ Œ 7ã LŽ , § 8›$¨ ¶ ¼æ Tó  þ ­  „ “ , …  † ‘ , ‡ 8›$ˆ & Œ 8›$�  ’ *•  ˜ « , ¢  £ ¤ + ±  ² Ê 8ì³  ¶ É 8Ó<· ¿ 7os-extÁDÁ + Ø  Ù ˆ 8îDÚ  â ‡ 8—š4ã $ é 8åë  î † 8ìï  ò … 8Ó<ó û 7àžDý , – 8›$— ¥ ¤Ò <ß  ç �  í ü , î  ï ú , ð 8›$ñ & õ 8›$ö  û *þ  � Ž , ‹  Œ ‡ + š  › ° 8ìœ  Ÿ ¯ 8Ó<  ¨ 7ô*,ª + ¾  ¿ ë 8îDÀ  È ê 8—š4É $ Ï 8åÑ  Ô é 8ìÕ  Ø è 8Ó<Ù á 7ô*,ã , ù 8›$ú ˆ Ôþ l‹  ™ Š  Ÿ ® ,    ¡ ¬ , ¢ 8›$£ & § 8›$¨  ­ *°  ³ ˆ , ½  ¾ � + Ì  Í † 8ìÎ  Ñ … 8ÁÒ  Õ „ 8Ó<Ö Þ 7ô*,à $ å 8ªç  ê ƒ 8Ì$ë $ ï 8Ó<ñ ù 7àžDû + ”  • å 8îD–  ž ä 8—š4Ÿ $ ¥ 8å§  ª ã 8ì«  ® â 8Á¯  ² á 8Ó<³ » 7ô*,½ $  8ªÄ  Ç à 8Ì$È $ Ì 8Ó<Î Ö 7àžDØ , ó 8›$ô ‚ ÜÝ tê  ù Ô  ÿ Ž , €  � Œ , ‚ 8›$ƒ & ‡ 8›$ˆ  � *�  “ Ò , �  ž Ë + ¬  ­ Û 8ì®  ± Ú 8Á²  µ Ù 8Ó<¶ ¾ 7àžDÀ $ È 8Ó<Ê Ò 7ô*,Ô + é  ê ¯ 8îDë  ó ® 8—š4ô $ ú 8åü  ÿ ­ 8ì€  ƒ ¬ 8Á„  ‡ « 8Ó<ˆ � 7àžD’ $ š 8Ó<œ ¤ 7ô*,¦ , ½ 8›$¾ Ì ”× ,ä  ê £  ð ú , ñ  ò ø , ó 8ª ô & õ 8ýö  ù *ü  ÿ ¡ 8É  Œ  � › 8¤,Ž $ “ , •  – ™ , — 8ª ˜  š Œ¦ $³  ¸ ð  ¾ È , ¿  À Æ , Á 8ª  & à 8ýÄ  Ç *Ê  Í î 8Ã×  Ú  Û è 8º$Ü $ à , â  ã æ , ä 8ª å  ç ”ó ,€  † ¿  Œ – , �  Ž ” , � 8ª � & ‘ 8ý’  • *˜  › ½ 8Ã¥  ¨  © · 8·,ª $ ¯ , ±  ² µ , ³ 8ª ´  ¶ „Â Ï  Ó Á  Ù ò , Ú 8levelÁ,Û & à 8Ý,â $ ç , é  ê ð , ë 8ª ì & í 8ýî  ñ *ô  ÷ ¿ + �  ‚ — 8ìƒ  † – 8Ó<‡ � 7Ã,‘  ¡ ¹ 8ã '¦ , ¨ 8ê°,©  ®  ¯ ¶ , °  ± ´ , ² 8ª ³  µ % · + ñ  ò Œ 8ìó  ö ‹ 8Æ ÷  ú Š 8Ó<û ƒ 7Ã,…  – ¹ 8˜ 8 ,›  ¡ · 8£ 8 § ©  « ´ , ­  ® ± , ¯ 8ª °  ² % µ d� D“ º» NonZeroU8ÁLºåñ#¾,â (µ!œ7)+”ÝDã”úD€lÌÒläê”üD‚l›ßm !"äñü¯=: Returns a `Interest` set representing readable interests.ÁDûßmä� üÎ=: Returns a `Interest` set representing writable interests.ÁDš ßmä¸ü¯HE Returns a `Interest` set representing priority completion interests.ÁÅlinuxÁœ†Åà ¬›ü…,üü7DÂßmü¨3ü•  Add together two `Interest`.Áº�üÂDA This does the same thing as the `BitOr` implementation, but is aÁ´‹ constant function.Á¦�<® ```Á´º use mio::Interest;ÁÕ�üÝKH const INTERESTS: Interest = Interest::READABLE.add(Interest::WRITABLE);Áü­2/ # fn silent_dead_code_warning(_: Interest) { }Áüä)& # silent_dead_code_warning(INTERESTS)Á<’�»/üËXHthis returns the result of the operation, without modifying the originalÁµßmßmßmBÿšÃ]Qî fQü±8ü½+( Removes `other` `Interest` from `self`.Áí�üõDA Returns `None` if the set would be empty after removing `other`.Á¾�<Æ�»´Ò »í�üõNK const RW_INTERESTS: Interest = Interest::READABLE.add(Interest::WRITABLE);ÁÈ�üÐ=: // As long a one interest remain this will return `Some`.Áü’FC let w_interest = RW_INTERESTS.remove(Interest::READABLE).unwrap();ÁüÝ'$ assert!(!w_interest.is_readable());Áü‰&# assert!(w_interest.is_writable());Á´�ü¼>; // Removing all interests from the set will return `None`.Áüÿ<9 assert_eq!(w_interest.remove(Interest::WRITABLE), None);ÁÀ�üÈ>; // Its also possible to remove multiple interests at once.Áü‹85 assert_eq!(RW_INTERESTS.remove(RW_INTERESTS), None);Á<È�»/üÔX›½4¸ßmßmÙªBÿ ^Vî gVüŠ&ü»:7 Returns true if the value includes readable readiness.Á/\ú\—ßmBÿ ´Wü´&üå:7 Returns true if the value includes writable readiness.Á/\¤\ÁßmBÿ ¸YüÚ !ü� 63 Returns true if `Interest` contains AIO readiness.Á/\Ê 4ç ßmBÿ ¼[üö!!ü«!63 Returns true if `Interest` contains LIO readiness.Á/\æ!4ƒ"ßmBÿ !À]ü—#&üÇ";8 Returns true if `Interest` contains priority readiness.Á/\‡#\¤#ßmBÿ "Ä_äð#ßm$%ÍÔÎÔ%\“$4˜$##ßmüº$#,½$ßmßmßmBÿ## %caî laü�%"ßm'Ìò'ü¸%'d»%è èßmßmBÿ& È%& '$Í%î lbä�&ßm) g)ü²&:µ&éêë éßm ê€g€gŠ‚gê ûcƒg±ÓûcØ«q¢1È¡ë†ÓBÿ( ¹&( )$º&ñÀ&D� $¡ :<÷ $©„$*,à <¯¢#*-§T¸®L*.ÿ ,Ä¡#*/DurationÁDÄȲ*0ñؾ,*2Ïì݉*3à,ïc*5…öU*6Ú4û€*7ª§™!Dƒº*8«÷7,�½*9¯÷7¾*9¯\›Ì$mio_unsupported_force_poll_pollÁüü! Å‹ ŒTÅespidfÁ¤oÅnuttxÁœ�ÅfuchsiaÁ¬ªÅhaikuÁœÉÅ®¤æÅhurdÁ”„ÅntoÁŒ Å¼ ”»ÅcygwinÁ¤×ÅhorizonÁ¬õüJÆüFËü ‹ü–ÌåÐãá Å‹ ßÅ£ÑÙÅ´ÑÔÅÅÑÌÅØÑÆÅ®ÄÅõѿŅһż ¹Å Ò²Å²Òª¨¥¢Ÿ®žÌ åЂ� Å‹ €Å£Ñ{Å´ÑwÅÅÑpÅØÑkÅ®jÅõÑfÅ…Òcż bÅ Ò\ŲÒUTRPNK;ÌPåÐ21 Å‹ 0Å£Ñ+Å´Ñ'ÅÅÑ ÅØÑÅ®ÅõÑÅ…Òż Å Ò Å²ÒþèØÌåÐâá Å‹ àÅ£ÑÛÅ´Ñ×ÅÅÑÐÅØÑËÅ®ÊÅõÑÆÅ…ÒÃż ŠҼŲҵ´²°®…œ¹qÒdgVY,çMPAD58 #|Œ[ü–85 Polls for readiness events on all registered values.ÁÏ�üÓLI `Poll` allows a program to monitor a large number of [`event::Source`]s,Áü OL waiting until one or more become "ready" for some class of operations; e.g.ÁüðNK reading and writing. An event source is considered ready if it is possibleÁü¿FC to immediately perform a corresponding operation; e.g. [`read`] orÁt† [`write`].Á• �ü™ NK To use `Poll`, an `event::Source` must first be registered with the `Poll`Áüè HE instance using the [`register`] method on its associated `Register`,Áü± KH supplying readiness interest. The readiness interest tells `Poll` whichÁüý LI specific operations on the handle to monitor for readiness. A `Token` isÁüÊ MJ also passed to the [`register`] function. When `Poll` returns a readinessÁü˜ JG event, it will include this token. This associates the event with theÁüã *' event source that generated the event.ÁŽ �ü’ 0- [`event::Source`]: ./event/trait.Source.htmlÁüà 52 [`read`]: ./net/struct.TcpStream.html#method.readÁüù 74 [`write`]: ./net/struct.TcpStream.html#method.writeÁü±63 [`register`]: struct.Registry.html#method.registerÁè�tì # ExamplesÁû�üÿ=: A basic example -- establishing a `TcpStream` connection.Á½�,ý\÷```ÁäÔ # use std::error::Error;Áüñ/, # fn main() -> Result<(), Box> {Áü¡-* use mio::{Events, Poll, Interest, Token};ÁäÏ use mio::net::TcpStream;Áì�üð%" use std::net::{self, SocketAddr};Á–�üš*' // Bind a server socket to connect to.ÁüÅ2/ let addr: SocketAddr = "127.0.0.1:0".parse()?;Áüø/, let server = net::TcpListener::bind(addr)?;Á¨�ü¬MJ // Construct a new `Poll` handle as well as the `Events` we'll store intoÁüú  let mut poll = Poll::new()?;Áü›1. let mut events = Events::with_capacity(1024);ÁÍ�ÌÑ // Connect the streamÁüë?< let mut stream = TcpStream::connect(server.local_addr()?)?;Á«�ü¯&# // Register the stream with `Poll`ÁüÖ^[ poll.registry().register(&mut stream, Token(0), Interest::READABLE | Interest::WRITABLE)?;Áµ�ü¹KH // Wait for the socket to become ready. This has to happen in a loop toÁü… // handle spurious wakeups.ÁT¥ loop {Áü°&# poll.poll(&mut events, None)?;Á×�ôÛ for event in &events {ÁüúA> if event.token() == Token(0) && event.is_writable() {Áü¼OL // The socket connected (probably, it could still be a spuriousÁÔŒ // wakeup)Áô§ return Ok(());ÁlÆ }ÁLÔ }Á,Þ }Á<ä # }Á<ì�»ô�Œø # PortabilityÁŠ�üŽLI Using `Poll` provides a portable interface across supported platforms asÁüÛ>; long as the caller takes the following into consideration:Áš�¼ž ### Spurious eventsÁ¶�üºEB [`Poll::poll`] may return readiness events even if the associatedÁü€EB event source is not actually ready. Given the same code, this mayÁüÆNK happen more on some platforms than others. It is important to never assumeÁü•JG that, just because a readiness event was received, that the associatedÁüà# operation will succeed as well.Á„�üˆLI If operation fails with [`WouldBlock`], then the caller should not treatÁüÕNK this as an error, but instead should wait until another readiness event isÁl¤ received.Á²�Ô¶ ### Draining readinessÁÑ�üÕKH Once a readiness event is received, the corresponding operation must beÁü¡ NK performed repeatedly until it returns [`WouldBlock`]. Unless this is done,Áüð NK there is no guarantee that another readiness event will be delivered, evenÁü¿!52 if further data is received for the event source.Áõ!�üù!2/ [`WouldBlock`]: std::io::ErrorKind::WouldBlockÁ¬"�ä°" ### Readiness operationsÁÍ"�üÑ"JG The only readiness operations that are guaranteed to be present on allÁüœ#NK supported platforms are [`readable`] and [`writable`]. All other readinessÁüë#HE operations may have false negatives and as such should be consideredÁü´$JG **hints**. This means that if a socket is registered with [`readable`]Áüÿ$MJ interest and either an error or close is received, a readiness event willÁüÍ%GD be generated for the socket, but it **may** only include `readable`Áü•&GD readiness. Also note that, given the potential for spurious events,ÁüÝ&NK receiving a readiness event with `read_closed`, `write_closed`, or `error`Áü¬'JG doesn't actually mean that a `read` on the socket will return a resultÁü÷'! matching the readiness event.Á™(�ü�(PM In other words, portable programs that explicitly check for [`read_closed`],Áüî(EB [`write_closed`], or [`error`] readiness should be doing so as anÁü´)MJ **optimization** and always be able to handle an error or close situationÁü‚*.+ when performing the actual read operation.Á±*�üµ*>; [`readable`]: ./event/struct.Event.html#method.is_readableÁüô*>; [`writable`]: ./event/struct.Event.html#method.is_writableÁü³+85 [`error`]: ./event/struct.Event.html#method.is_errorÁüì+DA [`read_closed`]: ./event/struct.Event.html#method.is_read_closedÁü±,FC [`write_closed`]: ./event/struct.Event.html#method.is_write_closedÁø,�Üü, ### Registering handlesÁ˜-�üœ-HE Unless otherwise noted, it should be assumed that types implementingÁüå-MJ [`event::Source`] will never become ready unless they are registered withÁ\³. `Poll`.Á¿.�„Ã. For example:ÁÔ.�,”/\Ž/Ðãäë/ß㜈0 # use std::net;Áüœ0/…äüÌ0%" use mio::{Poll, Interest, Token};Áäò0ôäì�1 use std::net::SocketAddr;Áä­1 use std::time::Duration;Á¤Ê1 use std::thread;Áß1�üã152 let address: SocketAddr = "127.0.0.1:0".parse()?;Áü™241 let listener = net::TcpListener::bind(address)?;ÁüÎ2?< let mut sock = TcpStream::connect(listener.local_addr()?)?;ÁŽ3�ü’3*' thread::sleep(Duration::from_secs(1));Á½3�äÁ3 let poll = Poll::new()?;ÁÞ3�üâ3NK // The connect is not guaranteed to have started until it is registered atÁŒ±4 // this pointÁüÃ4\Y poll.registry().register(&mut sock, Token(0), Interest::READABLE | Interest::WRITABLE)?;Á„ 5 # Ok(())Á<±5�ï<¹5�»Á5�¼Å5 ### Dropping `Poll`ÁÝ5�üá5NK When the `Poll` instance is dropped it may cancel in-flight operations forÁü°6OL the registered [event sources], meaning that no further events for them mayÁü€7PM be received. It also means operations on the registered event sources may noÁüÑ7MJ longer work. It is up to the user to keep the `Poll` instance alive whileÁüŸ8,) registered event sources are being used.ÁÌ8�üÐ8.+ [event sources]: ./event/trait.Source.htmlÁÿ8�üƒ9&# ### Accessing raw fd/socket/handleÁª9�ü®9HE Mio makes it possible for many types to be converted into a raw fileÁü÷9NK descriptor (fd, Unix), socket (Windows) or handle (Windows). This makes itÁüÆ:JG possible to support more operations on the type than Mio supports, forÁü‘;LI example it makes [mio-aio] possible. However accessing the raw fd is notÁÔÞ; without it's pitfalls.Áù;�üý;MJ Specifically performing I/O operations outside of Mio on these types (viaÁüËA> guarantee cross-platform behaviour if it can control the I/O.Áû>�üÿ>1. [mio-aio]: https://github.com/asomers/mio-aioÁ±?�üµ?KH *The following is **not** guaranteed, just a description of the currentÁü�@RO situation!* Mio is allowed to change the following without it being consideredÁüÔ@OL a breaking change, don't depend on this, it's just here to inform the user.Áü¤AOL Currently the kqueue and epoll implementation support direct I/O operationsÁüôAHE on the fd without Mio's knowledge. Windows however needs **all** I/OÁü½BHE operations to go through Mio otherwise it is not able to update it'sÁü†C63 internal state properly and won't generate events.Á½C�üÁC1. ### Polling without registering event sourcesÁóC�÷C�üûCK¯šüÇDGD situation!* Mio is allowed to change the following without it beingÁü�EPM considered a breaking change, don't depend on this, it's just here to informÁüàEMJ the user. On platforms that use epoll, kqueue or IOCP (see implementationÁü®FLI notes below) polling without previously registering [event sources] willÁüûFMJ result in sleeping forever, only a process signal will be able to wake upÁ|ÉG the thread.ÁÙG�üÝGIF On WASM/WASI this is different as it doesn't support process signals,Áü§HJG furthermore the WASI specification doesn't specify a behaviour in thisÁüòHHE situation, thus it's up to the implementation what to do here. As anÁü»IMJ example, the wasmtime runtime will return `EINVAL` in this situation, butÁü‰JHE different runtimes may return different results. If you have furtherÁüÒJOL insights or thoughts about this situation (and/or how Mio should handle it)Áü¢K2/ please add you comment to [pull request#1580].ÁÕK�üÙK)& [event sources]: crate::event::SourceÁüƒLB? [pull request#1580]: https://github.com/tokio-rs/mio/pull/1580ÁÆL�ÔÊL # Implementation notesÁåL�üéLFC `Poll` is backed by the selector provided by the operating system.Á°M�ü´M! | OS | Selector |ÁüÖM! |---------------|-----------|ÁüøM! | Android | [epoll] |ÁüšN! | DragonFly BSD | [kqueue] |Áü¼N! | FreeBSD | [kqueue] |ÁüÞN! | iOS | [kqueue] |Áü€O! | illumos | [epoll] |Áü¢O! | Linux | [epoll] |ÁüÄO! | NetBSD | [kqueue] |ÁüæO! | OpenBSD | [kqueue] |ÁüˆP%" | Solaris | [event ports] |Áü®P! | Windows | [IOCP] |ÁüÐP! | macOS | [kqueue] |ÁòP�üöPJG On all supported platforms, socket operations are handled by using theÁüÁQKH system selector. Platform specific extensions (e.g. [`SourceFd`]) allowÁü�RIF accessing other features provided by individual system selectors. ForÁü×RPM example, Linux's [`signalfd`] feature can be used by registering the FD withÁä¨S `Poll` via [`SourceFd`].ÁÅS�üÉSNK On all platforms except windows, a call to [`Poll::poll`] is mostly just aÁü˜TOL direct call to the system selector. However, [IOCP] uses a completion modelÁüèTPM instead of a readiness model. In this case, `Poll` must adapt the completionÁü¹UGD model Mio's API. While non-trivial, the bridge layer is still quiteÁü�VPM efficient. The most expensive part being calls to `read` and `write` requireÁüÒVLI data to be copied into an intermediate buffer before it is passed to theÁ\ŸW kernel.Á«W�ü¯W?< [epoll]: https://man7.org/linux/man-pages/man7/epoll.7.htmlÁüïWWT [event ports]: https://docs.oracle.com/cd/E88353_01/html/E37843/port-create-3c.htmlÁüÇXHE [kqueue]: https://www.freebsd.org/cgi/man.cgi?query=kqueue&sektion=2Áü�YVS [IOCP]: https://docs.microsoft.com/en-us/windows/win32/fileio/i-o-completion-portsÁüçYGD [`signalfd`]: https://man7.org/linux/man-pages/man2/signalfd.2.htmlÁü¯Z+( [`SourceFd`]: unix/struct.SourceFd.htmlÁüÛZ0- [`Poll::poll`]: struct.Poll.html#method.pollÁ$—[ŒoÑG;@K;”¢[D¢[*::ÇoœÖ[ä¹[ Registers I/O resources.ÁDá[Ço‹CŸIm#«=¼ð[Dð[*<<ŒpLÄ]ŒoÊ?@ü¦l#üÑk63 Returns a `Registry` which can be used to registerÁ¬Œl `event::Source`s.ÁD­lì ìŒo ìÇoBÿ> ¶l> ?$·lü…ŽXìîl Wait for readiness eventsÁ�m�ü˜mKH Blocks the current thread and waits for readiness events for any of theÁüèmKH [`event::Source`]s that have been registered with this `Poll` instance.Áü¸nIF The function will block until either at least one readiness event hasÁü†oLI been received or `timeout` has elapsed. A `timeout` of `None` means thatÁü×o@= `poll` will block until a readiness event has been received.Áœp�ü¤pMJ The supplied `events` will be cleared and newly received readiness eventsÁüöpKH will be pushed onto the end. At most `events.capacity()` events will beÁüÆqIF returned. If there are further pending readiness events, they will beÁü”r(% returned on the next call to `poll`.ÁÁr�üÉrIF A single call to `poll` may result in multiple readiness events beingÁü—sLI returned for a single event source. For example, if a TCP socket becomesÁüèsIF both readable and writable, it may be possible for a single readinessÁü¶tJG event to be returned with both [`readable`] and [`writable`] readinessÁü…uIF **OR** two separate events may be returned, one with [`readable`] setÁüÓu" and one with [`writable`] set.Áúu�ü‚vB? Note that the `timeout` will be rounded up to the system clockÁüÉvEB granularity (usually 1ms), and kernel scheduling delays mean thatÁü“wEB the blocking interval may be overrun by a small amount. A timeoutÁüÝw;8 of [`Duration::ZERO`] is not affected by this rounding.Á�x�ü¥xIF See the [struct] level documentation for a higher level discussion ofÁdóx polling.Á„y�üŒy0ÒàüÁyB? [`readable`]: struct.Interest.html#associatedconstant.READABLEÁüˆzB? [`writable`]: struct.Interest.html#associatedconstant.WRITABLEÁôÏz [struct]: struct.Poll.htmlÁüòz41 [`iter`]: ./event/struct.Events.html#method.iterÁ«{�\³{ # NotesÁÃ{�üË{JG This returns any errors without attempting to retry, previous versionsÁüš|HE of Mio would automatically retry the poll call if it was interruptedÁôç| (if `EINTR` was returned).ÁŠ}�ü’}C@ Currently if the `timeout` elapses without any readiness eventsÁüÚ}HE triggering this will return `Ok(())`. However we're not guaranteeingÁü§~-* this behaviour as this depends on the OS.ÁÙ~�tá~×âô~�üü~=ûâ¾�,‚€\üÐãäá€ßãü‚�/…äü¶�2/ # // WASI does not yet support multithreading:Áüí�30 # if cfg!(target_os = "wasi") { return Ok(()) }Áü¥‚-¾ääׂôäø‚�ü€ƒ,) use std::net::{TcpListener, SocketAddr};Á¤±ƒÚ‰ʃ�üÒƒ*áåü�„2•æü¸„*' let server = TcpListener::bind(addr)?;Áüç„,) let addr = server.local_addr()?.clone();Á˜…�ü …*' // Spawn a thread to accept the socketÁÜÏ… thread::spawn(move || {Áüï…  let _ = server.accept();Á<”† });Á †�ü¨†M–çüú† íçüŸ‡1—èÕ‡�Ì݇Ýèüû‡/, let mut stream = TcpStream::connect(addr)?;Á¯ˆ�ü·ˆ&Õéì∠poll.registry().register(Á¤„‰ &mut stream,ÁŒ�‰ Token(0),Áü³‰2/ Interest::READABLE | Interest::WRITABLE)?;Áê‰�üò‰KùêüŠÎëTæŠöëüõŠ&Šì ‹�ô¨‹ÅìüË‹Aíìü‘ŒO¸íÔåŒ�îô„�³îl§�ÚîL¹�ðî,Ç�‚ï<Ñ��ï<Ý��»é��|ñ� [struct]: #Á$ŒŽíî íŒo îâyřǙș­É™Ê™àË™óG*¤�R{9 ȲȲ‹ÏɲsecsÁ²�ʲnanosÁ²�u"ù(ùÐŒÈÊBÿ> ‘Ž> @$–ŽÁ4œŽtimeoutÁ<±Ž¬½’Ì$µ�åÐüÃ�üÂ�! Å‹ Œú�ţѤ•�Å´Ñœ³�ÅÅѬÐ�ÅØÑœï�Å®¤Œ‘ÅõÑ”ª‘ŅҌƑż ”á‘Å Ò¤ý‘ŲҬ›’üð�Æüì�Ëü¯�‹ü¦�–ŒoB£#BäÙ’LÜ’ï ïŒoBÿA æ’A B$ç’Ä£“ŒoD gDü“:Å“ðñò ðŒo ñ€g€gŠ‚gê ûcƒg±ÓûcØ«q¢1È¡ò†ÓBÿC É“C D$Ê“ñГl²”ÇoFHJLNüÛ³‹üÆ”;8 Register an [`event::Source`] with the `Poll` instance.Á†•�üŽ•JG Once registered, the `Poll` instance will monitor the event source forÁüÝ•KH readiness state changes. When it notices a state change, it will returnÁü­–FC a readiness event for the handle the next time [`poll`] is called.Áø–�ü€—0- See [`Poll`] docs for a high level overview.Áµ—�|½— # ArgumentsÁÑ—�üÙ—JG `source: &mut S: event::Source`: This is the source of events that theÁü¨˜?< `Poll` instance should monitor for readiness state changes.Áì˜�üô˜JG `token: Token`: The caller picks a token to associate with the socket.ÁüÙJG When [`poll`] returns an event for the handle, this token is included.Áü’šDA This allows the caller to map the event to its source. The tokenÁüÛšEB associated with the `event::Source` can be changed at any time byÁÜ¥› calling [`reregister`].ÁÅ›�üÍ›EB See documentation on [`Token`] for an example showing how to pickÁ¬—œ [`Token`] values.Á±œ�ü¹œJG `interest: Interest`: Specifies which operations `Poll` should monitorÁüˆ�JG for readiness. `Poll` will only return readiness events for operationsÁü×� specified by this argument.Áû��üƒžKH If a socket is registered with readable interest and the socket becomesÁüÓž63 writable, no event will be returned from [`poll`].ÁŽŸ�ü–ŸLI The readiness interest for an `event::Source` can be changed at any timeÁôçŸ by calling [`reregister`].ÁŠ �\’ ÒÌ¢ �üª GD Callers must ensure that if a source being registered with a `Poll`Áüö HE instance was previously registered with that `Poll` instance, then aÁüáEB call to [`deregister`] has already occurred. Consecutive calls toÁü�¢'$ `register` is unspecified behavior.Á¹¢�üÁ¢KH Unless otherwise specified, the caller should assume that once an eventÁü‘£KH source is registered with a `Poll` instance, it is bound to that `Poll`Áüá£IF instance for the lifetime of the event source. This remains true evenÁü¯¤DA if the event source is deregistered from the poll instance usingÁœø¤ [`deregister`].Á�¥�ü˜¥0ÒàüÍ¥*' [`poll`]: struct.Poll.html#method.pollÁüü¥:7 [`reregister`]: struct.Registry.html#method.reregisterÁü»¦:7 [`deregister`]: struct.Registry.html#method.deregisterÁüú¦  [`Token`]: struct.Token.htmlÁŸ§�t§§×⺧�,þ§\ø§Ðãäݨßãœþ¨©ˆü–©/…äüÊ©-¾ääü©ôäì�ª�‰ü¿ª'$ use std::time::{Duration, Instant};Áëª�üóª í瘫�ü «5„ŠüÚ«4Êü“¬A> let mut socket = TcpStream::connect(listener.local_addr()?)?;ÁÙ¬�üá¬&# // Register the socket with `poll`Á쌭ÞÖ¤®­ &mut socket,ÁŒÇ­£×üÝ­2¿×”®�üœ®1—èüÒ® let start = Instant::now();Áüö®-* let timeout = Duration::from_millis(500);Á¨¯�T°¯öëü¿¯&# let elapsed = start.elapsed();Áê¯�üò¯ if elapsed >= timeout {Áü–°# // Connection timed outÁÔ¾° return Ok(());ÁLݰðîë°�üó°*' let remaining = timeout - elapsed;Áü¢±1. poll.poll(&mut events, Some(remaining))?;Áر�ôà±Åìüƒ²*' if event.token() == Token(0) {Áü²²?< // Something (probably) happened on the socket.Áôö²³îl™³ÚîL«³ðî,¹³‚ï<ó�ï<ϳ�»Dâ³óô óÇo ôêɼvßmÈÊBÿE�GG î³EÿÆêÉ4ß´œêÉlÏ´ FêÉ$ï³·fe�pe«Ëze ë³üÏÈ�ü¼¶>; Re-register an [`event::Source`] with the `Poll` instance.Áÿ¶�ü‡·EB Re-registering an event source allows changing the details of theÁüÑ·IF registration. Specifically, it allows updating the associated `token`ÁüŸ¸LI and `interests` specified in previous `register` and `reregister` calls.Áð¸�üø¸KH The `reregister` arguments fully override the previous values. In otherÁüȹLI words, if a socket is registered with [`readable`] interest and the callÁü™ºKH to `reregister` specifies [`writable`], then read interest is no longerÁìéº requested for the handle.Á‹»�ü“»LI The event source must have previously been registered with this instanceÁüä»52 of `Poll`, otherwise the behavior is unspecified.Áž¼�ü¦¼EB See the [`register`] documentation for details about the functionÁüð¼FC arguments and see the [`struct`] docs for a high level overview ofÁd»½šÊ̽�tÔ½×âç½�,«¾\¥¾Ðã䊿ß㜫¿©ˆüÿ/…äü÷¿%Ôˆä¡ÀôäìÂÀ�‰äÀ�äìÀ•Œ�Á�ü•Á5„ŠüÏÁ4ÊüˆÂA�÷ÎÂ�üÖÂ;8 // Register the socket with `poll`, requesting readableÁì–ÃÞÖ¤¸Ã¦øŒÑã×ìçà Interest::READABLE)?;Á‰Ä�ü‘ÄKH // Reregister the socket specifying write interest instead. Even thoughÁüáÄ2/ // the token is the same it must be specified.Áü˜Å poll.registry().reregister(Á¤¼Å¦øŒÕÅ£×ìëÅ Interest::WRITABLE)?;Á„�ÆžŽ<¢Æ�ï<®Æ�»ºÆ�üÂÆ0Òàü÷Æ  [`struct`]: struct.Poll.htmlÁüœÇ6Œâü×Ç74 [`readable`]: ./event/struct.Event.html#is_readableÁü“È74 [`writable`]: ./event/struct.Event.html#is_writableÁTÖÈõö õÇo öêɼvßmÈÊBÿE�II äÈE�€4ÕÉŸ€lÅÉ HêÉ$åÈ·df�nf«Ëxf áÈü€Üjü¶Ë=: Deregister an [`event::Source`] with the `Poll` instance.ÁøË�ü€ÌLI When an event source is deregistered, the `Poll` instance will no longerÁüÑÌGD monitor it for readiness state changes. Deregistering clears up anyÁü�ÍJG internal resources needed to track the handle. After an explicit callÁüìÍHE to this method completes, it is guaranteed that the token previouslyÁü¹ÎLI registered to this handle will not be returned by a future poll, so longÁüŠÏIF as a happens-before relationship is established between this call andÁlØÏ the poll.ÁêÏ�üòÏL�…üÃÐ5ä…ýÐ�ü…Ñ?< A handle can be passed back to `register` after it has beenÁüÉÑHE deregistered; however, it must be passed back to the **same** `Poll`Áü–Ò41 instance, otherwise the behavior is unspecified.ÁÏÒ�t×Ò×âêÒ�,®Ó\¨ÓÐãä�Ôß㜮ԩˆüÆÔ/…äüúÔ-¾ää¬ÕôäìÍÕ�‰äïÕµ‰�Ö�ü˜Ö íç½Ö�üÅÖ5„ŠüÿÖ4Êü¸×A�÷þ×�ü†Ø&è÷ì±ØÞÖ¤ÓØ¦øŒìØ£×ì‚ÙÁФÙ�ü¬Ù-* poll.registry().deregister(&mut socket)?;ÁÞÙ�üæÙ1—èœÚ�ü¤ÚGD // Set a timeout because this poll should never receive any events.ÁüðÚ:7 poll.poll(&mut events, Some(Duration::from_secs(1)))?;Áü¯Û assert!(events.is_empty());Á„ÓÛžŽ<èÛ�ï<ôÛ�»T‡Ü÷ø ÷Ço øêÉÈÊBÿE�KK •ÜE�€4ãÜŸ€lÓÜ JêÉ$–Ü·Fg ’Üü—ß/üÖÝ1. Creates a new independently owned `Registry`.ÁŒÞ�ü”ÞIF Event sources registered with this `Registry` will be registered withÁüâÞ0- the original `Registry` and `Poll` instance.ÁLžßù ùÇoÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÇošËBÿE ¨ßE L$©ßTïßL�M�M�MMLMŒpÇoUÿüæå/ÅÊ”�夀åÓô*|–åüüä*üóä5Dôåú úÇo úŒpBÿE ýåE N$þå䏿ÇoP gPüÛæ:Þæûüý ûÇo ü€g€gŠ‚gê ûcƒg±ÓûcØ«q¢1È¡ý†ÓBÿO âæO P$ãæñéæ´æêÌ$ÞçåÐüìçüëç! Å‹ Œ£èţѤ¾èÅ´ÑœÜèÅØÑœùèÅÅѬ–éÅ®¤µéÅõÑ”ÓéÅ…ÒŒïéż ”ŠêÅ Ò¤¦êŲҬÄêü™èÆü•èËüØç‹üÏç–ÇoR…$Rüƒë!,†ëþ þÇo®L®L§°LÃ&Û#±L_phantomÁÛ#t4bE™þBÿQ ŒëQ R$�ëÌåîÌ$ÝëåÐüëëüêë! Å‹ Œ¢ìţѤ½ìÅ´ÑœÛìÅØÑœøìÅÅѬ•íÅ®¤´íÅõÑ”ÒíÅ…ÒŒîíż ”‰îÅ Ò¤¥îŲҬÃîü˜ìÆü”ìËü×ë‹üÎë–ÇoT£#Tä…ïLˆïÿ ÿÇoBÿS ’ïS T$“ï<§ « ÍÚ $µ,¬Ïº,Â!òÏõ-Þ!‰ÏÎ.½"—Ï™ ,Ì6Ôσ‚Œ$,¨ñσÚ4Ìòσà,êóσ†(Dͳσº*Dÿ ØÏ«º*ÙÏ«´)lª7ÈσӴ)ÉσÓL° ,´ ½¾ÔÏ'ÕwX®Xäð'$ó'¼vÕwBÿWW XŽ/–L÷ Å²Ò¬É ÅÊ”à üÈ +üÄ 0ü» ;,û Ò… UY[«D<Y\®÷7,½Y]¯÷7¾Y]¯Ïì-‰Y^,fhY[HJ<(!T­âw`büÜB̾ Create a new `Waker`.Á㈠ ˆ Ço¼vÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwâwšËBÿ_ ñ_ `œDç�,ü<�`�a�a�aa`aŽqâwUÿü§$üÁ63 Wake up the [`Poll`] associated with this `Waker`.Áü�ô„ [`Poll`]: struct.Poll.htmlÁ$®‰  ‰ âwÈÊBÿ_ ³_ b$´lƒ ü(% Readiness event types and utilities.Á,‹ d|–Œ$,†Ö¥Ú4¤€§®9$¬Ú¨á4Éœ©LM,QcÖ… Udf÷7,½dg¯÷7¾dg¯ñ#¾,dh,PRCEDT¹–xjklmnopqrsäíôÊ Returns the event's token.Á,ô‹  ‹ –x¼vBÿi úi j$ûüÿ!ü¾:7 Returns true if the event contains readable readiness.Áý�\…ÒÌ•�ü�B? Out-of-band (OOB) data also triggers readable events. But mostÁüäB? applications don't actually read OOB data, this could leave anÁü«=: application open to a Denial-of-Service (Dos) attack, seeÁü팉 .ÁüþLI However because Mio uses edge-triggers it will not result in an infiniteÁüÏ+( loop as described in the article above.Á\† Œ  Œ –xBÿi ’ i k$“ üš !üÛ :7 Returns true if the event contains writable readiness.Á\¡ �  � –xBÿi ­ i l$® ô�üö 74 Returns true if the event contains error readiness.Á² �üº KH Error events occur when the socket enters an error state. In this case,ÁüŠ IF the socket will also receive a readable or writable event. Reading orÁüØ 2/ writing to the socket will result in an error.Á� �\— Ò̧ �ü¯ KH Method is available on all platforms, but not all platforms trigger theÁ„ÿ  error event.Á”�üœ<9 The table below shows what flags are checked on what OS.ÁÝ�üå'$ | [OS selector] | Flag(s) checked |Áü‘'$ |---------------|-----------------|Áü½'$ | [epoll] | `EPOLLERR` |ÁüéIF | [kqueue] | `EV_ERROR` and `EV_EOF` with `fflags` set to `0`. |Á·�ü¿;8 [OS selector]: ../struct.Poll.html#implementation-notesÁüÿ?�¶üÃH«·D—Ž  Ž –xBÿi  i m$¡üº$üæ=: Returns true if the event contains read closed readiness.Á¨�\°ÒÌÀ�üÈIF Read closed readiness can be expected after any of the following haveÁl– occurred:Áü¨?< * The local stream has shutdown the read half of its socketÁüìIF * The local stream has shutdown both the read half and the write halfÁœº of its socketÁüÒJG * The peer stream has shutdown the write half its socket; this sends aÁü¡=: `FIN` packet that has been received by the local streamÁã�üëHE Method is a best effort implementation. While some platforms may notÁü¸DA return readiness when read half is closed, it is guaranteed thatÁü�# false-positives will not occur.Á©�ü±<‹Àò�üú'ÝÀü¦'ŽÁüÒ'$ | [epoll] | `EPOLLHUP`, or |Áüþ2/ | | `EPOLLIN` and `EPOLLRDHUP` |Áüµ'$ | [kqueue] | `EV_EOF` |Áá�üé;ÏÂü©?�¶üíH«·tÁ�  � –xBÿi Ði n$Ñü˜&%üœ>; Returns true if the event contains write closed readiness.Áß�\çÒÌ÷�üÿEB On [epoll] this is essentially a check for `EPOLLHUP` flag as theÁüÉJG local stream shutting down its write half does not trigger this event.Á˜�ü DA On [kqueue] the local stream shutting down the write half of itsÁüé# socket will trigger this event.Á‘ �ü™ H³Èüæ EB return readiness when write half is closed, it is guaranteed thatÁü°!#ÓÉØ!�üà!<‹À¡"�ü©"'ÝÀüÕ"'ŽÁü�#'ÂÊü­#+( | | only `EPOLLERR`, or |ÁüÝ#1. | | `EPOLLOUT` and `EPOLLERR` |Áü“$'¯Ë¿$�üÇ$;ÏÂü‡%?�¶üË%H«·|Ÿ&�  � –xBÿi ¯&i o$°&ü«,!üü&:7 Returns true if the event contains priority readiness.Á»'�\Ã'ÒÌÓ'�üÛ'K‘¿œ«( priority event.ÁÃ(�üË(<‹ÀŒ)�ü”)'ÝÀüÀ)'ŽÁüì)'$ | [epoll] | `EPOLLPRI` |Áü˜*'$ | [kqueue] | *Not supported* |ÁÄ*�üÌ*;ÏÂüŒ+?�¶üÐ+H«·\²,‘  ‘ –xBÿi ¾,i p$¿,äÜ2ü‡-52 Returns true if the event contains AIO readiness.ÁÁ-�\É-ÒÌÙ-�üá-LI Method is available on all platforms, but not all platforms support AIO.Á².�üº.<‹Àû.�üƒ/'ÝÀü¯/'ŽÁüÛ/'$ | [epoll] | *Not supported* |Áü‡0+( | [kqueue]1 | `EVFILT_AIO` |Á·0�ü¿0?< 1: Only supported on DragonFly BSD, FreeBSD, iOS and macOS.Áƒ1�ü‹1;ÏÂüË1?�¶ü�2H«·4ã2’  ’ –xBÿi ê2i q$ë2ä’5ü®352 Returns true if the event contains LIO readiness.Áè3�\ð3ÒÌ€4�üˆ4KH Method is available on all platforms, but only FreeBSD supports LIO. OnÁüØ452 FreeBSD this method checks the `EVFILT_LIO` flag.Á4™5“  “ –xBÿi  5i r$¡5ü­6B”»6”  ” ß× ” –xBÿi Ù6i€ãœÆ£Ì°;üë8JG When the [alternate] flag is enabled this will print platform specificÁü¶9OL details, for example the fields of the `kevent` structure on platforms thatÁü†:KH use `kqueue(2)`. Note however that the output of this implementation isÁüÒ:.+ **not** consider a part of the stable API.Á�;�ü…;*' [alternate]: fmt::Formatter::alternateÁ–xu guüÐ;8Ó;• – —  • –x – €g€gŠ‚gê ûcƒg±ÓûcØ«q¢1È¡— †ÓBÿt ×;t u$Ø;œ Þ;1®dÇ@d¦xxvvw�yód Ïö«¦„Ôב¦Ïö«¦„Ôבwy ¦ßײäBÿ«®xdþä²äBÿvv w¦Ô@tØ@dvvþäüö@$8˜ ˜ Ôx{ g{ü­A8°A™ š ›  ™ Ôx š €g€gŠ‚gê ûcƒg±ÓûcØ«q¢1È¡› †ÓBÿz ´Az {8$µAœ »ATX4\c€ÚŒ$,Ö|}¥…$U|~ñ3¾,|œ9T(D.Œ„ ü9%" A collection of readiness events.Á_�ücKH `Events` is passed as an argument to [`Poll::poll`] and will be used toÁü¯MJ receive any new readiness events received since the last poll. Usually, aÁüýJG single `Events` instance is created at the same time as a [`Poll`] andÁüÈ*' reused on each call to [`Poll::poll`].Áó�ü÷30 See [`Poll`] for more documentation on polling.Á«�ü¯30 [`Poll::poll`]: ../struct.Poll.html#method.pollÁüã! [`Poll`]: ../struct.Poll.htmlÁ…�t‰×â˜�,Â\¼Ðãäƒßãü /…ääÐ use mio::{Events, Poll};Áäíµ‰Š�üŽ1—èüÀ íç,á #Áüç! # assert!(events.is_empty());Á‰�ü�-* // Register `event::Source`s with `poll`.Á»�ü¿>; poll.poll(&mut events, Some(Duration::from_millis(100)))?;Áþ�ü‚  for event in events.iter() {Áü£96 println!("Got an event for {:?}", event.token());Á,Ý‚ï„㞎<ô�ï<ü�»4� ây m´ a�”œ ,œ |€€‹Í\‹âyƒ„…†‡ˆü¢/ü�EB Return a new `Events` capable of holding up to `capacity` events.Áç�tï×â‚�<Š�»¤– use mio::Events;Á¯�ü·-* let events = Events::with_capacity(1024);Áüé(% assert_eq!(1024, events.capacity());Á<–�»l©ÕwâyBÿ‚‚ ƒŽD·ü–ü³>; Returns the number of `Event` values that `self` can hold.Áö�<þ�»¤Šæñ£�ü«-�òüÝ(Çò<Š�»D�     âyÕwBÿ‚ ¦‚ „$§ôÐüá85 Returns `true` if `self` contains no `Event` values.Áž�t¦×â¹�<Á�»¤Íæñæ�üî-�òü ú›<Ä�»Dס  ¡ âyBÿ‚ à‚ …$áôùüš0- Returns an iterator over the `Event` values.ÁÏ�t××âê�,˜\’Ðãäáßãü‚/…ää¶¢ìä×µ‰ø�ü€1—èü¶ íçÛ�üã$! // Register handles with `poll`.ÁŒ�ü”>…î×�üß Ùîü„9ƒï,‚ï„ÌžŽ<á�ï<í�»$€¢  ¢ âyÚÚ®9Üè|ÝÊ9|ú™¼Pˆf¢ Bÿ‚ …‚ †$†¼Å%üë:7 Clearing all `Event` values from container explicitly.Áª�\²ÒÌÂ�üÊIF Events are cleared before every `poll`, so it is not required to callÁ”˜  this manually.Á¯ �t· ×âÊ �,ø \ò ÐãäÁ!ßãüâ!/…ää–"¢ìä·"µ‰Ø"�üà"1—èü–# íç»#�üÃ#$›ùì#�üô#>…î·$�Ä¿$ // Clear all events.ÁœÜ$ events.clear();Áüô$ú›„˜%žŽ<­%�ï<¹%�»,Ì%£  £ âyBÿ‚ Ò%‚ ‡$×%ü¯&0½&¤  ¤ ây ¤ ‹ÍBÿ‚ Á&‚ ˆ$Æ&üƒ'$¦ŠŠÜy‹Œ��P�P‘P�ˆ'L®'$³'‰‰ ¦–xlÉ'DÎ'‰‰�yüè'$Lë'Üy�PÜyBÿ‰‰ �¦j¬ô¬(¦���y�‘’“ÅQÆQÊQËQ“‘’±(LÑ($Ö(ŽŽå‚üí(($ð(¥  ¥ �yřǙș­É™Ê™àË™óG*¤�R{9 ÅQ�yBÿŽ õ(Ž ‘¦$ú(üË*-LÎ*¦  ¦ �yÇçBÿŽ Ø*Ž ’¦$Ù*¼Ì+,Ï+�yÕwBÿŽŽ “¦©´ÔŽ,ây• g•ü¯,8²,§ ¨ ©  § ây ¨ €g€gŠ‚gê ûcƒg±ÓûcØ«q¢1È¡© †ÓBÿ” ¶,” •$·,œ ½,Td4hcœ™!D º–˜««D<–™®÷7, ½–š¯÷7¾–š¯Ïì2‰–›,uwacNP<-#„Ÿü7=: An event source that may be registered with [`Registry`].Áu�üy?< Types that implement `event::Source` can be registered withÁü¹IF `Registry`. Users of Mio **should not** use the `event::Source` traitÁüƒNK functions directly. Instead, the equivalent functions on `Registry` shouldÁdÒ be used.Áß�üã&# See [`Registry`] for more details.ÁŠ�üŽ)& [`Registry`]: ../struct.Registry.htmlÁ¸�ü¼" # Implementing `event::Source`Áß�üãOL Event sources are always backed by system handles, such as sockets or otherÁü³JG system handles. These `event::Source`s will be monitored by the systemÁüþLI selector. An implementation of `Source` will almost always delegate to aÁüËOL lower level handle. Examples of this are [`TcpStream`]s, or the *unix only*ÁŒ› [`SourceFd`].Á­�ü±/, [`TcpStream`]: ../net/struct.TcpStream.htmlÁüá.+ [`SourceFd`]: ../unix/struct.SourceFd.htmlÁ��ü” # Dropping `event::Source`sÁ´�ü¸OL All `event::Source`s, unless otherwise specified, need to be [deregistered]ÁüˆNK before being dropped for them to not leak resources. This goes against theÁü×OL normal drop behaviour of types in Rust which cleanup after themselves, e.g.Áü§ KH a `File` will close itself. However since deregistering needs access toÁüó 96 [`Registry`] this cannot be done while being dropped.Á­ �ü± =: [deregistered]: ../struct.Registry.html#method.deregisterÁï �tó ×â‚ �ü† :7 Implementing `Source` on a struct containing a socket:ÁÁ �,� \û ÐãüØ )& use mio::{Interest, Registry, Token};ÁÜ‚  use mio::event::Source;Áäž ôä» �„¿  use std::io;ÁÐ �ÌÔ  # #[allow(dead_code)]ÁÌî  pub struct MySource {ÁÔˆ socket: TcpStream,Á,£‚ï©�ô­ impl Source for MySource {ÁüÌVS fn register(&mut self, registry: &Registry, token: Token, interests: Interest)Áì£ -> io::Result<()>ÁLÁ {ÁüË74 // Delegate the `register` call to `socket`Áüƒ<9 self.socket.register(registry, token, interests)ÁLÀðîÊ�üÎXU fn reregister(&mut self, registry: &Registry, token: Token, interests: Interest)Áì§Ö™LÅü™üÏ96 // Delegate the `reregister` call to `socket`Áü‰>; self.socket.reregister(registry, token, interests)ÁLÈðîÒ�üÖIF fn deregister(&mut self, registry: &Registry) -> io::Result<()> {Áü 96 // Delegate the `deregister` call to `socket`ÁüÚ,) self.socket.deregister(registry)ÁL‡ðî,‘‚ï<—�»4©œœÿÆüŸ– œ× × "�žŸ�žŸŸ�žüŒˆü¶74 Register `self` with the given `Registry` instance.Áò�üúKH This function should not be called directly. Use [`Registry::register`]ÁüÊKH instead. Implementors should handle registration by delegating the callÁìš to another `Source` type.Á¼�üÄC@ [`Registry::register`]: ../struct.Registry.html#method.registerÁD�ª «  ª ß  « Ço¼vßmÈÊBÿœ ¡œ �ß $¦œD´�,Ñ«ËLçüƒŠüš:7 Re-register `self` with the given `Registry` instance.ÁÙ�üá41 This function should not be called directly. UseÁüš@= [`Registry::reregister`] instead. Implementors should handleÁüßKH re-registration by either delegating the call to another `Source` type.Á¯�ü·GD [`Registry::reregister`]: ../struct.Registry.html#method.reregisterÁT†¬ ­  ¬ ß  ­ Ço¼vßmÈÊBÿœ šœ žß $ŸœD­�,Ê«ËLàüó@ü“96 Deregister `self` from the given `Registry` instance.ÁÑ�üÙ4„¥ü’@= [`Registry::deregister`] instead. Implementors should handleÁü×C@ deregistration by delegating the call to another `Source` type.ÁŸ�ü§GD [`Registry::deregister`]: ../struct.Registry.html#method.deregisterÁTö® ¯  ® ß  ¯ ÇoÈÊBÿœ �œ Ÿß $†œDŒü·7�¡¡ÿÆìz4çœìz4Þ«z¢£¤�žŸ¢£¤ ¼üõ‡Dø° ±  ° «z ± Ço¼vßmÈÊBÿ  Š   ¢ìz$� œ¶�¶«Ë&¶üÀ!‰TÃ!² ³  ² «z ³ Ço¼vßmÈÊBÿ  ×!  £ìz$Ü!œO·�X·«Ëa·ü�#?T’#´ µ  ´ «z µ ÇoÈÊBÿ  �#  ¤ìz$¢#œv¸”yR>d•G>J>;>>>¤»3>ló ŒÙ Lß ×Ñ”Š ÈÑ$¦ ½ÑÀѲѵÑdÆ «Ñd˜Å²Ò¬â ÅÊ”ù üá +üÝ 0üÔ ;¼ÑdŠÌ� Unix only extensions.ÁÌ$±Óàž”·Ô°ü§%$’²º*D�Ø·Ï«º*Ù·Ï«d¼tÓ Unix pipe.Áê�üö/, See the [`new`] function for documentation.Á$Ę Ê é´Ó7DϹµ°74Ùµ¶„·79)+¤õâ„¡ô¸ # Mio's optional features.ÁÛ�üã:7 This document describes the available features in Mio.Á¢�ÄÑôË## `os-poll` (enabled)Á¼�üÄJG Mio by default provides only a shell implementation that `panic!`s theÁü“EB moment it is actually run. To run it requires OS support, this isÁüÝ0- enabled by activating the `os-poll` feature.Á’�üš96 This makes `Poll`, `Registry` and `Waker` functional.ÁØ�¼†ì€## `os-ext` (enabled)Áî�üöLI `os-ext` enables additional OS specific facilities. These facilities canÁüÇ0- be found in the `unix` and `windows` module.Áü�ä§ü¡"## Network types (enabled)Á–�üžHE The `net` feature enables networking primitives in the `net` module.ÁD©lêäþ # Getting started guide.ÁŸ�ü§)& In this guide we'll do the following:ÁÕ�üÝ96 1. Create a [`Poll`] instance (and learn what it is).Áü› " 2. Register an [event source].Áä  3. Create an event loop.Áã �üë KH At the end you'll have a very small (but quick) TCP server that acceptsÁü»!2/ connections and then drops (disconnects) them.Áò!�üú!$! ## 1. Creating a `Poll` instanceÁ£"�ü«"KH Using Mio starts by creating a [`Poll`] instance, which monitors eventsÁüû"LI from the OS and puts them into [`Events`]. This allows us to execute I/OÁüÌ#2/ operations based on what operations are ready.Áƒ$�ü‹$!¨ëü±$+( [`Events`]: ../event/struct.Events.htmlÁá$�,�%\Š%ÐãôÚ% # use mio::{Poll, Events};Áüý%(% # fn main() -> std::io::Result<()> {Áüª&52 // `Poll` allows for polling of readiness events.Áää&•Œü…'HE // `Events` is collection of readiness `Event`s and can be filled byÁäÒ' // calling `Poll::poll`.Áüó',) let events = Events::with_capacity(128);Áܤ( # drop((poll, events));ÁdÄ( # Ok(())Á<Õ(�ï<á(�»í(�üõ(EB For example if we're using a [`TcpListener`], we'll only want toÁü¿)FC attempt to accept an incoming connection *iff* any connections areÁüŠ*JG queued and ready to be accepted. We don't want to waste our time if noÁÔÙ* connections are ready.Áø*�ü€+30 [`TcpListener`]: ../net/struct.TcpListener.htmlÁ¸+�üÀ+" ## 2. Registering event sourceÁç+�üï+LI After we've created a [`Poll`] instance that monitors events from the OSÁüÀ,JG for us, we need to provide it with a source of events. This is done byÁü�-PM registering an [event source]. As the name “event sourceâ€� suggests it isÁüä-KH a source of events which can be polled using a `Poll` instance. On UnixÁü´.DA systems this is usually a file descriptor, or a socket/handle onÁdý. Windows.ÁŽ/�ü–/LI In the example below we'll use a [`TcpListener`] for which we'll receiveÁüç/GD an event (from [`Poll`]) once a connection is ready to be accepted.Á³0�ü»0.+ [event source]: ../event/trait.Source.htmlÁî0�,³1\­1Ðãü“2  # use mio::net::TcpListener;Áü¸2'$ # use mio::{Poll, Token, Interest};Áüä2(ñÀô‘3 # let poll = Poll::new()?;Áü´330 # let address = "127.0.0.1:0".parse().unwrap();Áüì374 // Create a `TcpListener`, binding it to `address`.Áü¨430 let mut listener = TcpListener::bind(address)?;Áà4�üè4MJ // Next we register it with `Poll` to receive events for it. The `SERVER`Áüº5NK // `Token` is used to determine that we received an event for the listenerÁ„�6 // later on.Áü¢6# const SERVER: Token = Token(0);ÁüÊ6IF poll.registry().register(&mut listener, SERVER, Interest::READABLE)?;Ád˜7¿Ã<©7�ï<µ7�»Á7�üÉ7HE Multiple event sources can be [registered] (concurrently), so we canÁü–8'$ monitor multiple sources at a time.ÁÂ8�üÊ896 [registered]: ../struct.Registry.html#method.registerÁˆ9�ü�9! ## 3. Creating the event loopÁ¶9�ü¾9FC After we've created a [`Poll`] instance and registered one or moreÁü‰:LI [event sources] with it, we can [poll] it for events. Polling for eventsÁüÚ:KH is simple, we need a container to store the events: [`Events`] and needÁüª;JG to do something based on the polled events (this part is up to you, weÁüù;KH can't do it all!). If we do this in a loop we've got ourselves an eventÁLÉ< loop.Á×<�üß�,ó>\í>Ðã”Ó? # use std::io;Áôê? # use std::time::Duration;Áü�@ íÌü²@/, # use mio::{Poll, Token, Interest, Events};Áüæ@# # fn main() -> io::Result<()> {ÁüŽA" # let mut poll = Poll::new()?;ÁüµA2/ # let mut events = Events::with_capacity(128);ÁüìA3ýÍü¤B52 # let mut listener = TcpListener::bind(address)?;ÁüÞB%" # const SERVER: Token = Token(0);ÁüˆCKH # poll.registry().register(&mut listener, SERVER, Interest::READABLE)?;ÁäØC // Start our event loop.ÁTùCöëüˆDDA // Poll the OS for events, waiting at most 100 milliseconds.ÁüÑDB? poll.poll(&mut events, Some(Duration::from_millis(100)))?;Á˜E�ô E // Process each event.ÁüÃE$! for event in events.iter() {ÁüìEKH // We can use the token we previously provided to `register` toÁü¼F52 // determine for which type the event is.ÁüöF! match event.token() {ÁüœG  SERVER => loop {ÁüÁGMJ // One or more connections are ready, so we'll attempt toÁü“H/, // accept them (in a loop).ÁüÇH-* match listener.accept() {ÁüùH63 Ok((connection, address)) => {Áü´IKH println!("Got a connection from: {}", address);Áü„J-* # drop(connection);ÁÔ¶J },ÁüÕJMJ // A "would block error" is returned if the operationÁü§KGD // is not ready, so we'll stop trying to acceptÁüóK'$ // connections.ÁüŸLB? Err(ref err) if would_block(err) => break,ÁüæL41 Err(err) => return Err(err),Á¬ŸM }ÁŒ¹M }ÁüÏM$! # _ => unreachable!(),ÁløMÚîLŠNðî´˜N # return Ok(());Á,³N‚ï½N�üÅN-* fn would_block(err: &io::Error) -> bool {Áü÷N/, err.kind() == io::ErrorKind::WouldBlockÁ,«O‚ï<µO�ï<ÁO�»,ò[Uü/! Interest used in registering.ÁQ�üUMJ Interest are used in [registering] [`event::Source`]s with [`Poll`], theyÁü£OL indicate what readiness should be monitored for. For example if a socket isÁüóLI registered with [readable] interests and the socket becomes writable, noÁüÀ30 event will be returned from a call to [`poll`].Áô�üø74 [registering]: struct.Registry.html#method.registerÁü°0Òàôáç±ü€@= [readable]: struct.Interest.html#associatedconstant.READABLEÁüÁ*œóD®ßm>kÒ!õƒüË»¼”ŽßmBÿ[U4”ŽßmBÿºº‹­L·ºº”Ž õßmZGßmZGßmÀù±ÀZGZGàá àßm áßmBÿ¿û¿ ÀZGî ZG@HßmÂÎÂ@H@H@H@Hâ âßmBÿÁ†Á Â@H~H~H~Hßm~HßmņÅ~H~Hã ãßmßmBÿÄŠÄ Å~HÝHßmDZ²ÇÝHÝHäå äßm åßm™–BÿÆ‘Æ ÇÝHî ÝH%JßmÉîÉ%J%Jæç æßm çßm™”BÿÈ �È É%Jî %JüÕh üë] Return a new `Poll` handle.Á“^�üŸ^GD This function will make a syscall to the operating system to createÁüï^GD the system selector. If this syscall fails, `Poll::new` will returnÁœ¿_ with the error.ÁÛ_�üç_UR close-on-exec flag is set on the file descriptors used by the selector to preventÁüÅ`%" leaking it to executed processes.Áó`�üÿ`-* See [struct] level docs for more details.Áµa�ôÁaáËèa�tôa×â‹b�<—b�»ä§bßãüÌb/…ää„c use mio::{Poll, Events};Áä©cµ‰Îc�üÚc&# let mut poll = match Poll::new() {Á̉d Ok(poll) => poll,Áü«dHE Err(e) => panic!("failed to create Poll instance; err={:?}", e),Á4üd };Á‹e�ü—e2/ // Create a structure to receive polled eventsÁüÒe1—èŒf�ü˜f<9 // Wait for events, but none will be received because noÁüÝfGD // `event::Source`s have been registered with this `Poll` instance.Áü­g>; poll.poll(&mut events, Some(Duration::from_millis(500)))?;Áüôgú›„œhžŽ<µh�ï<Åh�»Óã ˜ˆ Ø‚ ÜhÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwŒošËBÿ>> ÊT�iÊ�Ë�Ë�ËËÊ˰¢ŒoUÿ̨ Óã ˜$ˆ Ø$‚ dµ   ٠ Ì Ø , Ú 8!$Û & ß 8Ý,á  ç ÷ , è 8 event_typeÁTé & ó 8‚õ $ ø , ú 8Í$û & ÿ 8ª $� $ … , “  ” Æ  , •  – § + —  ˜ ¦ , ™ 8´4š &   8ª $¢  ¨ , ª 8»$« & ¯ 8Ý,± '· , º 8flagÁ$» & ¿ 8Ý,Á $ Ç  È , Ê  Ë Í $ Ì  Î *Ú  Ý Ò  84ë , ò 8!$ó  ÷ ƒ , ø 8Ñ‚Tù % „ 8$“ 8ñ˜ '› 8q,� 8 £ , § 8!$¨  ­ È 8 ¿ 8ñ  Å ç   Æ 8$Ç $ Ë 8œ Í & Î  Ð 8Ñ 8ñÕ 'Ø 8ŠLÚ  ã :8ä  æ (é 8ñì 'ï 8Ñ4ñ  ø º 8Ž 8’ 8 written_oneÁ\– ¢ 8 ,¤ % © , ¿  À ‚ , Ú  Û æ + Ü  Ý å , Þ 8´4ß  ç + �  ‚ ž 8²,ƒ  ˆ � 8Œ4‰ '� 8 bad_bit_maskÁd‘  Û ì 8É , Ì 8Í$Í  Ñ ê   Ò 8$Ó  × 7ó Ø $ Ù  Û , Ü 8»$Ý 'â , å 8Ä$æ  ì Ò 8Ž ‘ 8�ˆ\’  ž Á  8Î3,Ä  É  Ê å 8œ Ë $ Ì 7Ž$Î $ Ò 8�LÔ  Ý  Þ ä , ß 8Ä$à - æ % ç 8�ˆ\� ™ 8 $› % Ÿ 8$à  È ´ 8Î3,î  ó  ô � 8œ õ $ ö 7|{}Á,ø $ ý 8�Lÿ  ˆ  ‰ � , Š 8Ä$‹ - ‘ % ’ ƒ 8™ œ 8�ˆ\�  © ì 8Î3,à  È  É Ö 8œ Ê $ Ë 7(empty)ÁLÍ 8$î  ó ¨ 8¯�  � ’  � ‘ % Ó DØ Óã ˜%ˆ Ø%‚ $Ü UЄž¬ßò‰—º*rØ«º*%rÙ«™ ´rÔƒ‚Œ$¯rñƒÚªròƒà¥róƒ†( r³ƒ´)orȃӴ)†rɃӤž<« ³ ¸ ¹ ß, º8 »& ½8Ý,¿ Å Ý, Ç È Ó, É8argÁÊ& Í8²$Ï$ Ô Õ, × Ø Ú$ Ù Û*á ä µ å ´+ ï ð …8²,ñ ö „8 unused_unsafeÁl÷8�8resÁ“ —8"4™   ¸8»$¢'¦, ¨8 © « ¶, ¬ ­ ´, ®8†’¯$ ² µ% ¹8Ã8Å“Æ Ê7ó Ì Î ‰8€Ü ß ÿ8‰à'ã8Ïìå'ç8¤Ê,é'î8 last_os_errorÁlð ý þ8$‹ � ®8¯ž   ¤8Å“¡% ¶T‹ Óã š˜dË Óã ˜&ˆ Ø&‚ ,DÏ Íðñòó³ÁÏì ‰ÐÑ÷ $„$ÐÓà <%¢#ÐÔ§T.®LÐÕá L:¤#ÐÖùü5!ÏÅ®ãÑÅ®.-,åÓÅ®DCBç¤âÙ,üÂÄ­¯Tþ,Žq“”•—˜™šüÔI⨠ ¨ Œp¼vÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwŽqšËBÿ’ ð’ “ºDæ�,ûüº5„ȼ³Bÿ’’ ”üÄ +$Ò ©  © ŽqÈÊBÿ’ × ’ •$Ø  ¤Õwü¢"l°ª  ª ŽqBÿ’ ¾’ —$¿ü¶(Ä«  « ŽqřǙș­É™Ê™àË™óG*¤�R{9 Bÿ’ Ç’ ˜$Èü—",¥¬  ¬ ŽqBÿ’ «’ ™$¬üé!,ì„­  ­ ŽqÈÊBÿ’ ò’ š$ó §Õw´‘,Žq�£#�ä®L±®  ® ŽqBÿœ »œ �$¼d¶ Óã   Óàž”� Ô— ,Dº ÍØÙÏì ‰žŸÿ ,@¡#ž à,–cž¢™!D�ºž£««D§<ž¤®÷7,±½ž¥¯÷7¾ž¥¯<Ÿ”3Å®¤´ü !¦,Ž˜šˆŠsu_aüŠ',¦§§Íq¨©ª�žŸª©¨�ü¸‡D»² ³  ² Íq ³ Ço¼vßmÈÊBÿ¦ ͦ ¨¦$ÒœDà�,ý«ËL“ü�‰T�´ µ  ´ Íq µ Ço¼vßmÈÊBÿ¦ ¤¦ ©¦$©œD·�,Ô«ËLêüæ?Té¶ ·  ¶ Íq · ÇoÈÊBÿ¦ ô¦ ª¦$ùœDÿÄï Óã ãáÓàž”Î ÔÈ š‰œ¦,Óã  Óàž”½# mio_unsupported_force_waker_pipeÁü’$ åÐü�%ÅfreebsdÁ¬ç%ÅiosÁŒ’&ÅmacosÁœ¹&ÅtvosÁ”â&ÅvisionosÁ´Š'ÅwatchosÁ¬¶'üÑ%�üÃ$ªÅ‹ ŒÂ(Å dragonflyÁ¼á(ÅØÑœ†)ÅõÑ”§)ÅnetbsdÁ¤Ç)Å…ÒŒé)ÅopenbsdÁ¬ˆ*ÅredoxÁœ«*åÐüÐ*Ū ¬ñ*üÏ*8ż ”•+Å Ò¤µ+üã"ñÅ®¤â+´á+ÅÊ”…,¤„,üÖ"É üÍ"Ô ,+Œ¯é´µ¹ÏìM ‰¬­ÿ ,b ¡#¬®¡í$§ §B¬ÒIoSliceÁ<» Œ‰¬Ô IoSliceMutÁTÄ ü7¬ÕŒ¯$Ð ç¬Ö¤¯,Ö � ¬×÷ $ð „$¬Ùà <ö ¢#¬Ú§Tÿ ®L¬Ûá L‹ ¤#¬ÜÛL– ¦#¬Ýù<¡ í#¬ÞÄt\¾ Ñ)¬àùqTË ­)¬á�t\× Á)¬âÎ:Dü ò¬ãà,’ c¬å™!D™ º¬æ««D£ <¬ç®÷7,­ ½¬è¯÷7¾¬è¯š¹®ÕDññ„ÔÔ—îèv¡Žq× g×èvèv¥ ¦ §  ¥ Žq ¦ €g€gŠ‚gê ûcƒg±ÓûcØ«q¢1È¡§ †ÓBÿÖ”ËÖ ×èvœèvÂüºHE Adapter for [`RawFd`] providing an [`event::Source`] implementation.Áƒ�ü‡EB `SourceFd` enables registering any type with an FD with [`Poll`].ÁÍ�üÑIF While only implementations for TCP and UDP are provided, Mio supportsÁü›NK registering any FD that can be registered with the underlying OS selector.Áüê-* `SourceFd` provides the necessary bridge.Á˜�üœLI Note that `SourceFd` takes a `&RawFd`. This is because `SourceFd` **doesÁüéHE not** take ownership of the FD. Specifically, it will not manage anyÁü²PM lifecycle related operations, such as closing the FD on drop. It is expectedÁüƒ=: that the `SourceFd` is constructed right before a call toÁüÁ=: [`Registry::register`]. See the examples for more detail.Áÿ�üƒ1. [`event::Source`]: ../event/trait.Source.htmlÁüµ!¨ëü×CÞ¢› �tŸ ×â® �„²  Basic usage.Áà �,  \š Ðãä– ßãü³ /…äüã %" use mio::{Interest, Poll, Token};Á„‰  #[cfg(unix)]Áäš  use mio::unix::SourceFd;Áô·  #[cfg(target_os = "wasi")]ÁäÖ  use mio::wasi::SourceFd;Áó �ì÷  use std::os::fd::AsRawFd;Áô•  use std::net::TcpListener;Á´ �Ô¸  // Bind a std listenerÁüÓ 52 let listener = TcpListener::bind("127.0.0.1:0")?;Á‰�ä�•Œª�ä® // Register the listenerÁìËÞÖüé-* &mut SourceFd(&listener.as_raw_fd()),ÁŒ—£×ì©ÁŠ„ÇžŽ<Ø�ï<à�»è�üìKH Implementing [`event::Source`] for a custom type backed by a [`RawFd`].Á¸�,û\õÐãüÕ0- use mio::{event, Interest, Registry, Token};Á„†ðåä—‰æô´®æäÓÕæð�Üô use std::os::fd::RawFd;Á„�ª—¡�̥ϗ¬¿ pub struct MyIo {Á”Õ fd: RawFd,Á,è‚ïî�üò! impl event::Source for MyIo {Áü”V÷˜ìëÖ™L‰ü™ü“C@ SourceFd(&self.fd).register(registry, token, interests)ÁL×ðîá�üåX¯›ì¾Ö™LÜü™üæEB SourceFd(&self.fd).reregister(registry, token, interests)ÁL¬ðî¶�üºIÏ�ü„30 SourceFd(&self.fd).deregister(registry)ÁL¸ðî,‚ï<È�»9Dì¦ÚÚÍqBù ŠÅ\}ÙÛ ¦ÍqBÿÂJ‘òÍqBÿØØ Ù¦õlùØØ‘òÀy¢¦ÝÝÍqÞ gÞIKÀyÀy¯ ° ±  ¯ Íq ° €g€gŠ‚gê ûcƒg±ÓûcØ«q¢1È¡± †ÓBÿÜ–ÙÜ Þ¦ÀyœÀy<¡!Óô*x—  ¸—š :¥!ÍèéêïñÏì ‰ßàà< ÙßáIpv4AddrÁD3¨—ßãIpv6AddrÁD=¶—ß䌻TGý˜ßå SocketAddrV4ÁdS”™ßæ SocketAddrV6Áda§™ßç<ºŒ«D(”–{}ikLN/1üqblý˜þ˜ÿ˜V4Á€™ó�™‚™V6Áƒ™ó¡*œŸ%?ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwšËBÿ 蟻$� socket_typeÁ\Ÿü¤bT²á÷Bÿ édomainÁ4½Ð÷\ÒüÓ :|äêêÎ+ëå+ßìï+ß/]ã ¦/]ã ¦ëì¬úúßêêßß sockaddr_inÁà sin_familyÁásin_portÁâsin_addrÁãsin_zeroÁÜ¿{Ñé.Ø´••ßêêìì sockaddr_in6Áí sin6_familyÁî sin6_portÁï sin6_flowinfoÁð sin6_addrÁñ sin6_scope_idÁù`D +»o¤°:ÄùîüË44Ù¸  ¸ Äù ÔÔsockaddrÁÕ sa_familyÁÖsa_dataÁ"^i$n@ª*Bÿí àí î$áüþR\Œ¹  ¹ �÷ÄùBÿ ž $˜ ëïïÕwü�7lt²7 ÇÇsockaddr_storageÁÈ ss_familyÁÉ __ss_pad2ÁˆË __ss_alignÁˆ=¦þ†eÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw�÷šËÿ ñstorageÁ<Æ7”³!Óô*  :ñª�‚ƒ„…†Ïì ‰òóà< Ùòõ MaybeUninitÁ\%ý­òöô*$Bù òøŒ»THý˜òùà <‰¢#òûá L’¤#òü¼+TŒ éòþŒ,\˜ ïòÿ¤,t¥ ñò€<ÛDÌα³D7£<“•\{Å®¤_´^üU!›Å®¯œÅ®.-,°¬ô¡£�’�ü·JdÅ�÷á÷Bÿ �Ÿ<Òü²Q$Àº  º ˆ}�÷ÈÊBÿ Í ‚’¨4ÅŸ»$àü›R<©»  » ó~�÷ÈÊBÿ ¹ ƒ’¨4±Ÿ»$ÊüŒ O4š ¼  ¼ ˆ}ÈÊBÿ ©  „’¨4¡ backlogÁ<¼ ü  Yl® ½  ½ ˆ}ÈÊBÿ Ä  …’¨4¼  reuseaddrÁL× üŸ]4­¾  ¾ ˆ}ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwó~�÷šËBÿ ¾ †ê/D´D³†�‡�‡�‡‡†‡Û¡ó~Uÿ4±%†�ˆ�ˆ�ˆˆ†ˆ�÷¤ˆ Uÿó~”Ï!Óô*¯ ¬ :¯•–Ïì ‰‰Š˜ ô‰‹ô*$*ù ‰�Œ»T0ý˜‰Žà =0ÓàžXUT0B0ÓàžroY0G0ÓàžŒ‰^0Ôê Óàž§¤d0,Š ÓàžÂ¿j0ÓàžÙÖ�0p0Óàžóð‡0q0Óàž  ˆ0s0Óàž'$Š0üÌ5. ü¶( % Create a new non-blocking Unix pipe.Áß �üãN K This is a wrapper around Unix's [`pipe(2)`] system call and can be used asÁü²2 / inter-process or thread communication channel.Áå �üéP M This channel may be created before forking the process and then one end usedÁüºP M in each process, e.g. the parent process has the sending end to send commandÁÌ‹  to the child process.Á¥ �ü©U R [`pipe(2)`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/pipe.htmlÁÿ �dƒ  # EventsÁ� �ü”J G The [`Sender`] can be registered with [`WRITABLE`] interest to receiveÁüßP M [writable events], the [`Receiver`] with [`READABLE`] interest. Once data isÁü°L I written to the `Sender` the `Receiver` will receive an [readable event].Áý �ü�P M In addition to those events, events will also be generated if the other sideÁüÒH E is dropped. To check if the `Sender` is dropped you'll need to checkÁü›K H [`is_read_closed`] on events for the `Receiver`, if it returns true theÁüçM J `Sender` is dropped. On the `Sender` end check [`is_write_closed`], if itÁüµO L returns true the `Receiver` was dropped. Also see the second example below.Á… �ü‰$ ! [`WRITABLE`]: Interest::WRITABLEÁü®0 - [writable events]: event::Event::is_writableÁüß$ ! [`READABLE`]: Interest::READABLEÁü„/ , [readable event]: event::Event::is_readableÁü´4 1 [`is_read_closed`]: event::Event::is_read_closedÁüé6 3 [`is_write_closed`]: event::Event::is_write_closedÁ  �œ¤  # DeregisteringÁ¸ �ü¼I F Both `Sender` and `Receiver` will deregister themselves when dropped,Áü†E B **iff** the file descriptors are not duplicated (via [`dup(2)`]).ÁÌ �üÐS P [`dup(2)`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/dup.htmlÁ¤ �t¨ ×â· �ü»M J Simple example that writes data into the sending end and read it from theÁ”‰  receiving end.Áœ �<  �»ü¨% " use std::io::{self, Read, Write};ÁÎ �üÒ- * use mio::{Poll, Events, Interest, Token};ÁÄ€  use mio::unix::pipe;Á™ �ü� 5 2 // Unique tokens for the two ends of the channel.ÁüÓ & # const PIPE_RECV: Token = Token(0);Áüú & # const PIPE_SEND: Token = Token(1);Á¡! �ü¥!# ¡ÛüÉ!= : // Create our `Poll` instance and the `Events` container.Áü‡" íçü¨". + let mut events = Events::with_capacity(8);Á×" �ÌÛ"  // Create a new pipe.Áüõ"2 / let (mut sender, mut receiver) = pipe::new()?;Á¨# �ü¬#) & // Register both ends of the channel.ÁüÖ#L I poll.registry().register(&mut receiver, PIPE_RECV, Interest::READABLE)?;Áü£$J G poll.registry().register(&mut sender, PIPE_SEND, Interest::WRITABLE)?;Áî$ �üò$* ' const MSG: &[u8; 11] = b"Hello world";Á�% �T¡% öëü¬%& ŠìÓ% �ü×%$ †àüü%! Èáüž&. + PIPE_SEND => sender.write(MSG)ÁüÍ&5 2 .and_then(|n| if n != MSG.len() {Áüƒ'L I // We'll consider a short write an error in thisÁüÐ'K H // example. NOTE: we can't use `write_all` withÁüœ(0 - // non-blocking I/O.ÁüÍ(@ = Err(io::ErrorKind::WriteZero.into())ÁüŽ)  } else {Áü¯)"  Ok(())ÁäÒ)  })?,Áôï)  PIPE_RECV => {ÁüŽ** ' let mut buf = [0; 11];Áü¹*5 2 let n = receiver.read(&mut buf)?;Áüï*; 8 println!("received: {:?}", &buf[0..n]);Áü«+- * assert_eq!(n, MSG.len());ÁüÙ+, ) assert_eq!(&buf, &*MSG);Áü†,"  return Ok(());Á”©,  },Áü¼,$ ! _ => unreachable!(),Álá, ÚîLï, ðî,ù, ‚ï<ÿ, �ï<‡- �»�- �ü“-@ = Example that receives an event once the `Sender` is dropped.ÁÔ- �<Ø- �»”à- —Ú,ó- üìüù-/ , # use mio::{Poll, Events, Interest, Token};ÁÔ©.  # use mio::unix::pipe;Á,Ä. üìüÊ.( % # const PIPE_RECV: Token = Token(0);Áüó.( % # const PIPE_SEND: Token = Token(1);Á,œ/ üìü¢/# ¡ÛüÆ/* ' // Same setup as in the example above.Áüñ/ íçü’0. Õ» Á0 �üÅ02 ¾¼ ø0 �üü0L ¼½ üÉ1J “¾ ”2 �¼˜2  // Drop the sender.ÁŒ°2  drop(sender);ÁÂ2 �üÆ2"  poll.poll(&mut events, None)?;Áé2 �üí2 ÙîìŽ3  match event.token() {Áü¬34 1 PIPE_RECV if event.is_read_closed() => {Áüá38 5 // Detected that the sender was dropped.Áüš4, ) println!("Sender dropped!");ÁôÇ4 ³îtæ4  },Áüõ4  _ => unreachable!(),ÁL–5 ðî, 5 ‚ﬦ5  # unreachable!();Á<¼5 �ï<Ä5 �»ÓàžÓ5 ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw“r›tšËBÿ é\è8 Óàžº·;“rëìüµ9B üú86 3 Set the `Sender` into or out of non-blocking mode.Á|¼9 É  É “rÈÊBÿê Ì9 ê ë$Í9 ½ \Ó9 üÛKa üÂ:J G Execute an I/O operation ensuring that the socket receives more eventsÁü‘;& # if it hits a [`WouldBlock`] error.Á¼; �\Ä; ÒÌÔ; �üÜ;F C This method is required to be called for **all** I/O operations toÁü§ ßã,¬> üìü¶>/ …ä„ê> ª—ìÿ> †çÄ¡? �¹ ¾? �üÆ?* ' let (sender, receiver) = pipe::new()?;Áõ? �üý?+ ( // Wait until the sender is writable...Á­@ �üµ@B ? // Write to the sender using a direct libc call, of course theÁüü@9 6 // `io::Write` implementation would be easier to use.Á¼ºA  let buf = b"hello";ÁôÖA  let n = sender.try_io(|| {ÁüùA3 0 let buf_ptr = &buf as *const _ as *const _;Áü±BQ N let res = unsafe { libc::write(sender.as_raw_fd(), buf_ptr, buf.len()) };Á´‡C  if res != -1 {Áä¢C  Ok(res as usize)Á„ÃC  } else {ÁüØCJ G // If EAGAIN or EWOULDBLOCK is set by libc::write, the closureÁü§D0 - // should return `WouldBlock` error.ÁüÜD+ ( Err(io::Error::last_os_error())ÁLŒE ðîDšE  })?;Áü§E#  eprintln!("write {} bytes", n);ÁÏE �ü×E- * // Wait until the receiver is readable...Á‰F �ü‘FE B // Read from the receiver using a direct libc call, of course theÁüÛF8 5 // `io::Read` implementation would be easier to use.ÁܘG  let mut buf = [0; 512];Áü¸G  let n = receiver.try_io(|| {ÁüÝG3 0 let buf_ptr = &mut buf as *mut _ as *mut _;Áü•HR O let res = unsafe { libc::read(receiver.as_raw_fd(), buf_ptr, buf.len()) };Á´ìH ¸Ü ä‡I ØÜ „¨I þÜ ü½II F // If EAGAIN or EWOULDBLOCK is set by libc::read, the closureÁü‹J0 îÝ üÀJ+ ©Þ LðJ ðîDþJ ìÞ ü‹K"  eprintln!("read {} bytes", n);Ád²K ¿Ã<ÃK �ï<ÏK �»4âK Ê  Ê “rÈüÁýBÿê‚í�îîí ïK êþÆÈü éK þƧý ìK ‹#ÈüÌ¢L �#ÈüÁýl®L ìÈü§ý$ðK œZ\VXÜL ì�ï�ï�ïïì�ýìîL Óàžl"i";“rñòó�žŸóñòü’M‡ D•M Ë Ì  Ë “r Ì Ço¼vßmÈÊBÿð §M ð ñ$¬M œDºM �,×M «ËLíM üßN‰ TâN Í Î  Í “r Î Ço¼vßmÈÊBÿð öN ð ò$ûN œD‰O �,¦O «ËL¼O ü°P? T³P Ï Ð  Ï “r Ð ÇoÈÊBÿð ¾P ð ó$ÃP œDÉP ¬£Q Óàž%$"$;“rõ÷ù‚ ƒ † ÷õùü¿Q4 ,ÂQ Ñ Ò  Ñ “r Ò Ä÷ÊÊBÿô ÈQ ô õ$ÍQ ±ÓÓQ d�R õ�ö�ö�ööõöµýÊÊUÿÂ÷üºRG t½R Ó Ô Õ  Ó “r Ô Œ‰Œ‰�‰ýÂ�‰óö7 Å0ײ÷([OÕ ÊÊBÿô ÌR ô ÷$ÑR bufsÁ$×R d�S ÷�ø�ø�øø÷ø÷í   Œ‰Œ‰�‰ýÂ�‰óö7 Å0ײ÷([OüÒS% ,ÕS Ö  Ö “rÈÊBÿô ÛS ô ù$àS d“T ù�ú�ú�úúùÇ�´¹T Óàž-'*';8× × Ürüþ€‚ ƒ † €üþüÖT4 ,ÙT Ø Ù  Ø Ür Ù Ä÷ÊÊBÿû ßT û ü8$äT ±ÓêT d¦U ü�ý�ý�ýýüý÷í …î üÑUG tÔU Ú Û Ü  Ú Ür Û Œ‰Œ‰�‰ýÂ�‰óö7 Å0ײ÷([OÜ ÊÊBÿû ãU û þ8$èU ´î $îU d´V þ�ÿ�ÿ�ÿÿþÿ÷í –ð üéV% ,ìV Ý  Ý ÜrÈÊBÿû òV û €8$÷V dªW €�������€å„ü˜X \ÐW ÒÌÜW �üàW7 4 The underlying pipe is **not** set to non-blocking.ÁÓàžk*h*;“rƒ®ƒü¿X$ $ÂX ïr“rBÿ‚‚ ƒstdinÁ,ÇX ÌøY Óàžá*Þ*;“r…¥#…ü˜Z* \¢Z “rÿ„„ …Ã&®Z ¼¢[ ÓàžR+O+;“r‡£#‡äÀ[ LÃ[ Þ  Þ “rBÿ† Í[ † ‡$Î[ ̇\ ÓàžÔ+Ñ+;“r‰§#‰ì§\ \ª\ “rBÿˆˆ ‰–…ìþ\ ÓàžB,?,;Ìs‹®‹ü¢] $¥] “rÌsBÿŠŠ ‹ú‚•†¤ö] Óàž³,°,;“r�…$�ü‘^! ,”^ ß  ß “r®L®L§°LÃ&Û#±Lâ¦Û#t4bE™ß BÿŒ š^ Œ �$›^ ìÙ^ Óàžw-t-;“r�®�äý^ $€_ Ìs“rBÿŽŽ �Ã&&ˆl•a Óàžæ-ã-;›t‘’üæaB ü©a8 5 Set the `Receiver` into or out of non-blocking mode.Á|ía ã  ã ›tÈÊBÿ� ýa � ‘$þa ½ \„b üŒta üóbJ ÝÓ üÂc& ²Ô íc �\õc ÒÌ…d �ü�dF ‹Õ üØdL ÜÕ ü©e% ³Ö Óe �üÛe- ðÖ �f �t•f ×â¨f �<°f �»ä¼f ßã,Ýf üìüçf/ …ä„›g ª—ì°g †çÄÒg �¹ ïg �ü÷g* ÀØ ¦h �ü®h+ ‚Ù Þh �üæhB ÅÙ ü­i9 ’Ú ¼ëi ÕÚ ô‡j öÚ üªj3 ŸÛ üâjQ ÝÛ ´¸k ¸Ü äÓk ØÜ „ôk þÜ ü‰lJ ™Ý üØl0 îÝ ü�m+ ©Þ L½m ðîDËm ìÞ üØm# ÿÞ €n �üˆn- ºß ºn �üÂnE ÿß üŒo8 Ïà ÜÉo ‘á üéo ·á üŽp3 âá üÆpR  â ´�q ¸Ü ä¸q ØÜ „Ùq þÜ üîqI §ã ü¼r0 îÝ üñr+ ©Þ L¡s ðîD¯s ìÞ ü¼s" µä dãs ¿Ã<ôs �ï<€t �»4“t ä  ä ›tÈüÁýBÿ�‚“�”“”  t �çæ št øæ �t ‰ç ÌÓt œç lßt ’Èü§ý$¡t œzŠ79<>�u ’�•�•�••’þ”üŸu Óàž'3$3;›t—˜™�žŸ™—˜üÅu‡ DÈu å æ  å ›t æ Ço¼vßmÈÊBÿ– Úu – —$ßu œDíu �,Šv «ËL v ü’w‰ T•w ç è  ç ›t è Ço¼vßmÈÊBÿ– ©w – ˜$®w œD¼w �,Ùw «ËLïw üãx? Tæx é ê  é ›t ê ÇoÈÊBÿ– ñx – ™$öx œDüx ´Öy Óàžà4Ý4;›t›�èé›�üóy7 $öy ë ì  ë ›t ì Ä÷ÊÊBÿš ûy š ›$€z ±Ó†z dÆz ›�œ�œ�œœ›œ÷í  Ä÷üðzM lóz í î ï  í ›t î ü7ü7ý7šÃÿ7óö7 ŽEøD²�<ï ÊÊBÿš �{ š �$†{ ´î $Œ{ dÙ{ ��ž�ž�žž�ž÷í   ü7ü7ý7šÃÿ7óö7 ŽEøD²�<¼‹| Óàž)7&7;8ð ð ät ¢è颠ü©|7 $¬| ñ ò  ñ ät ò Ä÷ÊÊBÿŸ ±| Ÿ  8$¶| ±Ó¼| dü|  �¡�¡�¡¡ ¡÷í «� ü¦}M l©} ó ô õ  ó ät ô ü7ü7ý7šÃÿ7óö7 ŽEøD²�<õ ÊÊBÿŸ ·} Ÿ ¢8$¼} ´î $Â} d�~ ¢�£�£�££¢£÷í ¸‘ ü‰# \Á~ ÒÌÍ~ �üÑ~7 ‚÷ Óàž}9z9;›t¥®¥ü³( $¶ ÷t›tBÿ¤¤ ¥stdoutÁ4» ü¼�# \ô€ ÒÌ€� �ü„�7 ‚÷ Óàž#: :;›t§®§üæ�( $é� ºu›tBÿ¦¦ §stderrÁ4î� ܧƒ Óàžž:›:;›t©§#©ìɃ \̃ ›tBÿ¨¨ ©šŒÌ „ Óàž; ;;›t«£#«äÀ„ LÄ ö  ö ›tBÿª Í„ ª «$΄ ܇… Óàž–;“;;›t­¥#­ü©…, \³… ›tÿ¬¬ ­Ã&¿… ü·† Óàž < <;Ìs¯®¯ü݆# $à† ›tÌsBÿ®® ¯Ÿ ¤Ž´·‡ Óàž<|<;›t±…$±üÔ‡! ,ׇ ÷  ÷ ›t®L®L§°LÃ&Û#±Lâ¦Û#t4bE™÷ Bÿ° ݇ ° ±$Þ‡ üœˆ ÓàžI=F=;›t³®³äˆ $ň Ìs›tBÿ²² ³Ã&�üŸŠB Óàž¼=¹=Å‹ ŒÇ‰ Å› ¬Ú‰ Ū ¬ñ‰ ż ”ˆŠ üƉU ü‰Z ü¹‰e |¢Š ¬ÈÊBÿ ´Ã&²Š ½ \½Š Œ¶8 üÉ7  Sending end of an Unix pipe.Áê7 �üî76 3 See [`new`] for documentation, including examples.ÁÓàžÛ>Ø>´4Á8 “rIê òß{7?¶¬Î8 ,Î8 ¬µµéùÆ|¶“r¸ g¸Æ|Æ|Æ Ç È  Æ “r Ç €g€gŠ‚gê ûcƒg±ÓûcØ«q¢1È¡È †ÓBÿ·«®8 · ¸Æ|œÆ|œá` üò_"  Receiving end of an Unix pipe.Á•` �ü™`6 óŸ ÓàžN@K@µDì` ›t{!Ÿn¥¨ªBº¬û` ,û` ¬¹¹éù¾ˆ·›t¼ g¼¾ˆ¾ˆà á â  à ›t á €g€gŠ‚gê ûcƒg±ÓûcØ«q¢1ȡ⠆ÓBÿ»¬Ù` » ¼¾ˆœ¾ˆü85 Associates readiness events with [`event::Source`]s.Á9�ü=EB `Token` is a wrapper around `usize` and is used as an argument toÁüƒ85 [`Registry::register`] and [`Registry::reregister`].Á¼�üÀ3¢êô�üø0Òàô©ç±üÈ@= [`Registry::register`]: struct.Registry.html#method.registerÁü‰DA [`Registry::reregister`]: struct.Registry.html#method.reregisterÁÎ�lÒ # ExampleÁà�üäMJ Using `Token` to track which socket generated the event. In this example,Áü²EB `HashMap` is used, but usually something like [`slab`] is better.Áø�üü+( [`slab`]: https://crates.io/crates/slabÁ¨�,è\âÐãä¿ßãüÜ/…äüŒ2�Ñü¿3ÍÑüó-* use mio::{Events, Interest, Poll, Token};Áô¡ use mio::net::TcpListener;ÁÀ�¤ÄÚ‰ôÙ use std::io::{self, Read};Áüø" use std::collections::HashMap;Á› �üŸ JG // After this number of sockets is accepted, the server will shutdown.Áüê " const MAX_SOCKETS: usize = 32;Á� �ü‘ NK // Pick a token that will not be used by any other socket and use that oneÁÄà  // for the listener.Áüù (% const LISTENER: Token = Token(1024);Á¢ �ü¦ ! // Used to store the sockets.ÁüÈ %" let mut sockets = HashMap::new();Áî �üò ;8 // This is used to generate a unique token for a socketÁü® " let mut next_socket_index = 0;ÁÑ �ÔÕ  // The `Poll` instanceÁüð íç‘ �œ•  // Tcp listenerÁü© B? let mut listener = TcpListener::bind("127.0.0.1:0".parse()?)?;Áì �äð æèü�KH poll.registry().register(&mut listener, LISTENER, Interest::READABLE)?;ÁÙ�üÝJG // Spawn a thread that will connect a bunch of sockets then close themÁü¨&# let addr = listener.local_addr()?;ÁÜÏÒÔüë  use std::net::TcpStream;ÁŒ�ü�NK // +1 here is to connect an extra socket to signal the socket to closeÁüß%" for _ in 0..(MAX_SOCKETS+1) {Áü…+( // Connect then drop the socketÁü±63 let _ = TcpStream::connect(addr).unwrap();ÁLèðî<ò¢Õú�¤þ // Event storageÁü“1—èÅ�üÉ74 // Read buffer, this will never actually get filledÁÜ� let mut buf = [0; 256];Á��Ô¡ // The main event loopÁT¼öëÔÇ // Wait for eventsÁüâ&Šì‰�ô�Åìü¬!ÈáìÎ LISTENER => {ÁüìIF // Perform operations in a loop until `WouldBlock` isÁü¶# // encountered.ÁÔÚ loop {Áüõ1. match listener.accept() {Áü§41 Ok((mut socket, _)) => {ÁüÜ63 // Shutdown the serverÁü“EB if next_socket_index == MAX_SOCKETS {ÁüÙ2/ return Ok(());ÁüŒ! }Á®�ü²?< // Get the token for the socketÁüòEB let token = Token(next_socket_index);Áü¸74 next_socket_index += 1;Áð�üôB? // Register the new socket w/ pollÁü·b_ poll.registry().register(&mut socket, token, Interest::READABLE)?;Áš�üž30 // Store the socketÁüÒ>; sockets.insert(token, socket);Áì‘ }Áü¯TQ Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => {Áü„NK // Socket is not ready anymore, stop acceptingÁüÓ&# break;Áìú’à ü˜KH e => panic!("err={:?}", e), // Unexpected errorÁÌä }Á¬þµèŒ”ÓèÔ¦ token => {ÁüÁ/, // Always operate in a loopÁÔñÆ» üŒ OL match sockets.get_mut(&token).unwrap().read(&mut buf) {ÁüÜ &# Ok(0) => {Áüƒ!KH // Socket is closed, remove it from the mapÁüÏ!74 sockets.remove(&token);Áü‡"&ïÄ ì®"’à üÌ"HE // Data is not actually sent in this exampleÁü•#41 Ok(_) => unreachable!(),ÁüÊ#T¹Ã üŸ$LI // Socket is not ready anymore, stop readingÁüì$&ïÄ ì“%’à ü±%K¬Å Ìý%€Æ ¬—&µèŒ­&Óèl¿&ÚîLÍ&ðî,×&‚ï<Ý&�ï<å&�»,¼'¼v¡¼€]x‹¶¾¿Õw¼vBÿ4Õw¼vBÿ½½ ¾LÂ'½½Õw ¯ö&¸¼vc�c�c�¹¼vc�¹¼vÆÃc�c�ø  ø ¼v¼vBÿ°ü& Ãc� ‘º¼vÅ gÅ ‘ ‘ù ú û  ù ¼v ú €g€gŠ‚gê ûcƒg±ÓûcØ«q¢1È¡û †ÓBÿıƒ'Ä Å ‘œ ‘K’»¼vK’»¼vÈù±ÈK’K’ü ý  ü ¼v ý ¼vBÿDzŠ'Ç ÈK’î K’»’¼¼vÊÎÊ»’»’»’»’þ  þ ¼vBÿɳ•'É Ê»’ú’½¼v̱²Ìú’ú’ÿ €  ÿ ¼v € ¼v™–BÿË´™'Ë Ìú’î ú’�“¾¼vÎîÎ�“�“� ‚  � ¼v ‚ ¼v™”Bÿ͵¥'Í Î�“î �“x•¿¼vÐühÐx•x•ƒ „  ƒ ¼v „ ­«BÿÏÿÑѶª'ÏþÆ­«x•ƒi­«x• Э«x•ƒx•x•x•„€ü21. Waker allows cross-thread waking of [`Poll`].Ád�ühIF When created it will cause events with [`readable`] readiness and theÁü²IF provided `token` if [`wake`] is called, possibly from another thread.Áü�ô€ç±üŸ>ó‚üÞ+( [`wake`]: struct.Waker.html#method.wakeÁŠ�\ŽÒÌš�üžNK `Waker` events are only guaranteed to be delivered while the `Waker` valueÁlí is alive.Áû�üÿNK Only a single `Waker` can be active per [`Poll`], if multiple threads needÁüÎIF access to the `Waker` it can be shared via for example an `Arc`. WhatÁü˜GD happens if multiple `Waker`s are registered with the same `Poll` isÁ„à unspecified.Áñ�Ôõƒ©��ü”JG On platforms that support kqueue this will use the `EVFILT_USER` eventÁüßNK filter, see [implementation notes of `Poll`] to see what platforms supportÁü®'$ kqueue. On Linux it uses [eventfd].ÁÖ�üÚKH [implementation notes of `Poll`]: struct.Poll.html#implementation-notesÁü¦C@ [eventfd]: https://man7.org/linux/man-pages/man2/eventfd.2.htmlÁê�tî×âý�ü� 1. Wake a [`Poll`] instance from another thread.Á³ �,Ý \× Ðãüž ;8 # fn main() -> Result<(), Box> {Á¤Ú Ú‰äï µ‰¼Œ  use std::sync::Arc;Á¤ �ü¨ *' use mio::{Events, Token, Poll, Waker};ÁÓ �ü× (% const WAKE_TOKEN: Token = Token(10);Á€ �ü„ íçü¥ .+ let mut events = Events::with_capacity(2);ÁÔ �üØ C@ let waker = Arc::new(Waker::new(poll.registry(), WAKE_TOKEN)?);Áœ �ü  GD // We need to keep the Waker alive, so we'll create a clone for theÁôè  // thread we create below.Áü‡ let waker1 = waker.clone();Áü§(% let handle = thread::spawn(move || {ÁüÐ+( // Working hard, or hardly working?Áüü2/ thread::sleep(Duration::from_millis(500));Á¯�ü³85 // Now we'll wake the queue on the other thread.Áüì/, waker1.wake().expect("unable to wake");Á<œ¢Õ¤�ü¨FC // On our current thread we'll poll for events, without a timeout.Áüï"§Í ’�ü–OL // After about 500 milliseconds we should be awoken by the other thread andÁÔæ // get a single event.Áü�  assert!(!events.is_empty());Áü¢41 let waker_event = events.iter().next().unwrap();Áü×'$ assert!(waker_event.is_readable());Áüÿ0- assert_eq!(waker_event.token(), WAKE_TOKEN);Áì° # handle.join().unwrap();Á„ΞŽ<ß�ï<ç�»,‹âwåV†i¹q‚'ÓŒ—,—YÒÒŽqš–ÀâwÕ gÕš–š–… † ‡  … âw † €g€gŠ‚gê ûcƒg±ÓûcØ«q¢1È¡‡ †ÓBÿÔ·øÔ Õš–œš–„Œ´) A readiness event.Á@�üDKH `Event` is a readiness state paired with a [`Token`]. It is returned byÁœ� [`Poll::poll`].Á¤�ü¨?< For more documentation on polling and events, see [`Poll`].Áè�üì3ëêü !¨ëüÂ# [`Token`]: ../struct.Token.htmlÁ,—–x¾rî?!e»Ö׌£,£dÖÖß×�—Á–xÙ†Ù�—�—Š  Š –x–xBÿØ¸ïØ Ù�—œËij  [`Events`] iterator.ÁÌ �üÐ @= This struct is created by the [`iter`] method on [`Events`].Á‘ �ü• " [`Events`]: struct.Events.htmlÁü¸ ,) [`iter`]: struct.Events.html#method.iterÁå �té ×âø �,¢ \œ Ðãäã ßãü€ /…ää° ¢ìäÍ µ‰ê �üî 1—èü  íçÁ �üÅ $›ùê �üî >…î­�ü± ÙîüÒ9ƒï,Œ‚ï„’žŽ<£�ï<«�»$Ö¦ÛÛ�yú™¼PˆfÜÝÛŒå,å|ÚÚÜyTüü|ÚÚÕw»£Â¦ßß�yà gàeg»£»£œ � ž  œ �y � €g€gŠ‚gê ûcƒg±ÓûcØ«q¢1È¡ž †ÓBÿÞ¹¼Þ ঻£œ»£V¥Ã¦ââ�yã†ãKNV¥V¥Ÿ  Ÿ �y�yBÿáºÃá ã¦V¥l¨ Óô*x»Ö Ì »ë Óàž�»ñ лê ø»Õ 0 ø»Ì ; L¬ òs, Ü"äæDerefMutÁD é"äçà ; packet (or the packet has the same size as the buffer).ÁüÜ.+ * Windows returns an `WSAEMSGSIZE` error.Á‹�ü�OL Mio does not change the value (either ok or error) returned by the OS, it'sÁüßQN up to the user to handle this. How to deal with these differences is still upÁü±  for debate, specifically inÁüÑ LI . The best advice we canÁüž >; give is to always call receive with a large enough buffer.ÁÓô*x¼  ¸¼š Ñ �«€¿=\û ª©Êå@Lˆ 誧ÎEL¡ ÃÿùKdä ™ÝÊÝOdò ãÞ�ÏRT€ žßÛ<Þ â ŒŽË¿=\& ªÊå@LV è§d D �ªô*$ ù Ž�Œ»T ý˜Ž‘÷ $Z „$Ž“à <` ¢#Ž”§Ti ®LŽ•á Lu ¤#Ž–ÛL€ ¦#Ž—ù<‹ í#Ž˜ÿ ,” ¡#Ž™ñ´ ¾,Ž›Ïì¹ ‰ŽœÎ:DÕ òŽ�å@Lï 莞ª§È-lö …ŽŸŸ-$Ó ‚Ž¡º-4Ù „Ž¢‹-dá �Ž£à,ü cŽ¥…ƒ Uަ™!Dˆ ºŽ§««D’ <ލ®÷7,œ ½Ž©¯÷7¾Ž©¯D õ æé\L Ì$, ÅÊ”2 Ô+ ü"% ùÌ"ÅÊ! ÌBÅÊA@?"ÌbÅÊa`_.Ì‚ÅÊ�€:)Ì¢ÅÊ¡ ŸF4ÌÂÅÊÁÀ¿Q?ÌâÅÊáàß\® NQ>AÔà 3¬ã %ôå Ì$‰ Å®¤“ ÅÊ”± ¸Ü… ŒÉ œÈ ü°, üƒ[ üúf X|Á ÅÊ”“ ¸Ü… Œ§ ü’' üŽ, ü…7 xÅÊ1¸Ü… /-*'œŠÅÊX¸Ü… VTQN®œÅʸ܅ }{xuÀ,ô ²µ¤§–™ƒ†qt´¹ ü¥, ) A structure representing a socket serverÁÒ �tÖ ×âå �,� \‰ ÐãäÐ ßãüí/ …äü� - í« ôË £¬ äê µ‰‡ �ü‹ F C let mut listener = TcpListener::bind("127.0.0.1:34255".parse()?)?;ÁÒ �üÖ íçü÷ 0 - let mut events = Events::with_capacity(128);Á¨ �ü¬ & # // Register the socket with `Poll`ÁüÓ K H poll.registry().register(&mut listener, Token(0), Interest::READABLE)?;ÁŸ �ü£ > …îâ �üæ 1 . // There may be a socket ready to be acceptedÁ„˜ žŽ<© �ï<± �»\Ä ‡|%¬i4²º=«üÖ ! ,Ö Žªªú‚„ü ‡|­®¯²³´µüò8 ü“J G Convenience method to bind a new TCP listener to the specified addressÁüâ  to receive new connections.Á† �üŽ0 - This function will take the following steps:Áà �üË  1. Create a new TCP socket.Áüï; 8 2. Set the `SO_REUSEADDR` option on the socket on Unix.Áü¯0 - 3. Bind the socket to the specified address.ÁüäM J 4. Calls `listen` on the socket to prepare it to receive new connections.ÁÅÊ”Ä ¸Ü… ŒØ üÃ' ü¿, ü¶7 $ù �÷ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw‡|šËBÿ¬¬ ­Ÿ»$þ ü²: üÛC @ Creates a new `TcpListener` from a standard `net::TcpListener`.Á£ �ü«H E This function is intended to be used to wrap a TCP listener from theÁüøJ G standard library in the Mio equivalent. The conversion assumes nothingÁüÇF C about the underlying listener; it is left up to the user to set itÁÜ’  into non-blocking mode.ÁD¹ ˆ}‡|Bÿ¬¬ ®ê/ôÀü½#; ôÆ  Accepts a new `TcpStream`.Áé �üñ 3 0 This may return an `Err(e)` where `e.kind()` isÁü©!L I `io::ErrorKind::WouldBlock`. This means a stream may be ready at a laterÁüú!I F point and one should wait for an event before calling `accept` again.ÁÈ" �üÐ"H E If an accepted stream is returned, the remote address of the peer isÁÜ�#  returned along with it.Á4Ä# à  à ‡|ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÄ}�÷šËBÿ¬ Ë# ¬ ¯$Ì# <”$ ¯�°�°�°°¯° ˆ}ªµ Uÿ„Æ$ ¯�±�±�±±¯±¤ˆ ùµ UÿüÍ%2 ü’%6 3 Returns the local socket address of this listener.ÁTÔ% Ä  Ä ‡|ûÿBÿ¬ ß% ¬ ²$à% üß'1 ü­&: 7 Sets the value for the `IP_TTL` option on this socket.Áì& �üô&L I This value sets the time-to-live field that is used in every packet sentÁ¬Å'  from this socket.Á<æ' Å  Å ‡|ÈÊBÿ¬ î' ¬ ³$ï' ª>õ' üô)$ ü¾(: 7 Gets the value of the `IP_TTL` option for this socket.Áý( �ü…)B ? For more information about this option, see [`set_ttl`][link].ÁÌ) �ÜÔ)  [link]: #method.set_ttlÁû) Æ  Æ ‡|ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwšËBÿ¬ ÿ) ¬ ´$€* üµ,9 ü¿*: 7 Get the value of the `SO_ERROR` option on this socket.Áþ* �ü†+J G This will retrieve the stored error in the underlying socket, clearingÁüÕ+L I the field in the process. This can be useful for checking errors betweenÁT¦,  calls.ÁT¼, Ç  Ç ‡|ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwřǙș­É™Ê™àË™óG*¤�R{9 šËšËBÿ¬ Ç, ¬ µ$È, üš-" ‡|·¸¹�žŸ¹¸·üÃ-‡ DÆ- È É  È ‡| É Ço¼vßmÈÊBÿ¶ Ø- ¶ ·$Ý- œDë- �,ˆ. «ËLž. ü�/‰ T“/ Ê Ë  Ê ‡| Ë Ço¼vßmÈÊBÿ¶ §/ ¶ ¸$¬/ œDº/ �,×/ «ËLí/ üá0? Tä0 Ì Í  Ì ‡| Í ÇoÈÊBÿ¶ ï0 ¶ ¹$ô0 œDú0 üÔ1 ‡|» g»üú18 ý1 Î Ï Ð  Î ‡| Ï €g€gŠ‚gê ûcƒg±ÓûcØ«q¢1ȡР†ÓBÿº �2 º »$‚2 œ ˆ2 ô”3 Ì$â2 Å®¤è2 ÅÊ”þ2 üá20 üØ2; ‡|½§#½ì¹3 \¼3 ‡|Bÿ¼¼ ½"ÃäÌ4 Ì$š4 Å®¤ 4 ÅÊ”¶4 ü™40 ü�4; ‡|¿£#¿äï4 Lò4 Ñ  Ñ ‡|Bÿ¾ ü4 ¾ ¿$ý4 ôò5 Ì$À5 Å®¤Æ5 ÅÊ”Ü5 ü¿50 ü¶5; ‡|Á¥#ÁüÆ7/ ü—6* ' Converts a `RawFd` to a `TcpListener`.ÁÆ6 �\Î6 ÒÌÞ6 �üæ6@ = The caller is responsible for ensuring that the socket is inÁ´«7  non-blocking mode.Á\Ð7 ‡|ÿÀÀ ÁÃ&Ü7 ü÷8" Ì$Å8 Å®¤Ë8 ÅÊ”á8 üÄ80 ü»8; ÌsîÃü 9* $£9 ‡|ÌsBÿ Ã�‹wÅÌÁ: Ì$�: Å®¤•: ÅÊ”«: üŽ:0 ü…:; ‡|Å…$Åüá:! ,ä: Ò  Ò ‡|®L®L§°LÃ&Û#±Lâ¦Û#t4bE™Ò BÿÄ ê: Ä Å$ë: üå;" Ì$³; Å®¤¹; ÅÊ”Ï; ü²;0 ü©;; ‡|Ç®Çä½= üŽ<* �É ½< �\Å< ÒÌÕ< �üÝ<@ èÉ ´¢= ±Ê $À= Ìs‡|BÿÆÆ ÇÃ&SÇü®H+ ˆ}É®ÉüàH& $ãH ‡|ˆ}BÿÈÈ Éê/DèH Ü bT4 48 �èñ ¾,ËÌÏì$‰ËÎýÂ<"Œ‰ËÏšÃT+ü7ËÐŒ¯$7çËѤ¯,=� ËÒô*$Tù ËÔShutdownÁDZ™DËÕŒ»Tdý˜ËÖ÷ $©„$ËØà <¯¢#ËÙ§T¸®LËÚá LĤ#ËÛÛLϦ#ËÜù<Úí#ËÝÿ ,ã¡#ËÞÎ:D�òËß«-<è ƒËá‹-dñ �Ëâà,ŒcËä™!D“ºËå««D�<Ëæ®÷7,§½Ëç¯÷7¾Ëç¯D <þïòßâÐÓÁÄDI¶N £‘”\›Ì${ÅÊ”�Ôzüq%¦Ì#ÅÊ" ñÌCÅÊB@?μÌcÅÊb`_ÙÇ̃ÅÊ‚€äÒÌ£ÅÊ¢ ŸïÝÌÃÅÊÂÀ¿úèÌãÅÊâàßÔþ÷|ÖÅÊ”¨¸Ü… Œ¼ü§'ü£,üš7ÅÊ1¸Ü… /-*';)ÅÊX¸Ü… VTQNM,„?B14! ¤­ü°IF A non-blocking TCP stream between a local socket and a remote socket.Áú�üþ85 The socket will be closed when the value is dropped.Á·�t»×âÊ�,ô\îÐãüµ.+ # use std::net::{TcpListener, SocketAddr};Áääßã,� üìü‡ /…äü· 5„Šüí /, let listener = TcpListener::bind(address)?;Áü� -í« äË ôääè µ‰… �ü‰ A> let mut stream = TcpStream::connect(listener.local_addr()?)?;ÁË �üÏ íçüð 0å¤ ¡ �ü¥ &«¥ üÌ IF poll.registry().register(&mut stream, Token(0), Interest::WRITABLE)?;Á– �üš >…îÙ �üÝ .+ // The socket might be ready at this pointÁ„ŒžŽ<��ï<¥�»L¸Ä}2œd31¥\éüÈ,ÈËèèÅ‘tìÄ}ëìíîïðñòóôõ÷üó9ü�C@ Create a new TCP stream and issue a non-blocking connect to theÁ´É specified address.Áä�\ìÒÌü�ü„KH The returned `TcpStream` may not be connected (and thus usable), unlikeÁüÔ@= the API found in `std::net::TcpStream`. Because Mio issues aÁü™JG *non-blocking* connect it will not block the thread and instead returnÁüè an unconnected `TcpStream`.ÁŒ�ü”JG Ensuring the returned stream is connected is surprisingly complex whenÁüãIF considering cross-platform support. Doing this properly should followÁü±;8 the steps below, an example implementation can be foundÁüñ€} [here](https://github.com/Thomasdezeeuw/heph/blob/0c4f1ab3eaf08bea1d65776528bfd6114c9f8374/src/net/tcp/stream.rs#L560-L622).Áö�üþ! 1. Call `TcpStream::connect`Áü¤DA 2. Register the returned stream with at least [write interest].Áüí$! 3. Wait for a (writable) event.Áü–C@ 4. Check `TcpStream::take_error`. If it returns an error, thenÁüÞGD something went wrong. If it returns `Ok(None)`, then proceed toÁ|ª step 5.Áü¾JG 5. Check `TcpStream::peer_addr`. If it returns `libc::EINPROGRESS` orÁü�KH `ErrorKind::NotConnected` it means the stream is not yet connected,ÁüÝJG go back to step 3. If it returns an address it means the stream isÁü¬GD connected, go to step 6. If another error is returned somethingÁœø went wrong.Áü�# 6. Now the stream can be used.Á¸�üÀFC This may return a `WouldBlock` in which case the socket connectionÁü‹LI cannot be completed immediately, it usually means there are insufficientÁüÜ! entries in the routing cache.Á‚�üŠ(% [write interest]: Interest::WRITABLEÁÅʔŸ܅ ŒÙüÄ'üÀ,ü·7<ú�÷ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÄ}šËBÿêê 럻$‚ü£$4üƒ ?< Creates a new `TcpStream` from a standard `net::TcpStream`.ÁÇ �üÏ FC This function is intended to be used to wrap a TCP stream from theÁüš!Jæ® üé!GD about the underlying stream; it is left up to the user to set it inÁ´µ"±Ê Ð"�TØ" # NoteÁç"�üï"C@ The TCP stream here will not have `connect` called on it, so itÁü·#HE should already be connected via some other means (be it manually, orÁÔ„$ the standard library).ÁDª$ó~Ä}Bÿêê ìä0?Èüû%1ü­%IF Returns the socket address of the remote peer of this TCP connection.ÁL‚&Ó  Ó Ä}ûÿBÿê Œ&ê í$�&ü¦'2üÙ&HE Returns the socket address of the local half of this TCP connection.ÁT­'Ô  Ô Ä}ûÿBÿê ¸'ê î$¹'ü’*7ü†(B? Shuts down the read, write, or both halves of this connection.ÁÍ(�üÕ(HE This function will cause all pending and future I/O on the specifiedÁü¢)EB portions to return immediately with an appropriate value (see theÁüì)! documentation of `Shutdown`).ÁD™*Õ  Õ Ä}™DšD›DŒ¯œD�D¤¯žDŸDBothÁ•IÒ) «©ÈÊBÿê ¢*ê ï$£*howÁ©*ü‚0:üø*>; Sets the value of the `TCP_NODELAY` option on this socket.Á»+�üÃ+EB If set, this option disables the Nagle algorithm. This means thatÁü�,IF segments are always sent as soon as possible, even if there is only aÁüÛ,IF small amount of data. When not set, data is buffered until there is aÁü©-KH sufficient amount to send out, thereby avoiding the frequent sending ofÁ”ù- small packets.Á�.�\˜.Ǫ̀.�ü°.LI On Windows make sure the stream is connected before calling this method,Áü�/C@ by receiving an (writable) event. Trying to set `nodelay` on anÁüÉ/41 unconnected `TcpStream` is unspecified behavior.Á\‰0Ö  Ö Ä}ÈÊBÿê •0ê ð$–0ÏA<œ0ü¦4)üò0>; Gets the value of the `TCP_NODELAY` option on this socket.Áµ1�ü½1FC For more information about this option, see [`set_nodelay`][link].Áˆ2�ü�2 [link]: #method.set_nodelayÁ´2�\¼2ÒÌÌ2�üÔ2L–þ ü¥3C@ by receiving an (writable) event. Trying to get `nodelay` on anÁüí34¹ÿ <­4×  × Ä}ƒŽ Bÿê µ4ê ñ$¶4üš81üú4:˜¸ ¹5�üÁ5Lè¸ ¬’6½¹ ¬6�\´6ÒÌÄ6�üÌ6L–þ ü�7?< by receiving an (writable) event. Trying to set `ttl` on anÁüá74¹ÿ <¡8Ø  Ø Ä}ÈÊBÿê ©8ê ò$ª8ª>°8ü�<$üù8:ºº ¸9�üÀ9BŠ» ‡:�\�:ÒÌŸ:�ü§:L–þ üø:?< by receiving an (writable) event. Trying to get `ttl` on anÁü¼;4¹ÿ õ;�Üý;á» ¤<Ù  Ù Ä}§½ Bÿê ¨<ê ó$©<üÞ>9üè<:¬½ §=�ü¯=Jü½ üþ=Lо TÏ>¥¿ Tå>Ú  Ú Ä}ÚÀ Bÿê ð>ê ô$ñ>üžB7üÅ?FC Receives data on the socket from the remote address to which it isÁü�@EB connected, without removing that data from the queue. On success,ÁüÚ@'$ returns the number of bytes peeked.Á†A�üŽAJG Successive calls return the same data. This is accomplished by passingÁüÝA<9 `MSG_PEEK` as a flag to the underlying recv system call.Á$¥BÛ Ü  Û Ä} Ü Ä÷ÊÊBÿê ªBê õ$«B±Ó±B<€Dõ�ö�ö�ööõöœ“ÊÊUÿ«� ü®Saü¤DJÝÓ üóD&²Ô žE�\¦EÒ̶E�ü¾EF‹Õ ü‰FLÜÕ üÚF%³Ö „G�üŒG-ðÖ ¾G�tÆG×âÙG�\øGŒòG ```no_runÁä¶Hßã,×HüìüáH/…ä„•Iª—üªI)& #[cfg(any(unix, target_os = "wasi"))]ÁìØI†çœúI #[cfg(windows)]Áü’J*' use std::os::windows::io::AsRawSocket;ÁäÁJôäâJ�üêJ41 let address = "127.0.0.1:8080".parse().unwrap();Áü£K.+ let stream = TcpStream::connect(address)?;ÁÖK�üÞK+( // Wait until the stream is readable...ÁŽL�ü–LC@ // Read from the stream using a direct libc call, of course theÁüÞL8Ïà Ü›M‘á ô»M let n = stream.try_io(|| {ÁüÞM3âá ¤–N #[cfg(unix)]Áü¯NSP let res = unsafe { libc::recv(stream.as_raw_fd(), buf_ptr, buf.len(), 0) };Á¼‡O #[cfg(windows)]Áü£O—” let res = unsafe { libc::recvfrom(stream.as_raw_socket() as usize, buf_ptr, buf.len() as i32, 0, std::ptr::null_mut(), std::ptr::null_mut()) };Á´¿P¸Ü äÚPØÜ „ûPþÜ ü�QIF // If EAGAIN or EWOULDBLOCK is set by libc::recv, the closureÁüÞQ0îÝ ü“R+©Þ LÃRðîDÑRìÞ üÞR"µä d…S¿Ã<–S�ï<¢S�»4µSÝ  Ý Ä}ÈüÁýBÿê‚ø�ùøù ÂSêçæ ¼Søæ ¿S‰ç ÌõSœç l�T ÷Èü§ý$ÃSœ•É79<>¯T÷�ú�ú�úú÷†“¼ÁTÄ}üþèéþüüßT7$âTÞ ß  Þ Ä} ß Ä÷ÊÊBÿû çTû ü$ìT±ÓòT\²Uü�ý�ý�ýýüý‹� «� üÚUMlÝUà á â  à Ä} á ü7ü7ý7šÃÿ7óö7 ŽEøD²�<â ÊÊBÿû ëUû þ$ðU´î $öU\ÃVþ�ÿ�ÿ�ÿÿþÿ‹� ¸‘ ÜóV8ã ã ù}�ƒèé�ƒü•W7$˜Wä å  ä ù} å Ä÷ÊÊBÿ€ �W€ �8$¢W±Ó¨W\èW��‚�‚�‚‚�‚‹� «� ü�XMl“Xæ ç è  æ ù} ç ü7ü7ý7šÃÿ7óö7 ŽEøD²�<è ÊÊBÿ€ ¡X€ ƒ8$¦X´î $¬X\ùXƒ�„�„�„„ƒ„‹� ¸‘ Ä©YÄ}†ˆŠ‚ ƒ † †ŠˆüÈY4,ËYé ê  é Ä} ê Ä÷ÊÊBÿ… ÑY… †$ÖY±ÓÜY\˜Z†�‡�‡�‡‡†‡‹� …î üÁZGtÄZë ì í  ë Ä} ì Œ‰Œ‰�‰ýÂ�‰óö7 Å0ײ÷([Oí ÊÊBÿ… ÓZ… ˆ$ØZ´î $ÞZ\¤[ˆ�‰�‰�‰‰ˆ‰‹� –ð ü×[%,Ú[î  î Ä}ÈÊBÿ… à[… Š$å[\˜\Š�‹�‹�‹‹ŠØ–ä¼\8ï ï ù}��‘‚ ƒ † ‘��üß\4,â\ð ñ  ð ù} ñ Ä÷ÊÊBÿŒ è\Œ �8$í\±Óó\\¯]��Ž�Ž�ŽŽ�Ž‹� …î üØ]GtÛ]ò ó ô  ò ù} ó Œ‰Œ‰�‰ýÂ�‰óö7 Å0ײ÷([Oô ÊÊBÿŒ ê]Œ �8$ï]´î $õ]\»^����������‹� –ð üî^%,ñ^õ  õ ù}ÈÊBÿŒ ÷^Œ ‘8$ü^\¯_‘�’�’�’’‘Ç™üÓ_ Ä}”•–�žŸ•–”üú_‡Dý_ö ÷  ö Ä} ÷ Ço¼vßmÈÊBÿ“ �`“ ”$”`œD¢`�,¿`«ËLÕ`üÇa‰TÊaø ù  ø Ä} ù Ço¼vßmÈÊBÿ“ Þa“ •$ãaœDña�,Žb«ËL¤bü˜c?T›cú û  ú Ä} û ÇoÈÊBÿ“ ¦c“ –$«cœD±cì‹dÄ}˜ g˜ü¯d8²dü ý þ  ü Ä} ý €g€gŠ‚gê ûcƒg±ÓûcØ«q¢1È¡þ †ÓBÿ— ¶d— ˜$·dœ ½däÉeÌ$—eÅ®¤�eÅÊ”³eü–e0ü�e;Ä}š§#šììe\ïeÄ}Bÿ™™ šÐÎÔÿfÌ$ÍfÅ®¤ÓfÅÊ”éfüÌf0üÃf;Ä}œ£#œä gL£gÿ  ÿ Ä}Bÿ› ­g› œ$®gä£hÌ$ñgÅ®¤÷gÅÊ”�hüðg0üçg;Ä}ž¥#žüói-üÆh(% Converts a `RawFd` to a `TcpStream`.Áóh�\ûhÒÌ‹i�ü“i@èÉ ´Øi±Ê \ýiÄ}ÿ�� žÃ&‰jü k Ì$îjÅ®¤ôjÅÊ”Šküíj0üäj;Ìs ® üÇk&$ÊkÄ}ÌsBÿŸŸ  �¢ѼâlÌ$°lÅ®¤¶lÅÊ”Ìlü¯l0ü¦l;Ä}¢…$¢ü€m!,ƒm€  € Ä}®L®L§°LÃ&Û#±Lâ¦Û#t4bE™€ Bÿ¡ ‰m¡ ¢$Šmü„n Ì$ÒmÅ®¤ØmÅÊ”îmüÑm0üÈm;Ä}¤®¤äØoü«n(˵ Øn�\ànÒÌðn�üøn@èÉ ´½o±Ê $ÛoÌsÄ}Bÿ££ ¤Ã&×Òü«z'ó~¦®¦üÙz"$ÜzÄ}ó~Bÿ¥¥ ¦ä04áz¼H =QLï æQéQÖQÙQ<Í ÅÊ”£ ¸Ü… Œ· ü¢ 'üž ,ü• 7Ñ ŒÃ¼ôDƒ¨—«­ÙôD�¶—«®Œ»T—ý˜«¯÷ $Ü„$«±à <â¢#«²§Të®L«³á L÷¤#«´ÛL‚¦#«µù<�í#«¶ÿ ,–¡#«·ñ¶¾,«¹Ï컉«ºô*¿ù «»Î:DÜò«¼à,òc«¾…ùU«¿™!Dþº«À««Dˆ<«Á®÷7,’½«Â¯÷7¾«Â¯Dø¸»§ª–™\ÎÌ$®ÅÊ”´Ô­ü¤%­Ì&ÅÊ$" ʸÌFÅÊDB@ÕÃÌfÅÊdb`àÎ̆ÅÊ„‚€ëÙ̦Åʤ¢ öäÌÆÅÊÄÂÀïÌæÅÊäâà °þîñßâÔÊÔ,êÆÉ¸»ª­—š…ˆ¤¡ü›$! A User Datagram Protocol socket.ÁÀ�üÄPM This is an implementation of a bound UDP socket. This supports both IPv4 andÁü• PM IPv6 addresses, and there is no corresponding notion of a server because UDPÁÜæ  is a datagram protocol.Á‚ �t† ×â• �,Ï \É ÐãäÅ ßã,â üìüè /…优  // An Echo program:Áü° ! // SENDER -> sends a message.ÁüÒ 96 // ECHOER -> listens and prints the message received.ÁŒ �ä�  use mio::net::UdpSocket;Áü­ -í« äÛ µ‰ø �üü # const SENDER: Token = Token(0);Áü # const ECHOER: Token = Token(1);ÁÄ�üÈ_\ // This operation will fail if the address is in use, so we select different ports for eachÁt¨ // socket.Áü·EB let mut sender_socket = UdpSocket::bind("127.0.0.1:0".parse()?)?;ÁüýEB let mut echoer_socket = UdpSocket::bind("127.0.0.1:0".parse()?)?;ÁÃ�üÇ`] // If we do not use connect here, SENDER and ECHOER would need to call send_to and recv_fromÁ¤¨ // respectively.Áü½85 sender_socket.connect(echoer_socket.local_addr()?)?;Áö�üúb_ // We need a Poll to check if SENDER is ready to be written into, and if ECHOER is ready to beÁŒÝ // read from.Áüï íç��ü”^[ // We register our sockets here so that we can check if they are ready to be written/read.ÁüóNK poll.registry().register(&mut sender_socket, SENDER, Interest::WRITABLE)?;ÁüÂNK poll.registry().register(&mut echoer_socket, ECHOER, Interest::READABLE)?;Á‘�ì• let msg_to_send = [9; 9];Áä³ let mut buffer = [0; 9];ÁÐ�üÔ0å¤ T…öëü�B‡ßüÓ$†àüø!Èáüš:7 // Our SENDER is ready to be written into.ÁÜÕ SENDER => {ÁüñGD let bytes_sent = sender_socket.send(&msg_to_send)?;Áü¹.+ assert_eq!(bytes_sent, 9);ÁüèQN println!("sent {:?} -> {:?} bytes", msg_to_send, bytes_sent);Á”º§Ç üÍ74 // Our ECHOER is ready to be read from.ÁÜ… ECHOER => {Áü¡DA let num_recv = echoer_socket.recv(&mut buffer)?;ÁüæDA println!("echo {:?} -> {:?}", buffer, num_recv);Áü«$! buffer = [0; 9];ÁüÐGD # _ = buffer; // Silence unused assignment warning.Áü˜$! # return Ok(());ÁŒ½ÓèüÏ# _ => unreachable!()ÁlóÚîL�ðî,‹‚ï<‘�ï<™�»L¬¯}šTÌIÄü¼,¼«ÃĄ̃tà¯ÆÇÈÉÊÌÎÐÒÔÖרÙÚÛÜÝÞßàáâãäåæçüÁ%6üõ0- Creates a UDP socket from the given address.Áª�t²×âÅ�,ƒ\ýÐãä� ßã,¢ üìü¬ /…ääà ’Ç �!�ü‰!*' // We must bind it to an open address.Áü¸!@= let socket = match UdpSocket::bind("127.0.0.1:0".parse()?) {Áüý!%" Ok(new_socket) => new_socket,Á´§" Err(fail) => {ÁüÂ"UR // We panic! here, but you could try to bind it again on another address.Áüœ#85 panic!("Failed to bind socket. {:?}", fail);ÁLÙ#ðî4ç#Þüò#�üú#WT // Our socket was created, but we should not use it before checking it's readiness.ÁüÖ$:7 # drop(socket); // Silence unused variable warning.Á|•% # Ok(())Á<©%�ï<µ%�»$È%�÷ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òw¯šËBÿÅÅ ÆŸ»$Í%üˆ)4ü»&?< Creates a new `UdpSocket` from a standard `net::UdpSocket`.Áÿ&�ü‡'FC This function is intended to be used to wrap a UDP socket from theÁüÒ'Jæ® ü¡(GD about the underlying socket; it is left up to the user to set it inÁ´í(±Ê D�)°€¯BÿÅÅ Ç’¨ÆÓü 12ü’*A> Returns the socket address that this socket was created from.ÁØ*�tà*×âó*�,¥-\Ÿ-ÐãäÚ.ßã,û.üìü…//…ää¹/’Ç Ú/�üâ/&# let addr = "127.0.0.1:0".parse()?;Áü�0(% let socket = UdpSocket::bind(addr)?;Áüº052 assert_eq!(socket.local_addr()?.ip(), addr.ip());Á|ô0½ß <ˆ1�ï<”1�»T§1�  � ¯ûÿBÿÅ ²1Å È$³1üÍ71ü€2OL Returns the socket address of the remote peer this socket was connected to.ÁÔ2�tÜ2×âï2�,­3\§3Ðãä«4ßã,Ì4üìüÖ4/…ääŠ5’Ç «5�ü³5&œå üÞ5/, let peer_addr = "127.0.0.1:11100".parse()?;Áü’6(Ìå ü¿6 socket.connect(peer_addr)?;Áüã696 assert_eq!(socket.peer_addr()?.ip(), peer_addr.ip());Á|¡7½ß <µ7�ï<Á7�»LÔ7‚  ‚ ¯ûÿBÿÅ Þ7Å É$ß7üÇ>Jü«8JG Sends data on the socket to the given address. On success, returns theÁäú8 number of bytes written.Á›9�ü£9IF Address type can be any implementor of `ToSocketAddrs` trait. See itsÁüñ9(% documentation for concrete examples.Áž:�t¦:×â¹:�lÁ: ```no_runÁäÓ:ßãüô:/…ää¨;’Ç É;�üÑ;:7 let socket = UdpSocket::bind("127.0.0.1:0".parse()?)?;Á�<�ü˜üì|›>½ß <¯>�ï<»>�»<Î>ƒ „  ƒ ¯ „ Ä÷�÷ÊÊBÿÅ Ö>Å Ê$×>±ÓÝ>´4é><­?Ê�Ë�Ë�ËËÊ˰ªÊÊUÿÂ÷ �÷üãHJüÜ?JG Receives data from the socket. On success, returns the number of bytesÁü«@30 read and the address from whence the data came.Áã@�\ë@ÒÌû@�üƒAKH On Windows, if the data is larger than the buffer specified, the bufferÁüÓANK is filled with the first part of the data, and recv_from returns the errorÁü¦B0- WSAEMSGSIZE(10040). The excess data is lost.ÁüÛBC@ Make sure to always use a sufficiently large buffer to hold theÁü£CDA maximum UDP packet size, which can be up to 65536 bytes in size.ÁìC�tôC×â‡D�l�Dõí ä¡Dßã,ÂDüìüÌD/…ää€E’Ç ¡E�ü©E:Àî èE�üðEHE // We must check if the socket is readable before calling recv_from,Áü½F/àï ñF�ÌùF let mut buf = [0; 9];Áü—G<9 let (num_recv, from_addr) = socket.recv_from(&mut buf)?;ÁüØGPM println!("Received {:?} -> {:?} bytes from {:?}", buf, num_recv, from_addr);Á,­Hüì|·H½ß <ËH�ï<×H�»LêH… †  … ¯ † Ä÷ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÕw�÷šËBÿÅ ôHÅ Ì$õH±ÓûH<ÉIÌ�Í�Í�ÍÍÌͰª•ý Uÿ«� ü«SJüòILI Receives data from the socket, without removing it from the input queue.ÁüÃJLI On success, returns the number of bytes read and the address from whenceÁ””K the data came.Á«K�\³KÒÌÃK�üËKKñô ü›LNK is filled with the first part of the data, and peek_from returns the errorÁüîL0žö ü£MCØö üëMD¥÷ ´N�t¼N×âÏN�l×Nõí äéNßã,ŠOüìü”O/…ääÈO’Ç éO�üñO:Àî °P�ü¸PH€ù ü…Q/àï ¹Q�ÌÁQëù üßQ<9 let (num_recv, from_addr) = socket.peek_from(&mut buf)?;Áü RPÔú ,õRüì|ÿR½ß <“S�ï<ŸS�»L²S‡ ˆ  ‡ ¯ ˆ Ä÷•ý BÿÅ ¼SÅ Î$½S±ÓÃS<‘TÎ�Ï�Ï�ÏÏÎÏìþ «� üÃU3üºTWT Sends data on the socket to the address previously bound via connect(). On success,Áü–U(% returns the number of bytes written.Á$ÊU‰ Š  ‰ ¯ Š Ä÷ÊÊBÿÅ ÏUÅ Ð$ÐU±ÓÖU<’VÐ�Ñ�Ñ�ÑÑÐÑ’ô …î ü·Z7ü¶VVS Receives data from the socket previously bound with connect(). On success, returnsÁì‘W the number of bytes read.Á³W�\»WÒÌËW�üÓWKñô ü£XIF is filled with the first part of the data, and recv returns the errorÁüñX0žö ü¦YCØö üîYD¥÷ $¾Z‹ Œ  ‹ ¯ Œ Ä÷ÊÊBÿÅ ÃZÅ Ò$ÄZ±ÓÊZ<Š[Ò�Ó�Ó�ÓÓÒÓ’ô «� ü¹_7ü®[L�þ üÿ[1. On success, returns the number of bytes read.Áµ\�\½\ÒÌÍ\�üÕ\Kñô ü¥]IF is filled with the first part of the data, and peek returns the errorÁüó]0žö ü¨^CØö üð^D¥÷ $À_� Ž  � ¯ Ž Ä÷ÊÊBÿÅ Å_Å Ô$Æ_±ÓÌ_<Œ`Ô�Õ�Õ�ÕÕÔÕ’ô «� ü«c9ü°`HE Connects the UDP socket setting the default destination for `send()`Áüý`LI and limiting packets that are read via `recv` from the address specifiedÁtÎa in `addr`.Ááa�üéaFŒì ü´bLÜì ü…c!²í <²c�  � ¯�÷ÈÊBÿÅ ºcÅ Ö$»cŸ»$Ácü·k7ü“d@= Sets the value of the `SO_BROADCAST` option for this socket.ÁØd�üàdGD When enabled, this socket is allowed to send packets to a broadcastÁd¬e address.Á½e�tÅe×âØe�,–f\�fÐãä”gßã,µgüìü¿g/…äüóg-* # // WASI does not yet support broadcast.Áü¥h3ÍÑäÝh’Ç þh�ü†iDA let broadcast_socket = UdpSocket::bind("127.0.0.1:0".parse()?)?;ÁüÏi/, if broadcast_socket.broadcast()? == false {Áüƒj.+ broadcast_socket.set_broadcast(true)?;Á,¶j‚ïÀj�üÈj41 assert_eq!(broadcast_socket.broadcast()?, true);Á,�küì|‹k½ß <Ÿk�ï<«k�»l¾k�  � ¯ÈÊBÿÅ ÌkÅ ×$ÍkÙ Óküór+ü¡l@= Gets the value of the `SO_BROADCAST` option for this socket.Áæl�üîl/, For more information about this option, seeÁä¢m [`set_broadcast`][link].ÁÃm�üËm! [link]: #method.set_broadcastÁñm�tùm×âŒn�,Ên\ÄnÐãäÈoßã,éoüìüóo/…äü§p-«” üÙp3ÍÑä‘q’Ç ²q�üºqD‰• üƒr52 assert_eq!(broadcast_socket.broadcast()?, false);Á,½rüì|Çr½ß <Ûr�ï<çr�»Lúr‘  ‘ ¯ƒŽ BÿÅ „sÅ Ø$…sü¬u?üËsEB Sets the value of the `IP_MULTICAST_LOOP` option for this socket.Á•t�ü�tJG If enabled, multicast packets will be looped back to the local socket.Áüìt;8 Note that this may not have any affect on IPv6 sockets.Á¬³u’  ’ ¯ÈÊBÿÅ ÉuÅ Ù$ÊuÙ Ðuü‹x3ü¦vEB Gets the value of the `IP_MULTICAST_LOOP` option for this socket.Áðv�üøv/ˆ™ ü¬w$! [`set_multicast_loop_v4`][link].ÁÕw�üÝw)& [link]: #method.set_multicast_loop_v4ÁŒ’x“  “ ¯ƒŽ BÿÅ ¤xÅ Ú$¥xüé{>üóxDA Sets the value of the `IP_MULTICAST_TTL` option for this socket.Á¼y�üÄyFC Indicates the time-to-live value of outgoing multicast packets forÁü�zJG this socket. The default value is 1 which means that multicast packetsÁüÞz>; don't leave the local network unless explicitly requested.Á¡{�ü©{;µž ¤ð{”  ” ¯ÈÊBÿÅ …|Å Û$†|ª>Œ|üÄ~1üâ|DA Gets the value of the `IP_MULTICAST_TTL` option for this socket.Á«}�ü³}/ˆ™ üç}# [`set_multicast_ttl_v4`][link].Á�~�ü—~(% [link]: #method.set_multicast_ttl_v4Á„Ë~•  • ¯§½ BÿÅ Ü~Å Ü$Ý~üŽ�?ü©GD Sets the value of the `IPV6_MULTICAST_LOOP` option for this socket.Áõ�üýLI Controls whether this socket sees the multicast packets it sends itself.Áü΀;8 Note that this may not have any affect on IPv4 sockets.Á¬•�–  – ¯ÈÊBÿÅ «�Å Ý$¬�Ù ²�üïƒ3üˆ‚GD Gets the value of the `IPV6_MULTICAST_LOOP` option for this socket.ÁÔ‚�üÜ‚/ˆ™ ü�ƒ$! [`set_multicast_loop_v6`][link].Á¹ƒ�üÁƒ)& [link]: #method.set_multicast_loop_v6ÁŒöƒ—  — ¯ƒŽ BÿÅ ˆ„Å Þ$‰„üÚŠ1üׄ:˜¸ –…�üž…Lè¸ ¬ï…½¹ ‰†�t‘†×⤆�,â†\܆Ðãäà‡ßã,�ˆüìü‹ˆ/…ä俈’Ç àˆ�üèˆ:Àî 䧉 if socket.ttl()? < 255 {Áìȉ socket.set_ttl(255)?;Á,ꉂïô‰�üü‰# assert_eq!(socket.ttl()?, 255);Á,¤Šüì|®Š½ß <Š�ï<Ί�»<ኘ  ˜ ¯ÈÊBÿÅ éŠÅ ß$ꊪ>ðŠü‘‘$ü¹‹:ºº ø‹�ü€ŒBŠ» ÇŒ�ÜόỠïŒ�t÷Œ×âŠ��,È�\Â�ÐãäÆŽßã,çŽüìüñŽ/…ää¥�’Ç Æ��üÎ�:Àî Ì�� socket.set_ttl(255)?;Á«��ü³�#©¯ ,Û�üì|å�½ß <ù��ï<…‘�»˜‘™  ™ ¯§½ BÿÅ œ‘Å à$�‘ü´•]üÜ‘:7 Executes an operation of the `IP_ADD_MEMBERSHIP` type.Á›’�ü£’JG This function specifies a new multicast group for this socket to join.Áüò’IF The address must be a valid multicast address, and `interface` is theÁüÀ“HE address of the local interface with which the system should join theÁü�”FC multicast group. If it's equal to `INADDR_ANY` then an appropriateÁüØ”&# interface is chosen by the system.ÁŒ»•š › œ  š ¯ › ¨—¨—¼ô©—octetsÁôTSŵ{» œ ž¹ ÈÊBÿŠ͕Šá$Ε multiaddrÁLÔ• interfaceÁLê•üÀ™WüÚ–<9 Executes an operation of the `IPV6_ADD_MEMBERSHIP` type.Á›—�ü£—Jì´ üò—IÁµ üÀ˜JG index of the interface to join/leave (or 0 to indicate any interface).ÁŒÇ™� ž  � ¯ ž ¶—¶—Ùô·—µ¸ ôTcÇ,3@üÈÊBÿŠٙŠâ$Ú™й Là™œ¹ Lö™üäœ^üàš;8 Executes an operation of the `IP_DROP_MEMBERSHIP` type.Á ›�ü¨›/ˆ™ üÜ›  [`join_multicast_v4`][link].Á�œ�ü‰œ%" [link]: #method.join_multicast_v4Á”뜟   ¡  Ÿ ¯   ž¹ ¡ ž¹ ÈÊBÿÅ þœÅ ã$ÿœй L…�œ¹ L›�ü’ XüŒž=: Executes an operation of the `IPV6_DROP_MEMBERSHIP` type.ÁΞ�üÖž/ˆ™ üŠŸ  [`join_multicast_v6`][link].Á¯Ÿ�ü·Ÿ%" [link]: #method.join_multicast_v6Á”™ ¢ £  ¢ ¯ £ ´¼ ÈÊBÿÅ ¬ Å ä$­ й L³ œ¹ LÉ ü§¢)ü´¡=: Get the value of the `IPV6_V6ONLY` option on this socket.Á<®¢¤  ¤ ¯ƒŽ BÿÅ ¶¢Å å$·¢üû¤9ü…£:¬½ Ä£�üÌ£Jü½ ü›¤Lо T줥¿ T‚¥¥  ¥ ¯ÚÀ BÿÅ �¥Å æ$Ž¥üã´aüâ¥JÝÓ ü±¦&²Ô ܦ�\ä¦ÒÌô¦�üü¦F‹Õ üǧLÜÕ ü˜¨%³Ö ¨�üʨ-ðÖ ü¨�t„©×â—©�\¶©Œ°©Ø� äô©ßã,•ªüìüŸª/…ä„Óªª—üèª)£� ì–«†çœ¸«â� üЫ*ÿ� äÿ«’Ç  ¬�ü¨¬4Ì‘ üá¬*' let dgram = UdpSocket::bind(address)?;Á�­�ü˜­*' // Wait until the dgram is readable...ÁÇ­�üÏ­B? // Read from the dgram using a direct libc call, of course theÁü–®8Ïà ÜÓ®‘á ìó® let n = dgram.try_io(|| {Áü•¯3âá ¤Í¯«” üæ¯RO let res = unsafe { libc::recv(dgram.as_raw_fd(), buf_ptr, buf.len(), 0) };Á¼½°¥• üÙ°–“ let res = unsafe { libc::recvfrom(dgram.as_raw_socket() as usize, buf_ptr, buf.len() as i32, 0, std::ptr::null_mut(), std::ptr::null_mut()) };Á´ô±¸Ü ä�²ØÜ „°²þÜ üŲI�— ü“³0îÝ üȳ+©Þ Lø³ðîD†´ìÞ ü“´"µä dº´¿Ã<Ë´�ï<×´�»4ê´¦  ¦ ¯ÈüÁýBÿÅ‚è�éèé ÷´Åçæ ñ´øæ ô´‰ç ̪µœç l¶µ çÈü§ý$ø´œ/Õ<>@Bäµç�ê�ê�êê皪üöµ ¯ìíî�žŸîìíü�¶‡D ¶§ ¨  § ¯ ¨ Ço¼vßmÈÊBÿë ²¶ë ì$·¶œDŶ�,â¶«ËLø¶üê·‰Tí·© ª  © ¯ ª Ço¼vßmÈÊBÿë �¸ë í$†¸œD”¸�,±¸«ËLǸü»¹?T¾¹« ¬  « ¯ ¬ ÇoÈÊBÿë ɹë î$ιœDÔ¹쮺¯ð gðüÒº8Õº­ ® ¯  ­ ¯ ® €g€gŠ‚gê ûcƒg±ÓûcØ«q¢1È¡¯ †ÓBÿï Ùºï ð$Úºœ àºäì»Ì$º»Å®¤À»Åʔֻü¹»0ü°»;¯ò§#òì�¼\’¼¯Bÿññ òŸ×Ô¢½Ì$ð¼Å®¤ö¼ÅÊ”Œ½üï¼0üæ¼;¯ô£#ôäýLƽ°  ° ¯Bÿó нó ô$ѽ䯾Ì$”¾Å®¤š¾ÅÊ”°¾ü“¾0üо;¯ö¥#öü–À-üé¾(% Converts a `RawFd` to a `UdpSocket`.Á–¿�\ž¿ÒÌ®¿�ü¶¿@èÉ ´û¿±Ê \ À¯ÿõõ öÃ&¬ÀüÃÁ Ì$‘ÁÅ®¤—ÁÅÊ”­Áü�Á0ü‡Á;Ìsø®øüêÁ&$íÁ¯ÌsBÿ÷÷ øó³èÙ¼…ÃÌ$ÓÂÅ®¤ÙÂÅÊ”ïÂüÒÂ0üÉÂ;¯ú…$úü£Ã!,¦Ã±  ± ¯®L®L§°LÃ&Û#±Lâ¦Û#t4bE™± Bÿù ¬Ãù ú$­Ãü§Ä Ì$õÃÅ®¤ûÃÅÊ”‘ÄüôÃ0üëÃ;¯ü®üäûÅüÎÄ( × ûÄ�\ƒÅÒÌ“Å�ü›Å@èÉ ´àÅ±Ê $þÅÌs¯Bÿûû üÃ&ÄÛüÎÐ'°€þ®þüüÐ"$ÿЯ°€Bÿýý þ’¨4„Ѥ– ÅÊ”ä ¸Ü… Œø üã 'üß ,üÖ 7å¢<º Ì$³ d­ ¾ Œ�Ë‚ùKd&!™ÊÝOd[!ã�ÏRTŒ!žÛd!D!€™ÎÑ D™D�‚÷ $*„$�„à <0¢#�…§T9®L�†á LE¤#�‡ÛLP¦#�ˆù<[í#�‰ÿ ,d¡#�Šô*$…æE�ŒŒ»T‹ÚK��Û• $§ù'�Žñ·¾,��Ï켉�‘Î:DØò�’à,îc�”…õU�•™!Dúº�–««D„<�—®÷7,޽�˜¯÷7¾�˜¯”¬\ž¡�“‚…twfiX[JM”p?/2|œ#±ÔÆú,æëíÛÝËͶ¸¢¤¼³Ü— A Unix datagram socket.Ád¾ì€ˆÃhµÉUšüÑ",Ñ�™™ÉÆŒøì€œžŸ ¢£¥¦§©«®°±²üÐ@ü�;8 Creates a Unix datagram socket bound to the given path.Á$×͹ÑÁBÿ›Œ��›þÆ͹ Ü£͹ù'ù'Û• ú'èÒ%uÂHnìŽ M\ß œ͹ª ²àSUüÈBüúIF Creates a new `UnixDatagram` bound to the specified socket `address`.ÁLϲ  ² ‚¼ÑÁBÿ› ⛈ÀŸ<Ùü» :üãEB Creates a new `UnixDatagram` from a standard `net::UnixDatagram`.Á­�üµIF This function is intended to be used to wrap a Unix datagram from theÁüƒJæ® üÒIF about the underlying datagram; it is left up to the user to set it inÁ´  ±Ê D Í�ì€Bÿ›› Ÿ’¨Ãâü€ @üÎ 1. Connects the socket to the specified address.Á„ �üŒ FŒì ü× $! cannot be completed immediately.Á<‡ ³  ³ ì€͹ÈÊBÿ›Œ¡¡ Ÿ ›Œç � �ç \’   ͹$  ª ×ã#%ü¹ ,üï EB Creates a Unix Datagram socket which is not bound to any address.Á<À ÑÁBÿ›› ¢üê9üµ0- Create an unnamed pair of connected sockets.Á$ñÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´Òwì€ì€šËBÿ›› £¤Í£�¤�¤�¤¤£¤°• Áð Uÿü¤2üø'$ Returns the address of this socket.ÁT«´  ´ 쀛ÃBÿ› ¶› ¥$·üÿ1ü„.+ Returns the address of this socket's peer.Á·�ü¿;8 The `connect` method will connect the socket to a peer.ÁL†µ  µ 쀛ÃBÿ› �› ¦$‘üôJüÝ" Receives data from the socket.Á„�üŒEB On success, returns the number of bytes read and the address fromÁÌÖ whence the data came.ÁLû¶ ·  ¶ ì€ · Ä÷ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwÕw‚¼šËBÿ› …› §$†±ÓŒ<Ú§�¨�¨�¨¨§¨¾Ê—ö Uÿ«� üè7üƒ"ºó ª�ü²1ˆŒ $ï¸ ¹  ¸ ì€ ¹ Ä÷ÊÊBÿ› ô› ©$õ±Óû<»©�ª�ª�ªª©ª¹Ê«� üÛOüß63 Sends data on the socket to the specified address.Áš�ü¢41 On success, returns the number of bytes written.Á<⺠»  º ì€ » Ä÷͹ÊÊBÿ›Œ¬¬ ú›Œç ê�ç \í «͹$û±ÓŠåª ”å+-<Æ«�­�­�­­«¬Êü‹3üó2/ Sends data on the socket to the socket's peer.Áª�ü²HE The peer address may be set by the `connect` method, and this methodÁüÿFC will return an error if the socket has not already been connected.ÁÊ�üÒ4Îù $’¼ ½  ¼ ì€ ½ Ä÷ÊÊBÿ› —› ®$˜±Óž<Ú®�¯�¯�¯¯®¯¹Ê…î ü²9üþ/, Returns the value of the `SO_ERROR` option.ÁT¹¾  ¾ ì€ÚÀ Bÿ› Ä› °$Åüª 7ü™A> Shut down the read, write, or both halves of this connection.Áß�üçDA This function will cause all pending and future I/O calls on theÁü°FC specified portions to immediately return with an appropriate valueÁüû*' (see the documentation of `Shutdown`).ÁD± ¿  ¿ 쀯ú ÈÊBÿ› º › ±$» Ÿú Á ü¡3aü�!JÝÓ üß!&²Ô Š"�\’"ÒÌ¢"�üª"F‹Õ üõ"LÜÕ üÆ#%³Ö ð#�üø#-ðÖ ª$�t²$×âÅ$�,é$\ã$ÐãäË%ßã,ì%üìüö%/…䄪&ª—ì¿&†çüá& use mio::net::UnixDatagram;Á…'�ü�'1. let (dgram1, dgram2) = UnixDatagram::pair()?;ÁÃ'�üË'*' // Wait until the dgram is writable...Áú'�ü‚(A> // Write to the dgram using a direct libc call, of course theÁüÈ(9’Ú ¼†)ÕÚ ô¢) let n = dgram1.try_io(|| {ÁüÅ)3ŸÛ üý)SP let res = unsafe { libc::send(dgram1.as_raw_fd(), buf_ptr, buf.len(), 0) };Á´Õ*¸Ü äð*ØÜ „‘+þÜ ü¦+IF // If EAGAIN or EWOULDBLOCK is set by libc::send, the closureÁüô+0îÝ ü©,+©Þ LÙ,ðîDç,ìÞ üô,#ÿÞ œ-�ü¤-*ÂÇ Ó-�üÛ-B„È ü¢.8Ïà Üß.‘á ôÿ. let n = dgram2.try_io(|| {Áü¢/3âá üÚ/SP let res = unsafe { libc::recv(dgram2.as_raw_fd(), buf_ptr, buf.len(), 0) };Á´²0¸Ü äÍ0ØÜ „î0þÜ üƒ1I�— üÑ10îÝ ü†2+©Þ L¶2ðîDÄ2ìÞ üÑ2"µä dø2¿Ã<‰3�ï<•3�»4¨3À  À ì€ÈüÁýBÿ›‚³�´´³ µ3›çæ ¯3øæ ²3‰ç Ìè3œç lô3 ²Èü§ý$¶3œÎç79<>¢4²�µ�µ�µµ²ÈÏü´4#쀷¸¹�žŸ¸¹·üÞ4‡Dá4Á   Á ì€  Ço¼vßmÈÊBÿ¶ ó4¶ ·$ø4œD†5�,£5«ËL¹5ü«6‰T®6à Ä  à ì€ Ä Ço¼vßmÈÊBÿ¶ Â6¶ ¸$Ç6œDÕ6�,ò6«ËLˆ7üü7?Tÿ7Å Æ  Å ì€ Æ ÇoÈÊBÿ¶ Š8¶ ¹$�8œD•8üï8 쀻 g»ü–98™9Ç È É  Ç ì€ È €g€gŠ‚gê ûcƒg±ÓûcØ«q¢1È¡É †ÓBÿº �9º »$ž9œ ¤9üô9쀽§#½ìš:\�:ì€Bÿ¼¼ ½çéìñ:쀿£#¿ä•;L˜;Ê  Ê ì€Bÿ¾ ¢;¾ ¿$£;üÜ;ì€Á¥#Áü²=0ü‚<+( Converts a `RawFd` to a `UnixDatagram`.Á²<�\º<ÒÌÊ<�üÒ<@èÉ ´—=±Ê \¼=ì€ÿÀÀ ÁÃ&È=ü©>-Í�îÃüÝ>'$à>ì€Í�Bÿ Ã�/Då>ü­A#ÌsÅ®Åü×A,$ÚAì€ÌsBÿÄÄ Å unix_datagramÁlßAÔ¿Bì€Ç…$ÇüàB!,ãBË  Ë ì€®L®L§°LÃ&Û#±Lâ¦Û#t4bE™Ë BÿÆ éBÆ Ç$êBü¨C#ì€É®ÉäÒC$ÕCÌsì€BÿÈÈ ÉÃ&ÚCä!hd5!D9!€ã÷ $„$ËÍà <¢#ËΧT!®LËÏá L-¤#ËÐÛL8¦#ËÑù Creates a new `UnixStream` from a standard `net::UnixStream`.Áú �ü‚ GD This function is intended to be used to wrap a Unix stream from theÁüÎ Jæ® ü� G’ñ ´é ±Ê „ �TŒ ûñ › �ü£ DA The Unix stream here will not have `connect` called on it, so itÁüì Hèò Ô¹ ¹ó Dß ‰…öƒBÿ   ¤ä0‰úüè5üå1. Creates an unnamed pair of connected sockets.Á›�ü£@= Returns two `UnixStream`s which are connected to each other.Á$ïÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwöƒöƒšËBÿ   ¥¤Å¥�¦�¦�¦¦¥¦»Ÿ òÆUÿü†2ü½DA Returns the socket address of the local half of this connection.ÁT�Ü  Ü öƒ›ÃBÿ  ˜  §$™ü°1üæEB Returns the socket address of the remote half of this connection.ÁL·Ý  Ý öƒ›ÃBÿ  Á  ¨$ÂüÂ9üŽ/Óÿ TÉÞ  Þ öƒÚÀ Bÿ  Ô  ©$Õü»7ü©Bêö ð�üøD¸�üÁF†‚üŒ*Ö‚DÂß  ß öƒ¯ú ÈÊBÿ  Ë  ª$ÌŸú Òü¸*aü¡JÝÓ üð&²Ô ›�\£Ò̳�ü»F‹Õ ü†LÜÕ ü×%³Ö ��ü‰-ðÖ »�tÃ×âÖ�,ú\ôÐãäÜßã,ýüìü‡/…ä„»ª—ìІçìò use mio::net::UnixStream;Á”�üœ1. let (stream1, stream2) = UnixStream::pair()?;ÁÒ�üÚ+( // Wait until the stream is writable...ÁŠ�ü’B? // Write to the stream using a direct libc call, of course theÁüÙ9’Ú ¼— ÕÚ ü³  let n = stream1.try_io(|| {Áü× 3ŸÛ ü�!TQ let res = unsafe { libc::send(stream1.as_raw_fd(), buf_ptr, buf.len(), 0) };Á´è!¸Ü äƒ"ØÜ „¤"þÜ ü¹"I‰ü‡#0îÝ ü¼#+©Þ Lì#ðîDú#ìÞ ü‡$#ÿÞ ¯$�ü·$+Î’ ç$�üï$C�“ ü·%8Ïà Üô%‘á ü”& let n = stream2.try_io(|| {Áü¸&3âá üð&TQ let res = unsafe { libc::recv(stream2.as_raw_fd(), buf_ptr, buf.len(), 0) };Á´É'¸Ü ää'ØÜ „…(þÜ üš(I�— üè(0îÝ ü�)+©Þ LÍ)ðîDÛ)ìÞ üè)"µä d�*¿Ã< *�ï<¬*�»4¿*à  à öƒÈüÁýBÿ ‚¬�­­¬ Ì* çæ Æ*øæ É*‰ç Ìÿ*œç l‹+ «Èü§ý$Í*œåû79<>¹+«�®�®�®®«Ó÷ÄË+öƒ°²èé²°üê+7$í+á â  á öƒ â Ä÷ÊÊBÿ¯ ò+¯ °$÷+±Óý+\½,°�±�±�±±°±é÷ÊÊUÿ«� üå,Mlè,ã ä å  ã öƒ ä ü7ü7ý7šÃÿ7óö7 ŽEøD²�<å ÊÊBÿ¯ ö,¯ ²$û,´î $�-\Î-²�³�³�³³²³òÙ¸‘ äþ-8æ æ «„µ·èéµ·ü¡.7$¤.ç è  ç «„ è Ä÷ÊÊBÿ´ ©.´ µ8$®.±Ó´.\ô.µ�¶�¶�¶¶µ¶òÙ«� üœ/MlŸ/é ê ë  é «„ ê ü7ü7ý7šÃÿ7óö7 ŽEøD²�<ë ÊÊBÿ´ ­/´ ·8$²/´î $¸/\…0·�¸�¸�¸¸·¸òÙ¸‘ ̵0öƒº¼¾‚ ƒ † ¾¼ºüÕ04,Ø0ì í  ì öƒ í Ä÷ÊÊBÿ¹ Þ0¹ º$ã0±Óé0\¥1º�»�»�»»º»òÙ…î üÎ1GtÑ1î ï ð  î öƒ ï Œ‰Œ‰�‰ýÂ�‰óö7 Å0ײ÷([Oð ÊÊBÿ¹ à1¹ ¼$å1´î $ë1\±2¼�½�½�½½¼½òÙ–ð üä2%,ç2ñ  ñ öƒÈÊBÿ¹ í2¹ ¾$ò2\¥3¾�¿�¿�¿¿¾«ûìÉ38ò ò «„ÁÃÅ‚ ƒ † ÁÃÅüí34,ð3ó ô  ó «„ ô Ä÷ÊÊBÿÀ ö3À Á8$û3±Ó�4\½4Á�Â�Â�ÂÂÁÂòÙ…î üæ4Gté4õ ö ÷  õ «„ ö Œ‰Œ‰�‰ýÂ�‰óö7 Å0ײ÷([O÷ ÊÊBÿÀ ø4À Ã8$ý4´î $ƒ5\É5Ã�Ä�Ä�ÄÄÃÄòÙ–ð üü5%,ÿ5ø  ø «„ÈÊBÿÀ …6À Å8$Š6\½6Å�Æ�Æ�ÆÆÅžþüá6!öƒÈÉÊ�žŸÊÈÉü‰7‡DŒ7ù ú  ù öƒ ú Ço¼vßmÈÊBÿÇ ž7Ç È$£7œD±7�,Î7«ËLä7üÖ8‰TÙ8û ü  û öƒ ü Ço¼vßmÈÊBÿÇ í8Ç É$ò8œD€9�,�9«ËL³9ü§:?Tª:ý þ  ý öƒ þ ÇoÈÊBÿÇ µ:Ç Ê$º:œDÀ:ôš;öƒÌ gÌü¿;8Â;ÿ € �  ÿ öƒ € €g€gŠ‚gê ûcƒg±ÓûcØ«q¢1È¡� †ÓBÿË Æ;Ë Ì$Ç;œ Í;ì�<öƒÎ§#ÎìÁ<\Ä<öƒBÿÍÍ Îåܘ=öƒÐ£#Ðäº=L½=‚  ‚ öƒBÿÏ Ç=Ï Ð$È=ì�>öƒÒ¥#ÒüÓ?.ü¥>)& Converts a `RawFd` to a `UnixStream`.ÁÓ>�\Û>ÒÌë>�üó>@èÉ ´¸?±Ê \Ý?öƒÿÑÑ ÒÃ&é?üÆ@)‰…Ô®Ôüö@#$ù@öƒ‰…BÿÓÓ Ôä04þ@ü¼C!ÌsÖ®ÖüäC($çCöƒÌsBÿÕÕ Ö unix_streamÁ\ìCÄÆDöƒØ…$ØüåD!,èDƒ  ƒ öƒ®L®L§°LÃ&Û#±Lâ¦Û#t4bE™ƒ Bÿ× îD× Ø$ïDü­E!öƒÚ®ÚäÕE$ØEÌsöƒBÿÙÙ ÚÃ&ÝEÄ~!‡KLØ Ì$É dà ¼îÌËî¸îÌ%#Çî´îÌ75Ãî™ÂÒT ÂÒTÂÒT�ÁÒTÁÒTÁÒT�ÀÒT—ÀÒTL&ÒT'ÒT Å&ÒTÙ&ÒTv^ÒTÔmÒT ¤ŽÒT3oÒTúoÒT Õ“ÒTé“ÒTƒÒT ý³ÒT·ÒT óÈÒTžŽÒT ¤ÜÒTJ�ÒT8‘ÒTÿ‘ÒT îæÒT‚çÒT—“ÒTÝ”ÒT)—ÒT0—ÒT�hÒT´­ÒTð¬ÒT ® ÒTÈ«ÒTÊ–ÒTè•ÒTºªÒTSªÒT©ÒT˨ÒT…¨ÒT?¨ÒTù§ÒT³§ÒTm§ÒT'§ÒTâ¦ÒTD¦ÒTÜ-ÒT è-ÒTñ¥ÒT ß.ÒTW”ÒT0Ð ÒT0ä ÒT ÿÒT!’ÒT ÎÒT ‘ÒT ÉÒTŽ�ÒT ëÒT�ÒT þÒTÍŽÒTÔŽÒTèvÒTÌ£ÒT<£ÒTà¢ÒTN¢ÒT¢ÒT³¡ÒT=¡ÒTÚƒÒTáƒÒTÀyÒTžŸÒT êÒT"ŸÒT ÁÒT«žÒT ‰ÒTmÒTÒT|ÒT«{ÒTV{ÒTüzÒTJzÒT)wÒT•tÒT»qÒTqÒTloÒT1nÒTámÒT-ÒT-ÒTÆ|ÒTžTÒTwKÒT JÒT ÄM ÒT–IÒT “O ÒT&IÒT ÓP ÒT€HÒT ØQ ÒTvGÒT ÝR ÒTçR ÒT•FÒT ÈT ÒTœEÒT ïT ÒT–DÒT ôU ÒTþU ÒTëCÒTØAÒT<@ÒTJ,ÒTQ,ÒT¾ˆÒT%?ÒTF;ÒT:ÒT ÷u ÒT�9ÒT Æw ÒT 9ÒT †y ÒT…8ÒT ‹z ÒT†7ÒT ’{ ÒT£{ ÒT ™| ÒTY6ÒT Á| ÒTW5ÒT È} ÒTÙ} ÒTÀ2ÒT1ÒTÒTYÒT`ÒT ‘ÒTÓÒTÚÒTNÒTÓÒTÚÒTYÒT`ÒTÏÒTÖÒTÒÒTÙÒTš–ÒT˜ÒT=™ÒTõÒTÌšÒT†�ÒTžÒTÜ¡ÒTB¦ÒT£©ÒT_«ÒTš­ÒTà®ÒT<¯ÒTx±ÒT á;ÒTõ;ÒT—AÒT%³ÒT ¾AÒTÒAÒTÒT"ÒT»£ÒTŸÒT˜ºÒTŸ»ÒT­½ÒTÀÒT{ÀÒTGÂÒT¢ÂÒT´ÃÒT À,ÒTÔ,ÒTñÑÒT ¾ÒTÔÒT ·ÒTÙÕÒT –ÒTÀÖÒT § ÒTD×ÒT ô!ÒTÃ×ÒT ²#ÒT “ ÒTãÒTeÿÒTÈþÒT°ýÒT ˆ ÒT9ýÒT Ì ÒTÇüÒT ‰ ÒTÎûÒT ·0 ÒTË0 ÒT çÒT¬åÒT˜äÒT$ãÒT1áÒTšàÒT õ- ÒT$àÒT Ä/ ÒT³ßÒT „1 ÒTðÞÒT ‹2 ÒTŸ2 ÒTÔÝÒTÛÒT_ÇÒT¿ÆÒTÅÒTéÁÒT,ÀÒT¿ÒTü½ÒTk½ÒT•»ÒT ¶BÒT™µÒT{´ÒT ÷TÒT€³ÒT üUÒT�VÒT‚WÒT�²ÒT ­WÒTš±ÒT ²XÒTÃXÒT«°ÒT áYÒT¬¯ÒT äZÒTîZÒT¯ÒTÌ\ÒT"®ÒT ø\ÒT­ÒT û]ÒT…^ÒTo¬ÒT…«ÒT ¬`ÒT«ÒT ûaÒTžªÒT »cÒTÜ©ÒT ÀdÒTÔdÒTÀ¨ÒTY¦ÒT‘�ÒTŠ�ÒTŠÒT â>ÒTÅ„ÒT €IÒT8�ÒT ÈSÒTèÒT ÛUÒTõ}ÒT ÏZÒT?|ÒT Ñ_ÒTœzÒT�wÒT+uÒTèsÒT¼rÒT qÒTãoÒT™nÒT`mÒTtkÒTËiÒTQgÒT ß•ÒT õ•ÒTáeÒT ë™ÒT•dÒT ��ÒT ¦�ÒT_cÒT ¾ ÒT¹bÒTbÒTV]ÒT\ÒT ϶ÒT¢[ÒT ž¸ÒT+[ÒT Þ¹ÒTdZÒT ãºÒT÷ºÒT7YÒT¯VÒT]PÒTNÒT½KÒTåJÒT„IÒT ‘ÒT”HÒT €ÒT9GÒT †ÒT]EÒT £ÒTxDÒTýBÒT‘=ÒTa<ÒT �5ÒTê;ÒT ß6ÒTx;ÒT Ÿ8ÒT³:ÒT §9ÒT»9ÒTò9ÒT¤7ÒTý2ÒT¥0ÒTH0ÒTë/ÒTR/ÒT ®ÒTÛ.ÒT ýÒTi.ÒT ½ÒT¤-ÒT ÅÒTÙÒTã,ÒT¢*ÒT/%ÒTm!ÒTÏ ÒTr ÒTÜÒT°ÒT�ÒT ‚,ÒTŠÒT ‡-ÒT˜-ÒT�.ÒT¥ÒT ¹.ÒT¡ÒT ¾/ÒTÏ/ÒT°ÒT î0ÒT°ÒT ñ1ÒTû1ÒT ÒTÙ3ÒT#ÒT †4ÒTÒT ‰5ÒT“5ÒTnÒT‚ÒT »7ÒT ÒT Š9ÒT™ÒT Ê:ÒTÕÒT Ð;ÒTä;ÒTÒTË ÒT>Eã»Ê’íê�_i‚ö¬êÅ›å ../mio/struct.Poll.htmlÁ�!þ ../mio/event/struct.Events.htmlÁonGitHubÁ4https://github.com/tokio-rs/mio/tree/master/examplesÁ»:Úþ ¸š�À��!ä�ñ�Ú€»�!¹þ š�À�ä�Úñ�»» registeringÁà event::SourceÁ./event/trait.Source.htmlÁstruct.Poll.htmlÁstruct.Interest.htmlÁÀ ¥�»readableÁstruct.Registry.htmlÁº�àÌ�ê�ÿ�¨�»¥�µ�º�àÀ Ì�ê�ÿ�À ¨�µ�“ read_closedÁkqueueÁ./net/struct.TcpStream.htmlÁ:https://www.freebsd.org/cgi/man.cgi?query=kqueue&sektion=2Á event portsÁ‹ÏȲ¬À WouldBlockÁ÷7¨�writableÁ2https://man7.org/linux/man-pages/man7/epoll.7.htmlÁÇ‘ò‘¬þ÷7¨�epollÁþ’Ç‘¬struct.Token.htmlÁþ÷7½”)https://github.com/tokio-rs/mio/pull/1580ÁÖ“þ’./event/struct.Events.htmlÁñ“þÿ�”pull request#1580Á›”Ö“Õ”ñ“ê�ÿ�”"https://github.com/asomers/mio-aioÁŠ•›”Duration::ZEROÁÕ”Ì�ê�ÿ�º*‰mio-aioÁɕЕ5https://man7.org/linux/man-pages/man2/signalfd.2.htmlÁü•º�Ì�ê�ö5· º*‰ event sourcesÁ±–É•unix/struct.SourceFd.htmlÁÉ–ü•àº�Ì�µ�ö5·‰º*./event/struct.Event.htmlÁ´—±–Jhttps://docs.microsoft.com/en-us/windows/win32/fileio/i-o-completion-portsÁÒ—É–µ�º�œàö5·std::ioÁ«˜Î3—´—std::io::ErrorKind::WouldBlockÁIOCPÁÕ˜Ò—àc»µ� write_closedÁstd::io::ErrorKindÁÔ™«˜Î3 Poll::pollÁ÷™Dhttps://docs.oracle.com/cd/E88353_01/html/E37843/port-create-3c.htmlÁššÕ˜signalfdÁ»·‘ǚؚԙ‰Ò‘€›Î3÷™–ˆ±’•›ššê›‹ÏÀ »:×’ñ’·‘ǚؚû‡Ò‘€›ò‘±’•›ê›‹ÏÀ ×’¨�ñ’àc»../struct.Poll.htmlÁº�Registry::registerÁ«../struct.Registry.htmlÁÿ »../event/trait.Source.htmlÁº�œàÚ�ø�«<ÿ ¡#”žºž»àº�Ú�ø�«ÿ ”žºžNChttps://pubs.opengroup.org/onlinepubs/9699919799/functions/dup.htmlÁio::ErrorKind::WouldBlockÁ io::ErrorKindÁû‡°7 event::EventÁInterest::READABLEÁreadable eventÁì˜ ×’pipe(2)Áàdup(2)ÁÇŸ� –ˆÓ7event::Event::is_writableÁÊ °7Û ì˜  éÀevent::Event::is_write_closedÁ¦¡àÇŸwritable eventsÁ°7µÈ¡Ê ÖÓ7™!˜ Àevent::Event::is_read_closedÁ‹¢¦¡àcInterest::WRITABLEÁ¾¢Ó7¹È¡™!ÏìÀevent::Event::is_readableÁ�£‹¢û«Dhttps://pubs.opengroup.org/onlinepubs/9699919799/functions/pipe.htmlÁ·£¾¢­ ™!ºÏìò ô£�£û×’«•¡¨¤·£� ­ Û ò ô£ìÏì‰û×’«•¡¨¤!»àº�Ì�ø�ê�Registry::reregisterÁslabÁ«https://crates.io/crates/slabÁ»àº�Ì�ø�µ�ê�´¦ͦÛ¦«»µ�º�àø�Ì�´¦ê�ͦÛ¦«µ�«˜Õstruct.Waker.htmlÁimplementation notes of PollÁeventfdÁê�¨�»«˜Õ4https://man7.org/linux/man-pages/man2/eventfd.2.htmlÁ�¨£¨Ĩê�쨻¨�«˜Õ�¨Ĩ£¨ê�쨨�»*Ú� OS selectorÁÖ“þ’fmt::Formatter::alternateÁÇ‘ò‘fmt::FormatterÁñ€›÷7 alternateÁ»../struct.Token.htmlÁ‰ªÖ“Ú�¥ªþ’Ç‘ò‘Ϫñ¾,€›÷7òª…«»Ú�‰ªÖ“þ’Ç‘¥ªϪ€gò‘€›ñ÷7½òª…«»Ú��struct.Events.htmlÁ»Ú€›Ú��Ú€€›»Û¬Ú�Û¬�Ú€›»ø�”žå@../net/struct.TcpStream.htmlÁº*´¦«<../unix/struct.SourceFd.htmlÁ deregisteredÁRegistry::deregisterÁø�”žå@´¦Û­�®±®º*«®ø�å@”ž´¦Û­�®º*«±®®� ­ û‡¬«<Û)Ïì®×’IoSource::do_ioÁÎ:� –ˆ¬­ Û)Ïì«®…°Î:ò×’¬­ � Û)Ï쉫®…°×’Î: Ú�ùKportability guidelinesÁÎEÃùKÚ�ª±ÎEùK™Ú�ª±ÎE�›>›>��›>$hereÁihttps://github.com/Thomasdezeeuw/heph/blob/0c4f1ab3eaf08bea1d65776528bfd6114c9f8374/src/net/tcp/stream.rsÁ·£›>� write interestÁ¼A™!­ û‡Ïì�×’ ²·£›>� –ˆ©²­ ¨³¼A™!ºÏì�×’›>·£ ²©²¨³¼A� ­ ™!Ïì‰�×’$òH“H›>� ­ û‡ßG©GƒGÙHÏì�×’›>òH“H� –ˆßG­ ÙH©GƒG�Ïì×’›>òH“H� ­ ßG©GƒGÏì‰ÙH�×’ ×’­ Ïì� ­ û‡Ïì‰×’� –ˆ×’­ Ïì�  ×’­ Ïì� ­ û‡Ïì‰×’� –ˆ×’­ Ïì� ˜  é˜ ˜ $Ú�ºž”ž event sourceÁÚ../event/struct.Events.htmlÁ´—../net/struct.TcpListener.htmlÁ registeredÁÀ »ºž¿=Ú�”žÚ¨¸´—¾¸ä¸‡¹À »¿=ºžÚ�”žÚ¨¸¾¸ä¸´—‡¹À ¿=»…ù öÌí÷±¯²ŠP³¯ÿ ¦£¬©€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈǵì6„$¢#…ù öÌí÷±¯²ŠP³¯ÿ ¦£¬©€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈǵì6…ù öÌí÷±¯²ŠP³¯ÿ ¦£¬©€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈǵì6ç� „$¢#¤#¦#…ù öÌí÷±¯²ŠP³¯ÿ ¦£¬©€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈǵì6…ù öÌí÷±¯²ŠP³¯ÿ ¦£¬©€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈǵì6…ù öÌí÷±¯²ŠP³¯ÿ ¦£¬©€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈǵì6…ù öÌí÷±¯²ŠP³¯ÿ ¦£¬©€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈǵì6œ…ù öÌí÷±¯²ŠP³¯ÿ ¦£¬©€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈǵì6Ü"é"¢#…ù öÌí÷±¯²ŠP³¯ÿ ¦£¬©€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈǵì6ç� „$¢#¤#¦#…ù öÌí÷±¯²ŠP³¯ÿ ¦£¬©€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈǵì6„$¢#¤#¦#…ù öÌí÷±¯²ŠP³¯ÿ ¦£¬©€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈǵì6„$¢#¤#¦#…ù öÌí÷±¯²ŠP³¯ÿ ¦£¬©€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈǵì6ç� „$¢#¤#¦#…ù öÌí÷±¯²ŠP³¯ÿ ¦£¬©€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈǵì6SelectorepWakerfdSourceFdSenderinnerReceiverTokenIterpos­Å¼ÅÅÅÑÅÚÅéÅöłƑÆ�ƨÆÞpeA/6»‘�¨,r�íñÖí„}¸u©�ûšy*ʯtýðÉÛ-pIrëÕ"�éŸædÑòC›½I¿:DÙÕçÿ¸�É΄ÒÍâ�aÂ} íq ›*à èp„~|VZÑB{C�+F-?éV›¨¿´~ïïz::÷àDm fï{ÁNS Q…ç´N}¦žUòGƒOPs·BR)QÎsîì]}Á½‰RQ5Ê6kÌM{a)±g@Ð3–çY »¢P¤}`±¬ˆóïg¢2Ÿ™;~Y›Ú¨\÷®Ã#ƒ%º…uÊ(jdm§<1àÔÞ»K<1¡œª7CÅP£t!ºÁ4}€6Ó¿Äq²ÎÌô¿vçÙP”7M3ºiö¬Ý=ëƒ�/úBsP_@¼ãÓ¢ød'¹RT{¼.®üQ[[“ˆ²Ø•Ðc�Ÿó%8ÃJ‘X€(ªÝ¦bR´µª]±K/ 6ÕÍ¢kê0þ�mx Ô…@¿g—:Iîïê§wŒNƒîœI!ÙâBÆ^âj]{°�˜¹©ó’dÃðÐ\ùkµ%øÙuÖj5+Äôߪ¥r/ÈÁþTHÅPV“ò™ _ru¢j~1ëv²¨Ô…éá=•‚ûñðˆ©•byL×c³K#%s¢iw 6 Öâ” ßóƾÈÄMÔöÉF» þèÄý(£OjþèÏÂÐÿÑŒ#DîÌoWæl™p•Æ8õ–èEØæì\ƒîX–ßG™)GZõ[|½Šˆß‡"¢Ú4ê·¨¨Ê!!›Àófw @¥à%�¾Â ÌìUu™VM‡K¿ü ÏÒÝDÖµÂNX¼ŸŠ±® q£Òë®JxUâªl7 Ú±ùS…�dójÀ˜Ø7Ðôva¶o=ÐX,[# ·'b�ÂŒ`|ß:èAÊÒœ§‚�p¦ÛpFÃçè»#æ·š^òÆ(ÎÖÔ'ŽìFßû`Ce|yÃêl€9WÕß‹L0&èýœ¿DÐóuìœA�åk_¬TÔ3Ìz¶&œÃz÷µ‹ Lö}yúD᨞^yäçÔÍè�Ö‹²ã/t evj´ñ)Òi|AVêݰMä®~·;"9RÒß»ŠhÍA‘Ñ1'9$¤ âv Àµ¥4”#óù$—"{ ƒ2^ *Ï&Š QÙ¸ ‘‘%|…Ÿ ö²$B´ªYµù²�õÙ ¯ŽÑ�KŠV…¤¼ò0öYšÉv˜ÿ¼ ºômþJ Èïñîzy‚)ÛtS¿œ°ç�‹’”X§Eh•ÞYSÀ”÷¡¹âÚÀ0 2XHW mé— EDL|C¢~_/ˆ~tLYLI`·ISÚ}5‡#t×€Ú6 Y �=N@¿Ìû÷çyYk¹,2’׸¤f9oiè¶WÿÂUЀ ±„�kì�èóæ v_·øÒà¤�ƒ§5زnGW;bš¢º)^Á®ÄüvnÅ|o“u3nß2»…_!»)áø¹þp×껼c¥À¢;’¼às<×Úþá>QÞhªéRíWü³ ›pã[ó,yÎ™ÏÆÂ “_•}´•À à~:8¤,÷GÄ´uŸ?P‹{ªéáÞÉÞkرô4Q“Ôe(ÍÄ ¬Ãsô¿†Z…­jtæo +iΗè4 ýà$¾„›q¯nKì¶|O•€ÛVqQP%M§Y6¤)1æŽ1ò“`A[u@(0èCgõÞ÷uˆµE0ϡ实"O¤�ÇÇoR§ïm1_°*Œ%IÕ&7°µbU1+œHß“¢ Zè¹E5䄽Ùx‰Ç¿.ïâ Ê¯È í^‹ét@)dL:ÿÆC³r–ŒͶU*w}·¿¯áÑß8­H”Ñåž(æ4Ý«À ”Kk˜ÐH‡Dy»Fºè‹‹œÐ�ÊŠæÂœ¤èe�Pœ¤øKA^¥Ñ¦5x°Aíá07#5ïhIãé ~Àû+#,O„ÂA_À÷]Ùβ_•´ û.àJè&ž°†”pãk¸o£ »Üýîåž*±”ð±‘M­9®åý ÖK•Þ¡Ú'9ðližßî.•ž?¹Š�¹é6¨sØ‚¹}�|¦ ×å5õR\{¤�Ò/~R$ZÊú/Z5Û³ˆ»ß ý­ëèsG©h\ÌÅN·ª-}\ϧ¨É{nnGw w*»z}g¶Yn¿œ6°ÂRí¤ö�ßÇ&¦\¶×zDKŒ + Y8K¡ß(/pÔ\IbZ�0øK2?¿Y%Ǧ‰o&—{±?©<ƒAÿsôgñzÛgŽ÷!ѱÏ‹--‹õ…5Ž�Þ%�[7XU$øoõu”±`Írîý„;ÿn}¢m»ÒÓ‚K ¦cZénÕôÈWšc��ûõñ•®¯ÒÍ<ÏÑÜêlXøJûªžó`+-S‡ñ}×V@/P¸³\¼ ùf9y<ס¤[HLå¢Xh]`¼”jÕN3T‚‡¯¤ %CäŸhFUý²'63Ñâ®õÙ˜;™�•yúC’)ïÈm/Å=´ì¿¬¡v\¦ ãšX£¦‰X¦í];òïy¹¿o.’äžoˆ– ´ÑV¬ßš÷ôÁÎ�âTTiÍdîá¢~ÛBókå ‹P–ª™ùzßš ».NÇYBg¦€zB°phþN ûÙˆ'hªLþÛÒ…h=Ôb«›pºìϸÕ\žz�$FÙ®`åÙz } »3gÏ 6bN�$î®ö)ଡE†~÷Á†¨ÅâqÆ7ºKT,ùxé‰jÖ"ëŒiBYî­ -ý·.RGîQâ�†±›{õ-»'éžîG„ž$Ϩ×Ito»‡>®lõ JáRŒç¨$¾ˆFÍSáÀÍOôPOwÙ &pæþp[-­¸¯P7“Å.®Ê*4 „ÁèÃ5~åhzD¶ËÓƒ©¡äyâ×Y|ÜFÓuhtµïT-ÛÃOsþþy_]©Wb§H-ËÔM&³¬ˆsO ëúà~œNuâ-¡'œfú˜"dÇÁØH _—áŒ.æ¥7=öÑ9Ö?SJr•1Ë]*¯*HÑÎw“®›ßè~ˆòßâûº¼QÐ}Ì™C/MýÆÝWöƒ²xc$Ä5rb<ýŽ$Ÿ‰ï‘¦o‹I®%»ž�O�èàÅB,KbžÄF¡µ>­:ãîâZª·Ìk›ýC«Õòú6k;¥�h´ë‘3h Òý1éÕ¢*6Wc—%Êl¹.gÝ4µ/+r80Ó½tÁý±åaѰT‰ñŒ9¸¡°£å ÿ,=ÏÌXðÖÊx±îþ%*M€î‘Lqz˜SUй!^Íé} 2=@ :[(´¼p+‰†®l^MQ=›ȦHÓBtúÊ]S"¶v¨±mq~CÄ8’žWZß’ò:`"˜epolìÖ×ñº”r–»>2˜ýЕJÚ%<¨þ´+ß_é‚[OEQ¨Y³u˜e¾«Ø­Zh굃cùIéBDšq㎋W1�´õ3WÅk xçWëŠmÄ~§Ì!/Ú³ÒS­DHvYg̲ð]‰þÆè ÷_G�"¹‚¤BÄ\ÞZÿœ�úÉ(i+#[<9ØÖ�RwÓêx ÅÒ!bÄáxûÛÂ믮¤´ƒþiÛ^ñy# €5+bÚ†m”RqÏ—.PÒ+¢KÅaÃ9 ºH;¬kšFCíXUÔ1Ë[ëÆå-‡Ð9®#ÀZ™øtB&{;—òw3.s¨ÝnCâåQÒðzá@+¸�Œ— )`DÂ�5©�ïîÙ{’M>T’‚ü™-‰˜èÚjU•,ù°x·Rá·Ü…®_f��4àxŽ=‡9"Q;ÑPÿT•MØÍ�ŽøÚhý@·ç¶³ð‹Ü×…0½³ÉCÏ™PØœ‚Â(µýèp˜Ë+p­*xT0ãÓ•.=7µ�LäµêÚµí*Ä>9³Òt¶ +äFí2jYjNŠ@$_z$Z˜€ZkG´öý¶yÏ>ÐL—'õ3Õ0,D©€£¸‘œ¨¼ ¾u’�;•b“4bGni‰ý¼M0=-Ô\´k¤±%÷¬I80iMQ´´÷HÌ×€UÜ^�™à1Tz‡d¯›.H¤ ›;‹&ÁX³ÅÏlç—]‰& c>€è)9œ_SÞ {$ðSb¥ a«sL ß ¦Ù莰R 1Ù‚àf«¡SŒ/.Á®]bÀ+@´n�_‘’Ðä¾_yhÊLè²hCI±TçD߯ήçŒn›Ã\^8Tä&WƯõ@ë;psÞ©i�9íoñÀx–ç߸ã<º2ˆR¶›�eRB %ø§]ô;h½xwEæÇM´£jkCÁ*8 ¸mlÅ™Mû\—÷ÙìÞ*‡¶{�%d{Ó%‚ˆ×…úSŽT�)»º<(… E¾ÖÂwÄ›Ÿ[ÅÛô#eœ•�ªÖV`©¿ÆÑÆV 2~Åp®o_«‹jñƒ�Õgƒï§þN›‰iêuµpÎÆ=b¶·ŽºJ=I²±\eŠtוsNÃÝväÆMFHªÿtÇ�Ö.Ÿß>8¼«¬âW{ˆEÙäþâ°H¬Úˆ°ÃzÖ÷2qWݲà¿a&„®ŒôÇïú\ ®o¿÷Œ4 ì­§ðø=²Ü„‘öÁsW.úiyö³¬ðûù4þ–&ö™Š »ñæš¹™å·£3òª1XJˆèÝDuOȆ¿n­PL-¡Âf!ú›K}ÆŠè/R¶£�r22°ógRµÍ^(AœA±\©öj¨*[’Àè?"u^¤€ÚŸ±kÆ)~`_\�[|@_é뫾r‡3H»9õùä‰qèuÆ×ýƒV”‘› 3¤F±�pZêb5Œ!�ûïùÖ¢…¬ß°ñ6“SêæáHgäëHHÏÒöç_°?=MÄïŸv²FFÙçzoœkI51J�»¢³½­ì–åi3¾ô¯—÷Âî” vlL䙣‡JÅaò „GOÌÀ_A/áΈ?áñd. ZÙÓpóh»pö"¯=/EŒžÏÕ?Ç¥Q™êè„NJ�±ç1X€ROF°¿ÖEl£&…ð÷„’êE{£ð4Ô÷$À.ØÓ|4Á†ûŽ’tLÄÇŒ¸l§��gÇ…ävÿ›ð�-!:Òˆ­â.¾Z÷`ÿU'@H]`Ô@Úq¦�̸Ö"iàù8î§&�ºÏCqלÙNÞ±Û¢Ðdó”üøÒã0©µ �8ãcT!�ňŠâÿjv»¼@ÊÙÎKp:õãßõIîªéãp/æéÅjAý²¡á:²ÿ”E$ Ø]×¥,B6é05õ ÙcÐimN8¦³ªô4`G¦!ÄñÃâœR/&j»äȲ'BâSÏ.$Þ=G}™å$Èñ¾l„ ve€ü¨ïOŸþ¢·©8ŸsÎ,¢¹ÊÔVg<žA­MpÞ#�I‹5œ|f#¥â²ƒúba¡hÆÕî]ìýçG›½uƒɆ½èNµ¥Ìt¸:m½kôB7{€Ócî1d;LÈV*¶ç¸§R‹ƒK¯T2ù0ÕƒVÙFpwÌ7ߺtȵÆ.;‘QÓžŠB^æuE2G 8ù}½É÷u}Ì”žPŠ a6ä¡ä‘ô@ š Ç–è 2Ñ|»á&ò fà2þ³é„v—­[SŸ‹±Nƒ[Ö·¸é”±Ä0kbBß¿·¾FÕ¨ñ‡cᩊÄ?oÆ èg¯#NÁ¨�öÊ\Ù�<ÝuýÇØ!U?5½`Ý,0îNˆ—œFs·x=¯(0{ƒ6»@O®¨µ»EUGƒ—½/ôè5Ë–õëpFhÐ멲„zÿöW+,Þ`´3\âãœï³xçÆðùõíÅ'¤¾3_Ð�Òº‡CC<"ó[s¿ÎÆÈ Q˜DàþG—±µh¨x¿D1õ–ñE"EùSÈè_Žö^<ß (ÏDÍ ôà/²ëT-éËÇ ™Ü¦¤õ$©™œ:¥Ó®*ÈÈæN UÀŒìŒqÙî܇Hˆ‘!R�²]Fˆþ‚ÿ«€u8!ße§›”ùŽ@{Úúòî˜\Ÿ ü¥‡ØÜ&xL¾öV.Yîò/!…Ûäß2ÑY¿è¦Äb þ®"z^j*äqÑuc«ç%Iöù¥kÇÅyìíBÒ1c�âƒJhZ ËUñ ¢Š¬°¢úrUfÒN©Ú‹YSV$ 6.ÎZí�+Dõö Ô¥[G aq`†ë>(•7ߣQ7ÈÐû;’jåÄ Núè§YK,Šy44¤›�ŠÏƒØÏ ¯c¡ÿx="�¸ìh®úŒ�Í4ˆÚw¼áRTƒ1™Y‘±O‡tñsê«ÝbjÞ…i7r£v^Õvìb€šH‘W·ÿtu�J0‡ÿŸ…£ÀدIª9Á„¥u£èBtÿ<èìw&—ëœ_ÒXŠúdß9œÉ´ «Âï-·ÐxD›Ÿ(÷©M#‡A»ŽàþÒî…0—¶²>¾ôïì«”Y#dš&†ä(=¤Øb¡Ñ­è$]ü2ÎpŒ#ÿ’u9®¯%ýuÞ9œ»»è¢¡«Îݾ¸ Têw˽˜Ù�á*À–éµ|ºfP_d˜F“j·¤BÏBX¢]ê ¼§©a!‹Ö˜INmy+È�Á„œÈUe% á!.ˆEÖÄÛ!ß�›ì|kg­ÑáåŠåcža¬úü§³@רÑ7Ê9˜ÇQ�¥>ÇF [F,�ÈéÝLFxî$Cf•R&Ýš!ˆJÃÿ�$:e›|§º¬@Ó²H -‰ºê:¨|­úp0Y 5�³!éÅ#�îE÷Ãwbñ£�©p¦&pzýƒ�)%¨Y¹­RäOÒ,†¨vOa5wµë­úŠåª)‰ãnJóÌéœÓX *ã|üO)zûYm�AĬŒcnP�Ì£åïŒ�²j,»†áúñrŸä�ëPph¶Ãý¾„€cEç£I¦1lw©š;–lD™À$í¦ÖsÍë°‘ ‘ÚÂðiŠ_Å|„Ñßèõ6äµÖœEúñ’Dnñ³Ð­�û£9{&1»»Æ‘ŠåY]~üå­å>a@¿¸b¡*±;;_Eb21dr�{l)9çáâ\�øvÇ€^ÆÍžÍò­®ý>—ÐúŒÉT$p1Q¦C‹‘Ý|!è°ïü”¥åWlfp »ƒ‡]Rf"Ýÿ7‚쪘ÅàU¼cÄ�é"œÊ‡Ÿ9-è6¬Ëiñ�á4!¹÷´)|Û¡ Ó µ VøÌºV‹«‘áΟŠÚç[é‡<&ç¸âµ/@ºÎÁ&0ƒWׯkëÅrO`!ó5<;ሹvÜô[œeCû}9ìŽ�bÒ®›”ø$ÙØÌµ8€><¤Ÿw¯êN—¿”üŒ÷:°S¾¥–ì¸ÝG¢Óà·È2ô‘è‘ÝXô&H\Ê)iàsQä¾ÂU'º¬~pWÆnCQÂê’ªW(Ÿ=PÕw=)êJµ9ú“Áhšn;KoQ�ZÚ�ò�ÀZ„ÿø.½"K¯-KÉmg¯qʲÔá:ô @Vð –†ø’xÉÂOJi˜p†¥7³®÷CU*CÒ<³Þ3Ä’¦¡~å®fk�>sê:Kb²nyvñ/û™—ÞÑÍòM!4à«|1hŒmM�_ ~2™D; dw?Á�d@íE9<ï™&(|p-ÂDÙk ‹[y&Ìápÿb3!B ""fzVŸÞœšI ÷(2êšg#¥kl#E¡ü²tż[ô¯ñVv·a¶€J+�îyðùeqùZî¡b6:c‹k@HùgŠõ*ÙµËÿ² ÍcQ†Š¬ ²j”Y£‰¦zß"GK÷ §C€°}�­ùýìwìÐØü“ðŽ�ÆÉðçøbîts›;†­‹˜ÇBUí‡ïù—¯YÍon™èŒå¡@7}§…y³�©Š�Úª0Ã7ÊQDø`{¢ àDô�dÙJœýñ©œzÚ_³:ˆ7‡Ã'�-ÌÓji¤N­_ }ë¾:U*n+qóÇVÖ¿ä‡*ÆbVæ€f¯óP’[«%/Á?WÿîhCŠ“3;ø:sjä›C.~>´Ë„Ã`FžÞÖɤ‘ý8ä~?ÈjÜ�üæqä  ýüšûâOEÖðKüƒ}Uy Ôÿ],&ÉHu~¾T7ÐÈÅ=�òéSª‰I��SïpœŸ<�YN"ôŠbûjæøk‰ ¤4¿óÇŸ)æö§K@™§¿Ø]¢%nÐ3…‹ZåDŽÿË�{s`õ-Q4a«õ¨ëÓRì�¬Új~ô9¼i@ŒonÝØTF.tÛ&HøÈê ¦Uþ-:3ÎâOäÎòu²adñ]š;×îp9ñ;v#�ž•gê…B}»¸ëØ-ƒÉ‹WbÁN€ \’Å„œQHë€�P…Kýíœÿ ":Q_A�Xò6–~Æâ1M ”Ö¨4Šʺ ˜ÒßPŒtÕcNⱫ²èIÉ¥Hë-:b‡“$OU;ãìßô‚„sÁ´Z]K~½u2¯Z¶MüZÃè§1?WØ}bÄQ<-¶ÛNö¢÷Ü ƒž­UÚ1Þl‚L=öþ“#âô vÂŽžý´\×Ðó$íÜðÙºß[ˆ½¨ Œ½„›+À+s$;³“ð$3ç,³�ÅV`Y(f¨¯FïÈ#â5�ÕX‡<9'.§Lµ=�0_Ì—¿ë>á) 9ËL 6¡©ÿµB�“p;€ß™¼cÍ_ƒr#�ŵƒ«ü±¶ŸuƒÃ! jÚYXùE ¥±þÁ¯%E&¯ «ê¯·¹[€ôh꿦à‡ÝvJ_k"b�¤7ó<¼Pµ¦eL*½­éñ¢JqHÎ3[-har�ÒÉš®xeiú¤HæwüÕ¯>\u, z�CŽd¥ÿ”[£Ûå‡gçÀhñŽ­ õ*´“.—|é·ß6ai–1i|»ŽMîeëÒ-O+- �!%%-¨üЋa,bv4Þ/ôòʽ?;©ÃSü„æx|ÇnHuÓd´¥·ß6¨ô±|HÄÎìƒf¾3?-c�s¾†ù£ 9†Û@™«^nŠåþ2h{óþÖ¿¤ßUB.B¹m‡L›”ÊAGbÂàå¿åŒ†+#DJJ9ÿ5xà¯.gZ׋ЄRÊMS�·j[Ö¥5ö�Úèþãô— ë,+ºôùÁôÃ\3øŸ€j.›k˜Z6Ü7‚cªA9H±÷¿ ®Ç¦S¸êÁù-¬?*`xä·9 hYåçRdÊrPÃæà–³ÐG‹ŠZ¬lŽu'�JíÈŸµ™Á8zPÞP³§ [Í»ÓíõLñnwù7¦úkqI�ª%ÙeFc'Hoð¤,ŠíÜÎ7†Ä=´JæzçY·ÏñhM6€µü ÿ¡Úò¢Ýˆ‘^³¥py\%ôÏ''Þ€þƒÉǯ?(Ú«%Ÿá¹ñ´‰¨ã ÔÙ÷7¤”WRædáöîTµ·#—-ÍsI‰¨l´¢3?kùýqÏÓÛÓe϶ŠÇp�Òîíy"‚ш\[�“Õ\]w\Œòê¸�Ü*íÚi&Ï’�áØ8µC Ž­Þ9dõžË©¿¬ôèÅ:–ƒÔI‚ÚwˆÂÖ?çwÜ‚¬QÓZãò'Êú&ô²4RªƒÜÁ:Wèç‡-v’wô�nÊâÑv3.áåf„\�\-i_Ë/ÁÚ¹Z³½jßuõO�óÒ6§î�H‰3èŸkŽ–b" kŒ‡µæ'‚»Ó÷ç¸NÓ õÇvN¢&üUÐð�ò9P­Ú3¢e�çÉÔXi_mSåkÈP~…?;•˜=d£Öü¨É±MàiôZŸümiÐnY”(C)‹T¼Ê¼¾‹�ƲJ´«Û¹õEe‚fëfàÌÌõ‡Á8 ·T_¹•«nw~�L¬¯AX…û~k½÷Ý1zŠtdó ãñÚUù&�Þ5[­“o°m³?½OÙ§W4§Rngk�t2ô¦‰ d{/ˆ×ƒ„ÀWþI'm${írX+Ü}i•ãœI�}“µJ4†’” C#eß×ÔR�ˆ5|çýú ÛwÒ ¿=Lázù�tÞ8Ø‹Ž“ô?YõýwWònrAjuQJ/:¢L^àwåĈùc¡.ð;J^g¥jìVP£+´ÔC¾õ«wJ«ÀìÛ»‰#ìÎõšÕ8ÄÉ Y1#³t¹—卸ÿ6Uœ¼ÎâÁx^IUs¡ÃÎðØ\µF/عTRæ6ÁˆÕ'fDhhóôU¥¢GHƒ—¥ÿáb_]‹®ð|õÌ;M[ÊÀ~ïE²4ÔØŸ–¥€Áu�I´Aѵ#¬–²Go¶çé§£ˆ¶P”ÙGÃVEN„¸ÑfMBl;cÎCh°ýþ²RlG÷Um§å•Ï»Èfü8¶Q`o¼¼:騿}Z¸.årTËd©ÍæÍéø Ö¦I­,ݽ:Ò¶Àw”rEÁLkå™I§§DecC˜—)óÅsÀ�¥Â5dR_p}ÐkÎO#Û[¨áÌ%çáÃ#5¿MM~á;™§éfG¬�ö[’H?Ä·Ÿµ°m.È(‹î|Ÿ.0HL�§‚ÁGÖ!±™²ÏèˆéÉÅ45ÁäÏÛ˜{â\¶)!Ðó혽´8¢1¬§ƒ¤‡ö}›ãQ[Œ\?ø°<÷jË,�e ù:{�«Sýù ÒÈÓspŽ£Uæûõ6ðÖ¶çQKÄ+æUí¼{i™�¡ÿ¥ åaÉQm¼`ÉÎÖåÆ~à„|°ü‹s|ù@–*Í&ïÊò[½NÉ’¹—|½asÁ™^Zø„.$ð@NÝ#ÝJ�§4Äótɘ�@¥¤Nv‚©|ÐÑBDñRÏÙŽÚiïÖ[’d’TO­ÿ�tyª™wjmŽ>8µ•‘Ó,ùdÔ,HóÕÿ¯?Æõ¯E6Îù ‹ñ´Qp -ôí7·íkø:Îü+Zþ�¡[°°VÚ|y3á•—ýñ4ð—Õeí¥žØ‚Ý ƒ’ñ�7£ACfG—g‹‘ÔuR¹w&;-d’Q·±‘Brq\b3šÅâ“Éèn¶fOÊJ:T´rª0çÆhˆÝøû{¢�‘ȵ µXM~ rû€ ¡¯§^R Šœ>ø¬PQWÅÈ;¼öóBã½’!)ùº±íߦ0äåNOþŸØŸó„þ8šªŽÁZ ¦A{uÝ"Ý}x  ø•Úuþ/Þçïà·² 0N°|mÑ®,Ñù�+‹æÀ¼×Ek¬h¦Tµváª}1B çè‰5PFX_éu¾×C¯ £ZbN ].©±Às—ÌS¸³ ¹gYÑ88`&É�€$OS"Ô…¸wèïˆ<+<‹=#Y´¬Ñ?ù™ëgæp;;ü/ÍÖÒ%!ÞŸzAÏ›‚Ö>W¤tJ!h³®»×]Ã^˜‘%Of„K¢ëäeb«*%áÓ*©RìÝH,L–0 „–ª ú ûÕkpnß6\á^Ÿ Ô-»èGšê}X8¤ól\x[‚´'q¢RüÕÁP\�­†Ò‚wãÌô¡H,éQr¦ã”ý½È¹ÕÚsácvÀÞ5ÏK–q^¦úˆy|Áð²e°ýtþUzN/Ðîmoê&@÷)VF}ϪM­•ØØêœ4ø ¹^:ŠxÛÁúÛ"PÏih< ~9-4-”TY¼a˜Ïã °f�×½ùšµ‘~šFŒ€¦ äKññÕƒ¾+Äç>�‚2ÚÄ«®Ym}¿NÈwOûÿ2q¦%èrÿ¯Èç (Ð�­CLâò£°Gçòƒ·•p�â“:ø+Uü~7·hþÎ[½lãù¯n¡j;&Qn�AUŒ€&œ ͈�‚ø…¡õ,æâÁ·ú,šC’“½•bÂ÷1Цl�Te}ÝÛ,!´�ž9ëŠ#ü!Ì@£�(äú¹k¸˜]–“ƒsÍGj¶{¦‚«usèM}æþÙXfó0f4Ì<Êñ±”kãóhÛ﵊"aóuú€M484^mz"£�ò®û[+R[÷-âåÁf%B™ÎáwÑqÅŠ†—ý6äJ§‚`ÿæ4€…MgnP-e÷|;L`ƒY¯è¸ËÏÌ=óí{ÚU FØ þ s¢añæ…s ¼ö©ké§øí&�t˜Ur馮ü\Ž#ñŒ,m‰Nj²ÑbRоd[»òŒ5É4D<ˆOSˆw^[Z¿L¼" ï�7x$Æv9ÒT3©ÈÎ~(.6;ÊNˆÃ,J�²d¨Ï…à0'?¯pÀ`·?›Ë<)Õóäz€&oay šžt õÖYæíCª’Ó�{!»Åˆ{ã 7Æü‰>p.Gr'(§^Å`SEòŠùúT^ЗYGŽÄ Vôœ6Ø«ŠËºa’°ÞªŸu^¤ühQ³’ ãÄ�=Æl<RUý$K±—Ї¤Þtño A ¨ÔÐ!Eš`) aÓƒâêMjwB2·}\Þ©/žõ£>b¼«Ïˆ3 bXŽ…6¹nUsÀ©Pb~NðÑDYG´‚�Wȇ3îëj¬ïójMÒ{f·#GRqª q=T¡ú�ÑÚ�”Ô˜j)ÔE΃—_b×i‹©Š+øQÔ×GÚ¼ =·þ¿tvkëG¨¶vÒ§ß‘@{ ªá þRº¡TEtЦ@WÜ¥íökÌ„Rº|‰¸k•UƒŽ«ˆy’úu�lˆù,á™Yᫎ–3Єډq,зt²àµ`Ô»\? JŒ�aëa_Û@¸Y(©=¨@;e€0õXzÿBÇbxv¥q›ùsÔ]A? ³Á˜—FfîÒ^ ç¿¡ hšÕ»Xê9Ø©›ÄÜ{–ÆmÌ47Í“q‹ÍËÜ\PÃÒ“•ÜâQ#�+íi£ž#lôó¡ÛZj¼EåC7( R'Ô$'™ëE*®E7§Ç]L2Î�5X —ïeŽólCˆLc•šÃø¦,o[ð}Þ¥4¦±"‡ûø Ã]\µÝ…pTì S³¨GM7÷§¨¹µ_ Šk[á-50zÉ´sˆ,H·÷Çø[äŸèþ{$õGü›Y’Ȟܹy å·Ãt&n–b˜oáv™‹¬pš—ƒEStœa)ì^È£Õ0‚€Pç¢)µ i9¼d3?ÅGœ!ãË5?3µð‚á4TzÆ?4¨ïéŒ_2«ŽÅôªó°ÏæoÔ¥m±‹âƒhbF…ù[íèË”Af‹ºmú…‚ óiCmÅ ð€é|§ýʤÜyh;—Ê»kyƒ„i6mž=E²½èt§.Ö¦ïnçT#slVZ@·6%øä(‘ËMU ®7æùÞ�ÔrÄŸÅg²‰vÜ –n»êä1ô úìçtç–›÷bЉ¬®†·7ïIØÎ1ñABÍ€Á¹•�›æ-‰¥÷ª']X—)ˆÌô5`•f\Ǽ¨dGøýÎ[!­ð”£òÔ^™ó*ÿÛã¢ÛÖ@ù§aUSt“Iž†A>4jþAMÇsøû[ANÃP¦€³²y;ïãó=ð¨Ñ|d0 8§í–¿O¹TOkñ ¥î,�Ò’à•úl?Üy¦3t>&ª+Dk~¹Ýí%‹Ì»v(z…‡ä™šÏ’÷ûÐ xíb2XzëZOë‘•°Bw"œPÅ£Œ(ðÞÊÝsÓŸNÑKS^â8Ä~w’ÓøÈJÈÓðϦ�Nl?p‘ÏF'A(®ãÙ =áÔe�§)¡YnB?ÜI=z®Åˆ3@ž<)‡ywkLMr0ˆ w| X ÷Ý?€t±#ýÂñÈ›í,•€**ÕN˜ 0{Ñ·ÙCpä|£î²E!‡±çÇgÓ×ÈúSár�€¡äLš“lpzÔ__â�SØ9ª·5à-¿+´#Õ|$M“o<ŸŠNwãÙÇÏ[lþΘø™ „PËul ÆÛ¥ä”PçIK{K)OM=“î†BšK"{f"CwTõVøD8­j/ã”aFÄS{¢*|¹+U™g-kIIo¥zó‘V?ßÑžƒÑéÌÙ«èUúÏ+>£ô…?3Á,¯Ÿ”ÜðÛ¼í“Â*|ª=G›õ¡O1o“,ë…ÚXÑ+—DzHÈ =sí�¼àPÌ\<óå=n"©n9í˺²Ûcp¯l“ŽåM(=Pt©ŠÂS ´!MÏÒ–~qèæd#ôßÅ6““†-ëy(›�¬€žœ¬?C>�‚uœDuÉ™aÞ4·Áž©Ñƒ¾¬ò'”~ŠüÏÐvÆwƈÆuÆxÆ|Æ~ƀƂƄƆƇƊƌƎÆ�ƒƔƖÆu ¨> ' •Ò–�™ä™S³ÝÃÎØiÙà Ž Ùa Ÿ=!): @³DIG1H[ J‰Ms ½5ÌÆÌõÌ;ègoo°oê�J›Î   — š‘ÙÍŸqC—ëðòöü$8L`…ãA× +×"_#ç#k$ï$w%™%±%ö%&j&…&4'U(V)õ)¥*U+, ,,,, ,&,,,2,8,?ò,>]V]¥]½]Ö]�d^núnMoiop;cpì8%3ˆæŽd�Á�R‘n‘"’“±“¤”ö”4–D–^–š–;—=—A—E—J—P—f—5˜‘˜T™Û™7š9š=šBšHšmšä šž�0žô¡Z¦»©v«±­ø®S¯è°–±U²m²”²H³�³”³™³Ÿ$³¸7¸[ ¸¼¹± º¸»Æ½6À•ÀÒÀòÀ ÁYÁ¥ÁÀÁgÂÁÂÃ#ÃÔÃUÄWÄ[Ä_ÄdÄjFÄ*Ð)Ò;ÔÿÕpÖôÖw×å×ì×ï×õ×üר*Ø1Ø4Ø:ØAØHØ}ØÙ£Ù¥Ù©Ù­Ù³Ù¹Ù�݆ õ+øEøWøiø‡øîø ùxù§ùÄùú2ú›ú¸ú#&û‚ã±›K b f l o u { � ‡ � ” › ž ¤ ª ° µ ¼ ¾  È ì vÉ,¥qã=Zí \™¬¿AGMT¢ï<‰Ö#p¼·%,Cchjosx�¦¼ÔÚÜàæ ¿ø\°IœnBGceimqx¿IÒEp0#6#>#ð#6$`$z$—$H%è%C&À&'j'Ý'÷'(Ë(¬)±)¶)¸)¼)À)Ç) *B*{*Ê+W,ã,Z-’-¾-Ù-÷-¨T.è8ÿ8.9æ9Ð:Õ:Ú:Ü:à:ä:è:ì:ò:æ;4<™<$=Î=ä=„>ï>ó?ø@ý@ÿ@AA AAA,ABAZA\A`AdAkA©ABcBÅB(CÎC/D•D[E`EeEgElEqE‰EŸE·E¹E½EÄEUF÷FéGHH HHHHH#HÃHÈHÊHÎHÓHÕHÚHàHçHîH’IÅIOJ}KƒK†K‹K‘K–K˜K�K£K©K«K¯KµK¼KÂKÄKÈKÏKsLM}MN NNNNN%N,NÐNZOtOPiPMQnQƒQ›Q³QËQäQùQR)RARYRsRŽR¥R¿RÙRôRS&S@SZStS�ˆSi3iÑ=iks¹st„turu¹u'v�vBwÙw,xzxÍxAyŸyUz³z {[{é{.|_|Ÿ|Ï|!}Q}�}À}~1~Ä~ô~3_ÿ=%„t„¼„?…Á…-†i†׆8‡ä‡vˆ¾ˆ2‰�‰BŠ ŠûŠC‹¢‹ë‹Œ\Œ�ŒãŒ�Y�‹�Ì�þ�–ŽÇŽ �¯�h�ƒ�¡�R‘Û‘ö‘’Å„’ʦã¦ö¦&§D§•§³§c¨v¨•¨ý¨©‰©¨©ª0ªšª¸ªeH«V¶o¶�¶> ·¬¸Æ¸ä¸6¹�»›»´»ã»š¼˼$½�¾ ¾¦¾¬¾Ò¾Õ¾Û¾â¾è¾ê¾î¾ò¾ö¾ü¾O¿k¿†¿Å¿ ÀþÀ@Á‡Á¡Á ÂK­Â^ÃâÃeÄÕÄ%ÅÚŹÌëÌíÎðÎöÎüÎÏ>Ï^Ï~ϞϾÏÞÏÿÏÐÐÐÐÐmОÐÅÐìÐÑÑÑ#Ñ)Ñ/Ñ6ÑÛÓ÷Ó Ô°ÖcبÚÛyÛ Ü/ݡޚàÎàQáÓá@â]âã[ã™ãåã7ä„ä‡åÔåæaæõæAçÏçìç+è1èKêQêTêZê`êfêlêrêuê{ê�êˆê«êËêëê ë+ëKëkëŒë“ëÄëëëììì"ì(ì/ ìsï�ïÅ"ïÔ ÷ú¹ú_û- ýI  ! @×»!3 R z è DðKóQ`“] i¼ I½Ñ/ˆ× Ž|™K—Õ!sÀsÀMá-»Ø!'.# & , 2 9 _  Ÿ ¿ ß ÿ !@!C!I!O!V!]!`!f!l!r!x!E!I,e,Ë,}0Ð1¯3¼5B9°9œ> ?6B’B“Cï C“Eï EVG²GI'L{NÌOöP´RÜS7UmVhXZ²\(^‚_Î`na3b)gyg®g8hÁh2iPijYj™jëjAk”kPl£lål8mÐm"n¸n×noPo¦o`qfqiqoquq{q�q‡q�q“q–qœq£qªq­q³qºqÀqÂqÆqÊqÎqÒqØq)rEr…r}s$tƒu–vwæwKxÑx¯y{„{|w|ª}ù}lÈV€à>�‘‡à‡ˆ™ˆ‰Љ¨‰\ŠyЏŠÕŠ)‹G‹þ‹Œ_Œ|ŒÊŒèŒ}�š�Ú�à� �£�©�¯�µ�»�Á�Ç�Í�Ð�Ö�Ý�ä�ç�í�ô�û���� ����~�š�¿�‚‘)’‡“ˆ”ë”N•ƒ•–Š–ø–—Ê—ç—&˜C˜—˜µ˜l™Š™Í™ê™+šIšÞšûš:›@›Q�W�Z�`�f�l�r�x�~���‡���“�™�Ÿ�¥�¬�¯�¶�½�Ä�Ë�Î�Ó�×�Û�ß�å�Bž^žŒž¢ŸV  ÷¡£|£¤Ã¤&¥Ë>¥<«Š«³«"¬ˆ¬5­�­Å­:®˜®K¯¨¯ܯK°§°X±´±²V²–² ³i³ ´~´Ø´'µ\µàµc¶жî¶¡·¾·þ·¸n¸Œ¸A¹_¹¢¹¿¹ º)º¾ºÛº»"»5»G»Y»d  Ÿ<'þ”<–ЖŒ™â™O³ÛÃÐÌØiÙ݃õЂ Å _›3!): @¯D;G+HWJ…Mq½/ÌÂÌóÌ9èeio®oè�H›l ƒ%&v&9] ]É]ënYo)p^‘“•”P–\—T šÙ°û±…²¸C¸®ÀrÁÃÐ9Öå÷Søeøwøüø£ùµù"ú©úÔ Iùò ‘Z$ˆ$e'”'(ñ)-*¸-è-�89‘<Û='iÙs’u¦xØ{N|¿|A}¯} ~ä~S”„M†¢ˆêŠ�‹ Œ|Œ�y�ì�¶Žb�’�Õ‘’„¦ò¦"§5§¤§r¨…¨ ©˜©!ª©ªP¶~¶¦¸Õ¸s»Ð»¶¼:¿©¿cÁ-Â)ÃÅÔÓÔ¦àLâKãÕãsäÃåPæ1çÛçlï› ï^ cl"㈇¯¯<ÇB,q,…g>iHjÚj‚k‘l&mnÅn"rRr퇗‰iŠÅŠ6‹ ŒkŒ×ŒŠ�w�§�[•—×—3˜¤˜y™Ù™8šëš;žk ž—«©­µ¯o²4µÝ¶®· ¸{¸N¹®¹ºËº++++++++++    '   '++   '( '             '                 c   › ž•ÝÑ£uG�(<PÐ.Ãý©":#Â#F$Ê$S%�%É%*&�&:']B]�]©]L^mo‚o>‰‡]Ž×� ‘‡‘/“½”ü”:–v–Ζ —™‹™à™¬šg�ú�½¡#¦„©@«{­Á®¯±œ±&²W²¬²M³÷· ¸“¹wº»N½û¿NÀÖÀöÀ$Á©ÁØÁÂÙÂ;ÃÙÿϸÑËÓ¤ÕˆÖ ×�×ËØhÙÝ‚õÃ÷ ø-øžø?ùÛùIúÏúþΟ ŽD‰r!tœ¯ÄlºT¡î;ˆÔ Ï\%×tÈa´4˜×aê1!X#;$d$®$Ž%{&p'¸'ß'.()Í) *Z*“*â+o,û,˜-Â-.\8¸8ê8E9: ;þ;:<�<(=ü=œ>? @ƒAÁAB{BÝB@C­DÜEmF9G)HIªIÝIUJçK‹LƒMDNèN^OŒO+P�P˜hŒi˜rtœtuÑu§vñwåx·yËz|w|ç|i}Ø}I~ º~ƒÔ„W…Ù…�†P‡Öˆ¨‰‹»‹5Œ¦Œ.�¤�ŽàŽ�C�l�¸�¶‘ß‘+’b¦¨¦̦[§ʧ¬¨O©¿©GªϪ1¶Z¶¤¶‡¸°¸û¸E»…»Ÿ»ú»â¼o½¿S¿o¿Ý¿"ÀÁ‹Á¹ÁcÂvÃúÃ}Ä=Å.Ì¿Ìð̵ÓßÓ2Ö;ØÚÑÛéÜÞÆßæàiáëáuâsãýã^åìåyæ§çè6èMïwïV÷êù}ú#û›üÈÛ›e] ’ \—i«u�a3G#¦(±¯9JØe“ðb#,M,ÿ/¦1s3€5á8ï=àA=C=EG¿HâK?N‡OºPnRŸSîT.VXÏY÷[’] _g`/aÏa{fÇgQhÚhiirjk%l¼lQm�nðnfo«or-rârèsXuvývow”xrypzÄ{}€—�é†-ˆ±ˆ4‰À‰‘ŠíŠÔ‹4Œ”Œ�²�å�W�‚�'‘í‘]“K”®”•›•–¢–.—ÿ—[˜B™¢™šaš›E›žFžGŸ Í¡ ¢â£†¤é¤‚¥”ªË« ¬Ý­°®ô¯¿°̱®²�³–´tµøµ{¶·Ö·3¸¹w¹×¹AºóºÉ    “ –�ÕÉ›m?“èíðôø  4H\�ß=Ò&Ò"Z#â#f$ê$s%•%¬%ñ% &f&€&0'Q(S)ò)¢*R+, , ,,,,#,),/,5,;,:]R]¡]¹]Ñ]‰^nõnHocop4pÕ刈ЎàŽ_�»�M‘h‘’“¬“Ÿ”ò”0–@–Z–––8—;—?—C—G—L—a—1˜Œ˜P™Ø™4š7š;š?šDšišßš™�,žï¡U¦¶©r«­­ó®O¯ã°“± ²K²Q²h²�²E³Œ³‘³–³›³¸3¸V¸·¹­º´»½1À�ÀÈÀÎÀîÀÁUÁ›Á¡Á»Áb½ÂÃÃÑÃRÄUÄYÄ]ÄaÄfÄ$Ð#Ò6ÔúÕ[ÖjÖîÖr×â×è×ì×ò×ø×ÿ×&Ø-Ø1Ø7Ø=ØDØyØÙŸÙ£Ù§Ù«Ù¯ÙµÙ݃õð÷'ø@øTøfø„øëøùuù¤ùÁùú/ú˜úµúû~ß­—G ^ c i l r x ~ „ Š � — › ¡ § ­ ³ ¸ ¼ À Ä ç qÅ'¡lß9UéW•¨»=CIO�ê7„Ñk·²!(?`ehmquޤºÐÖÚÞâºóHW«D—íüj?D_cgkos³¹CÍAl-#3#9#Î#Ý#ì#2$\$w$”$C%ä%>&¼&'f'ž'Ø'ò'(Ç(©)®)³)¶)º)¾)Â)ñ)*=*v*�+ª+·+Ä+Q,Þ,U-Ž-º-Ö-ô-¤.ž8Þ8ä8ü8'9+9â9Í:Ò:×:Ú:Þ:â:æ:ê:î:á;/<•< =Ê=ß=>Õ>ê>ï?õ@ú@ý@AAA AA*A@AVAZA^AbAfA¤AB^BÀB#CÊC+D‘DXE]EbEeEjEnE‡E�E³E·E»E¿EPFóFåGýGH HHHHHHÀHÅHÈHÌHÐHÓHØHÜHâHéH�IÀIKJzK€KƒK‰KŽK“K–K›KŸK¥K©K­K±K·K¾KÂKÆKÊKnLMyMN NNNNN N'NËNVOoOPdP'Q4QIQjQ€Q˜Q°QÈQàQöQR&R>RVRpRŠR¢R¼RÖRðR S#S=SWSqS‹Si.iÌiMsZsgsµsûs~tunu´u#vŠv>wÔw(xvxÈx=yšyQz®z{V{ä{*|Z|›|Ë|}M}‹}»}ü},~À~ð~/Zú„„!„o„¶„9…¼…)†d†Ó†3‡à‡rˆ¹ˆ.‰‹‰>Š›ŠöŠ=‹œ‹æ‹ŒWŒˆŒÞŒ�S�…�Ç�ø��ŽÂŽ�«�d�€�ž�N‘בó‘’Á’ަƦݦó¦#§A§’§°§`¨s¨’¨ú¨©†©¥©ª-ª—ªµªR«a«R¶l¶ж:·¨¸øá¸2¹w»}»—»±»Ü»à»—¼¼ȼ ½š¾�¾£¾©¾ξÒ¾ؾÞ¾ä¾è¾ì¾ð¾ô¾ø¾>¿K¿g¿‚¿³¿À¿ÀàÀíÀúÀ<ÁvÁƒÁœÁÂ9ÂF¨ÂKÃXÃÜÃ`ÄÐÄÅ ÅÖŵÌèÌêÎíÎóÎùÎÏ;Ï[Ï{ϛϻÏÛÏûÏÿÏÐ ÐÐÐiЛÐÂÐéÐÑÑÑ Ñ&Ñ,Ñ2ÑÖÓóÓÔ«Ö^ؤÚÛtÛÜ*ݜޕàÈàKáÎá;âXâ ãWã•ãáã3ää‚åÏåæ\æðæ=çÊççç(è.èHêNêQêWê]êcêiêoêrêxê~ê„ê¨êÈêèêë(ëHëhëˆë�ëÁëèëìììì%ì+ìnï‹ïÀïÏ÷ ú´úZû(ýDÿ;Ò·æ ó  N u ä ?ìGzïLÿ\ŽýX d¸D¹Í*„Òˆ x”G“Ño»n»üHÜ)¶Ó$* # ) / 5 \ | œ ¼ Ü ü !9«9˜>ý>2B�B�CêC�EêERG­GI"LvNÇOñP¯RÖS1UgVbXZ¬\"^|_È`hab gg$gsg§g1h»h-iJijTj”jæjÄFÄLÄTÄ\ÄbÄhÄnÄtÄzĀĆÄ�ēĚĠħĭĴĺÄÀÄÆÄÌÄÓÄÙÄàÄæÄíÄóÄúÄÅÅ ÅÅÅÅ%Å+Å2Å8Å?ÅEÅLÅRÅYÅ`ÅfÅlÅrÅxÅ~ńŊÅ�Å–Å�ţŪűŸžÅÅÅËÅÒÅÙÅßÅæÅìÅóÅúÅÆÆ ÆÆÆ!Æ(Æ.Æ4Æ;ÆAÆHÆNÆUÆ[ÆbÆiÆoÆ   — š‘ÙÍŸqC™ëòöü$8LÌ*¿å‘""#ª#.$²$;%™%±%&…&6'ï)Ÿ*O+ÿ+,,, ,&,,,2,8,]>]}]¥]4^ûlúnio%Úp‡ˆDŽÕ޾�ô�n‘“¤”ø”6–^–Ê–=—A—E—J—ˆ—™‡™Ý™9š=šBš”šO�â�¥¡ ¦l©(«c­©®ø®è°˜±²O²U²”²J³�³”³™³ó·¸{¹_ºg»6½ã¿6ÀÌÀÒÀòÀ ÁŸÁ¥ÁÀÁgÂÁÂ#ÃÖÃWÄ[Ä_ÄdĻϠѳӌÕ_ÖpÖôÖw×å×ï×õ×ü×#Ø*Ø4Ø:ØAØvØÇØd٥٩٭ٳÙýÜ~õ¿÷ó÷+ø‡ø(ùÄù2ú¸úûÿúÊ›{ f o u { � ‡ � ” ž ¤ ª ° µ ¾  ì v,qZ \™¬ÁAGMT¢ï<‰Ö#p¼·%Xcjos¢¸ÎÔÜà ¿ø\°Iœ”B]eimq·¿IÒi.!0#6#@#/$8$`$—$v%c&l'¢'Ý'()¬)±)¸)¼)À)É)ó)B*{*Ÿ+¬+¹+Ê+W,ã,‹-”-¾-÷-X8¢8â8è8)9.9:Ð:Õ:Ü:à:ä:è:ì:ò:æ;6<™<$=ä=„>ï>@ø@ÿ@A AA>ATA\A`AdAkA©ABcBÅB(CªD[E`EgElE›E±E¹E½EÄEUF6GûGHH HHHH%HÃHÊHÎHÕHÚHàHçHîH’IÅIQJ}K†K‹K‘K˜K�K£K«K¯KµK¼KÄKÈKÏKsLMN NNNN%N,NÐNZOtOPiP)QgQ•Q­QÅQÝQ R#R;RSRmR‡R¹RÓRíRS:STSnSˆS€hti€rOs\st„tu¹u�vÙwÍxŸy³zé{_|Ï|Q}À}1~ô~¢fƒ „„¼„?…Á…i†8‡¾ˆ�‰ûŠ¢‹Œ�Œ�‹�þ�ÇŽf�?�h�¡�²‘Û‘’^¦’¦ʦD§³§•¨8©¨©0ª¸ªU«-¶V¶�¶ƒ¸¬¸ä¸A»{»�»›»Þ»ã»ż˼k½ ¾¦¾˾Õ¾Û¾â¾ê¾î¾ò¾ö¾þ¾@¿O¿k¿µ¿Å¿ ÀâÀïÀþÀxÁ‡Á¡Á;ÂKÂMÃ^ÃâÃeÄÅ%Å*Ì»ÌíÌðÎöÎ8ÏXÏxÏ˜Ï¸ÏØÏøÏÐÐÐÐfÐ¿ÐæÐ ÑÑÑ#Ñ)Ñ/ѱÓÛÓÖ#ØþÙ¹ÛÑÜûÝ®ßÎàQáÓá]â[ãåãFåÔåaæ�çìç+è3èKêTêZê`êfêlêuê{ê�êÅêåêë%ëEëeë…ëŒëåë ììì"ì(ìIïsï>÷Òùeú ûƒüìÿ°ÃìƒME è õ z DQ“]iI/ Ž™—!2ÀM{Ø!'^& , 2 y ™ ¹ Ù ù !9!C!I!O!V!`!f!l!r!x!,I,ç/Ž1[3h5É8×=ÈA%C%EèF§HÊK'NoO¢PVR‡SÕTVX¶YÞ[y]ò^N`a¶abf gg®g8hÁhPiYjëj l£l8mvn×nIobo¨o`qiqoquq{q�q‡q�q–qœq£q­q³qºqÂqÆqÊqÎqÒqþq)rÊrmsÐs@uv†våvWw|xZyXz¬{}›}ý~€�цu‡‚‡ˆ™ˆ‰¨‰yŠÕм‹Œ|ŒèŒš�Ú�â�£�©�¯�µ�»�Á�Ç�Ð�Ö�Ý�ç�í�ô�û��� ���S�~�‘r‘Õ‘E“3”–”ù”ƒ•–Š–—ç—C˜*™Š™ê™Išûš:›B›Q�Z�`�f�l�r�x���‡���“�™�Ÿ�¥�¯�¶�½�Ä�Î�Ó�×�Û�ß�žBž/Ÿ’Ÿ µ¡ˆ¢Ê£n¤Ѥj¥|ª «-«³«ˆ¬Å­˜®ܯ§°´±–²i³~´\µàµc¶î¶¾·¸ÿ¸_¹¿¹)ºÛº»A»S»e»l»s»z»�»ˆ»�»–»�»¤»«»²»¹»À»Ç»Ï»Ö»Ý»å»í»ô»ü»¼ ¼¼¼!¼(¼/¼7¼?¼F¼M¼T¼[¼a¼h¼o¼v¼}¼„¼‹¼’¼™¼ ¼§¼®¼µ¼¼¼üʼѼؼß¼æ¼í¼ô¼û¼½ ½½½ ½'½.½5½<½C½J½Q½X½_½e½l½s½z½�½ˆ½�½–½�½¤½ª½±½¸½¿½ƽͽÔ½Û½â½é½ð½÷½þ½¾ ¾¾¾!¾(¾/¾6¾=¾D¾J¾Q¾X¾_¾f¾m¾t¾{¾‚¾‰¾�¾—¾ž¾¥¾¬¾³¾º¾Á¾ȾϾÖ¾ݾä¾ë¾ò¾ù¾ÿ¾¿ ¿¿¿"¿)¿0¿7¿>¿E¿L¿S¿Z¿a¿h¿o¿v¿}¿„¿‹¿’¿™¿ ¿§¿­¿´¿»¿¿É¿п׿Þ¿å¿ì¿ó¿ú¿ÀÀÀÀÀ#À*À1À8À?ÀFÀMÀTÀ[ÀbÀiÀpÀwÀ~À…ÀŒÀ“ÀšÀ À§À®ÀµÀ¼ÀÃÀÊÀÑÀØÀßÀæÀíÀôÀûÀÁ ÁÁÁÁ%Á,Á3Á:ÁAÁHÁOÁUÁ[ÁaÁhÁnÁuÁ{Á‚ÁˆÁ�Á–ÁœÁ¢Á¨Á®Á´ÁºÁÁÁÇÁÎÁÔÁÛÁáÁèÁïÁõÁûÁ ÂÂÂÂ%Â+Â1Â8Â>ÂDÂKÂQÂXÂ_ÂfÂlÂsÂy€‡Â�”𡍮µ»ÂÂÂÈÂÏÂÖÂÜÂâÂéÂïÂöÂüÂà ÃÃÃÃ#Ã)Ã/Ã5Ã<ÃBÃIÃOÃVÃ\ÃcÃiÃpÃvÃ}ÃÉÃ�ÕÛáçíóùÿÃÅÃÍÃÕÃÛÃãÃéÃñÃùÃÿÃÄ ÄÄÄÄ'Ä-Ä5Ä;ÄCÄIÄQÄYÄ_ÄeÄkÄqÄwÄ}ăĊÄ�Ä—Ä�ĤĪıķĽÄÃÄÉÄÐÄÖÄÝÄãÄêÄðÄ÷ÄþÄÅ ÅÅÅÅ"Å(Å/Å5Å<ÅBÅIÅOÅVÅ]ÅcÅiÅoÅuÅ{Å�ŇÅ�œŚŠŧŮŵŻÅÂÅÈÅÏÅÖÅÜÅãÅéÅðÅ÷ÅýÅÆ ÆÆÆÆ%Æ+Æ1Æ8Æ>ÆEÆKÆRÆXÆ_ÆfÆlÆrÆ0DXhÙ7̽"J#Ò#V$Ú$c%%¦%Ü%þ%P&r&'!]L]ˆ]³]Å]z^Ùmçn8oUoÿo%pˆâÓ‡ˆ£ŽÝŽO�¡�=‘Z‘’“œ“‘”â”L–‡–X—˜r˜A™PšКŠ�žà¡F¦§©c«ž­ä®@¯Õ°|±°±;²a²�²)³þ·+¸?¸¥¹œº£»±½ ÀÀªÀàÀÁ?ÁnÁ³ÁK¦ÂìÂøÃÔÏõÑÔÝÕÖgÖÄÖH×Ç×Ê÷ø8øOøaøsøÔøøøeùŸù±ùúú�ú¥úûuÄÐ g´ çJµ%EØõF…£¶�Ü)vÃ]ªö›î é7Rš3†Ü÷Y��"Ç#Ø#ç#B$p$„$,%º%*&£&'a'y'Ì'ë'ÿ'¬(Õ)*(*l*ÿ*§+´+Á+!,®,6- -Î-ä-�.q8Ì8ô89Å9¾;<B<©<4=Ö=n>Å>â>Ù?•AèAEB¡BC»CDqD@FãF~I¹IDJ_LM]M¼NOOgOþOUPùP1QAQüh#i³iárWsds­sÕsTt×tUuŽu viv!w„wxnx¢xyƒy2z—zòzN{Ô{|J|‰|»| }=}{}«}ê}~¯~à~Oáǃ„„g„�„…’…†I†¹†‡Ƈ&ˆžˆ‰t‰Š„ŠæŠ%‹Œ‹Í‹ŒGŒxŒÌŒÿŒ@�u�¶�è�~޲ŽòŽ’�J�x�Ž�7‘½‘ë‘’ª’i¦º¦Ö¦î¦§1§‚§ §I¨n¨�¨ã¨©v©”©ø©ª€ª¥ª«^«8¶e¶z¶#·ޏ»¸Ѹ"¹Z»�»ª»Ì»z¼²¼ ½¿H¿_¿{¿�¿½¿ð¿lÀêÀ÷À)ÁWÁ€Á•ÁñÁ!ÂC”ÂÃUòÃ6ĵÄìÄŻżÓëÓÿÓ˜ÖMØ“ÚêÚVÛ÷Û݋ބà¢à!á¤á"âHâòâGã…ãÑã"äoäpå¿åþåLæßæ-ç¹ç×çèTïƒï—ï¼÷üù£úIû ý+î*Á�ý¦ ð ý F Z Ê *Ò2_Ð5àEhãCïO§þšÿ®nÊß^á_„.ƒÁ ^«\«ê8Ë¥Ã*,Y,m,e0¹1™3¦59„9~>Þ>BxBuCÕCuEÕE8G˜GèH LeN®OàP–RÅSUUVGXöYv\ü]V_¢`VaöaÅfg!gkg�gh�hi:içiDj„jÖj*k~k7l�lÎl"m¸m n¡nÀno r9rMrsustluXvŽvwØw(x»x™y{`{ý{]|e}£}ì}N®@€Á�3‡}‡ЇÓ‡è‡iˆíˆl‰’‰>ŠdФŠÀŠ‹1‹ç‹ŒHŒgŒ§ŒÒŒg�…�Å�^�Ž�¢�K‘z‘’q“r”Õ”8•V•ו[–Ú–—¬—Ò—˜.˜�˜Ÿ˜U™t™¶™Õ™š3šÈšæš&›"žRžfžkŸšŸA á¡ £Y£ ¤­¤¥¬¥Þª(«5«~«’«¬d¬­w­¤­®|®(¯�¯°¯-°�°:±š±ó±J²j²è²M³ý³b´¾´µ/µ°µ4¶³¶ض„·©·é·¸Y¸v¸*¹I¹‹¹ª¹ê¹º¨ºƺ»*>RbÑ/ĵ"B#Ê#N$Ò$[%y%ž%Ô%ø%D&l& ']D]‚]«]¿]n^Ìmán+oOoòopnܹ‡ˆ‰Ž׎B�x�0‘T‘÷‘ü’�“‹”Õ”F––R— ˜I˜5™JšÄš~�žÔ¡:¦›©W«’­Ø®4¯ϰp±Ÿ±3²Y²o²³ø·"¸9¸œ¹�º–»¤½ÀrÀ—À×À÷À6Á[ÁªÁ>™ÂãÂëÃÀÏèÑûÓÐÕÖaÖ·Ö;׺×Ä÷ø/øIø[ømøÆøòøWù™ù«ùóùúsúŸúùúm–Ê ^§Ýr¹¨÷?Ëï9�°…Òl¹S ì‘ùè“à*L�&yÏñLz�Á#Ò#á#<$g$~$%­%ü%–&Ô&['s'Ã'â'ù'ž(Ï) *"*c*Å*¡+®+»+,¡,)-š-Å-Þ-~.^8Ã8ë89¶9¸; <<< <+=Ð=a>»>Ù>Ó?�AÞA;B—BøB±CâCCD:FÙFtI³I>JULþL/M²NIOaOôOKPäP+Q8Qöhi¦i¶rQs^ssÏsGtÊtHuˆuüu;vwVw x@x�xyUy%zizåz {Î{ |D|€|µ|ÿ|7}r}¥}á}~¢~Ú~IÔœƒ „„9„Š„………†C†¬†ë†¹‡ø‡Œˆ‰F‰ŠVŠàŠ‹†‹Ä‹Œ>ŒrŒ¾ŒùŒ7�o�­�â�pެŽéŽŒ�D�o�ˆ�(‘·‘â‘û‘›’c¦±¦ͦ覧+§s§š§:¨h¨{¨Ô¨©g©Ž©é©ªqªŸªúªX«2¶\¶t¶·ˆ¸²¸˸¹G»‡»¡»¹»k¼Ÿ¼û¼¿B¿V¿r¿ˆ¿·¿ç¿AÀäÀñÀ ÁBÁzÁŒÁäÁ Â=‡ÂùÂOÃ¥Ã)ĨÄ×ÄŮŶÓâÓùÓ�ÖD؆ڼÚ(ÛêÛÝ~Þwàœàá—áâBâåâAã|ãËãäiägå¹åõåFæÒæ'ç°çÑç èNïzï‘ï³÷óù–ú<ûÿüáö´�Ï{ ê ÷  T ½ ü ÅMÃÓbÖâ!šÐ �Ñ¡åaœÙQÔR~!}¸Q¥S¥á2¾œ½ù$,P,g,\0°1Œ3™59V9q>°> BJBhC§ChE§E+GjGÛHüKXN¡OÓP‰R¸SUGV9XèYh\î]H_”`Haèa™fgg=g{gõghi4iÙi>j{jÐjkxk.l‡lÅlmªmn˜nºnúnr0rGrîrostcuÇ>ç>Û?—AêAGB£BC½CDvDBFåF€I»IFJaL MbM¾NQOiOPWPQFQþh%i¸i2s²s×sYtÜtZu�uvnv&w‰wxsx¤x#yˆy7zœz÷zS{Ö{|L|Ž|½|}?}€}­}ï}~´~â~#Qæìƒl„’„…—…†K†¾†‡ˇ+ˆ ˆ‰y‰$ЉŠèŠ*‹Ž‹Ò‹ ŒLŒzŒÑŒ�E�w�»�ê�ƒŽ´Ž÷Ž”�L�}���<‘¿‘ð‘’¯’k¦Á¦Û¦ð¦ §3§‡§¢§N¨p¨ƒ¨è¨ ©{©–©ý©ª…ª§ª<«:¶j¶|¶(·�¸À¸Ó¸'¹\»•»¯»λ¼´¼½#¿d¿€¿§¿õ¿ÂÀ.ÁaÁšÁöÁ+™Â'÷Ã;ĺÄÅÀžÓðÓÔ�ÖRؘÚïÚ[ÛüÛÝ�Þ‰à¤à&á©á'âJâ÷âIãŠãÓã'äqäuåÁåæNæäæ/ç¾çÙçèVïˆï™ïÁ÷ú¨úNûý0ó/Æ¢Ë K \ Ï /×7aÕ:åJjèHôT¬ Ÿ³sÏácæd†3…Æc­a­ï:ЪÅ,,^,o,j0¾1ž3«5!9‰9ƒ>ã>B}BzCÚCzEÚE=G�GíHLjN³OåP›RÊSUZVLXûY{\^[_§`[aûaîfpgƒgh’hirOr[stqumvwÝw-xÀxžy{e{|b|z}ñ}S³E€Æ�X‡؇ê‡nˆòˆq‰”‰CŠfŠ©ŠŠ‹3‹ì‹ŒMŒiŒ¬ŒÔŒl�‡�Ê�`�“�¤�`‘’v“w”Ú”=•X•Ü•`–ß–—±—Ô—˜0˜†˜¡˜Z™v™»™×™š5šÍšèš+›$žWžhž€ŸF æ¡£^£¤²¤¥±¥«ƒ«”« ¬i¬­|­¦­®�®-¯’¯²¯2°’°?±Ÿ±ø±O²l²í²R³´g´ôµ1µµµ9¶¸¶Ú¶‰·«·î·¸^¸x¸/¹K¹�¹¬¹ï¹º­ºȺ »þª";#Ã#G$Ë$T%Ê%+&ž&]‚]M^moƒo?Ї^ŽØ�‘ˆ‘0“¾”w–¡—™­šh�û�¾¡$¦…©A«|­®¯±ž±(²­²ø·”¹xº€»O½ü¿PÀ%ÁÙÁ€ÂÚÂ<ùÑÌÓ¥Õ‰Ö ×�×Ä÷ øŸø@ùÜùJúÐú�EŠs"wm»U¢ï<‰Õ!Ò'ÙvÊc·5ØbëZ#<$¯$�%|&s'»'/(Ï) *\*•*ä+q,ý,š-.]8¹8F9 ;<<<þ=ž> ?…AÃA B}BßBBCÝEoFI¬IßIéK�LFNêN�O.P„P™h�i™rt�tuÒu¨vòwæx¸yÌz|x|è|j}Ù}J~ »ƒÕ„X…Ú…‚†Q‡×ˆ©‰‹¼‹6Œ§Œ/�¥�ŽáŽ‚�D�¹�·‘,’c¦©¦\§˧­¨P©À©HªÐª2¶¥¶ˆ¸ü¸F»û»ã¼¿Þ¿#ÀÁºÁdÂwÃûÃ~Ä>ŶÓ3Ö<ØÚÒÛêÜÞÇßçàjáìávâtãþã_åíåzæ¨çèNïW÷ëù~ú$ûœüÉÜœf^ “ ]˜j¬v‚b4H$§)²°:KÙf”ñ$,0§1t3�5â8ð=áA>C>EGÀHãK@NˆO»PoR SïT/VXÐYø[“] _h`0aÐa|fÈgRhÛhjisjk&l½lRm�nñnrãrésYuvþvpw•xsyqzÅ{}€˜�ê†.ˆ²ˆ5‰Á‰’ŠîŠÕ‹5Œ•Œ�³�X�(‘î‘^“L”¯”•œ• –£–/—˜\˜C™£™šbš›žHŸ Ρ¡¢ã£‡¤ê¤ƒ¥•ªÌ«¡¬Þ­±®õ¯À°ͱ¯²‚³—´uµùµ|¶·×·4¸¹x¹عBºôºþª";#Ã#G$Ë$T%Ê%+&ž&M^moƒo@‹‡_ŽØ�‘ˆ‘0“¾”w–¡—™­šh�û�¾¡$¦…©A«|­®¯±ü±)²®²”¹xº€»O½ü¿PÀ&ÁÚÁ�ÂÛÂ<úÑÍÓ¦ÕŠÖב×ç÷ øŸø@ùÜùJúÐú�EŠs"wm»U¢ï<‰Õ!Ò'ÙvÊc·5ÙcìZ#¯$�%|&–'»'/(\*˜*ä+q,ý,.�8º8G9 ;<þ=ž> ?…AÃA B}BßBBCÝEoFI¬IßIéK�LFNêN�O.P…P™h�i›rt�tuÒu¨vòwçx¹yÍz|x|è|j}Ù}J~ »�ƒÕ„X…Ú…‚†Q‡؈ª‰‹¼‹6Œ§Œ/�¥�ŽáŽ‚�¹�,’†¦©¦\§˧­¨P©À©HªѪ¥¶ü¸ü»ä¼ß¿&ÀÁ»ÁeÂxÃüÃÄ?Å3Ö<ØÚÒÛêÜÞÇßçàjáìávâtãþã_åíåzæ¨çèW÷ëù~ú$ûœüÉÜœf` “ ]™k¬v‚c5I$§)²°:KÙf”ñ0§1t3�5â8ð=áA>C>EGÀHãK@NˆO»PoR SïT/VXÐYø[“] _h`0aÐa~fÈgRhÛhjisjk&l½lRm�nñnärésYu vþvpw•xsyqzÅ{}€˜�ì†.ˆ²ˆ5‰Á‰’ŠîŠÕ‹5Œ•Œ�³�)‘î‘^“L”¯”•œ• –£–/—˜\˜C™£™šbš›IŸ Ρ¡¢ã£‡¤ê¤ƒ¥—ªÌ«¡¬ß­²®õ¯À°ͱ°²ƒ³˜´uµùµ|¶·×·4¸¹x¹عBºôºé•"&#®#2$¶$?%µ%&‰&8^mÿnno*u‡IŽÃ�d�ù�s‘“©”b–Œ—5˜™˜šS�æ�©¡¦p©,«g­­®ü®ì°²˜²¹cºk»:½ç¿:ÀÁÄÁkÂÅÂ'äѷÓ�ÕtÖøÖ{×õ÷Šø+ùÇù5ú»úÿÿ‚ð zÉ0¥uã^ `X¦ó@�Ú'tÀ »Ãü`´M  ÃMÖD#š$z%è%g&À&¤'(õ)F**Î+[,ç,ú-¤819õ:ê;è=ˆ>ó>oA­A BgBÉB,CÎC/DÈEYFòH–IÉIÓKwLM0NÔNxOPmP„hxi„rkstˆt u½u'v“vBwÝw,xÑxAy£yUz·z {í{c|Ó|U}Ä}5~ø~¦jƒ%„À„C…Å…m†׆<‡ä‡ˆ2‰”‰BŠÿЧ‹!Œ’Œ���ŽÌŽk�¤�’”¦G§¶§˜¨;©«©3ª»ª�¶ç¸æ»μÉ¿ÀÁ¥ÁOÂbÃæÃiÄ)ÅÖ'ØÚ¨ÚÛ½ÛÕÜÿݲßÒàUá×áaâ_ãéãJåØåeæ“çðçB÷Öùiúû‡üðÿ´Çð‡Q»I  ~ è HðƒóU—a m¼M½Ñ3ˆ’�›%6ÄQÜë/’1_3l5Í8B9Û=œ>ÌA6B)C“C)E“EìFVG«HÎK+NsO¦PZR‹SÚTV X»Yã[~]÷^S`a»agf)g³g=hÆhUi^jðjl¨l=m{nÜnÎrÔsDu vév[wæw€x^y\z{°{|}ª}l€ƒ�Õ†‘‡ˆ�ˆ ‰¬‰}ŠÙŠÀ‹ Œ€ŒìŒž�‘Ù‘I“7”š”ý”‡• –Ž–—ë—G˜.™Ž™î™Mšÿš3Ÿ ¹¡Œ¢£Σr¤Õ¤n¥€ª<«·«"¬Œ¬5­É­:®œ®K¯à¯K°«°X±¸±²š² ³m³ ´‚´Ø´`µäµg¶ò¶·¸¹c¹ù-ºߺá6ï6ý6787B7s7}7P;Å;Ï;W<’<œ<¦<Z6’6�6«6µ6¿6É6×6¼7Æ7>8„8‡7Ð7 8H8Ã8Í8×8ç8)939=9G99‰9Ë9Õ9ß9ï92:u::‰:“: :ª:Ž8–9·:í:÷:; ;;$;.;<;F;];‘;<M< =d=n=x=‚=·=Á=Ë=Õ=ß=ì=ö=>?>t>„>Ž>˜>¢>¬>¶>À>Ê>×>á>î>*?_?i?s?}?‡?”?ž?«?ç?@'@2@=@H@…@“@ž@¬@á@ì@÷@A AJAXAcAqA¦A·AÂAÍAØAãAîAùABABOBZBäˆߎêÏiÖ©+¶+Ã+3QYsfs„ „`«J¿¿¿ìÀùÀ‚ÁEÂWÃÅò ÿ g#gws�v¥}‡Œ‡|‘œŸ*«7« O§SõVùXýZ]_ a¡a¸bcQdÕeÉf|gò•˜Å˜NšX›bœbž“ �¡¢ƒ¢ò¥?¨ˆ©ª¬Œ¬R²û³ë´‘¶É·qF*H|HÛHPK4jßjÑk7m1n+oq.s(t€tûw=hØt4uqvuy±};ù�š��‚%ƒ<„Â…¹† ‰°Šm‹ÆŒá�ÈŽC|uˆa�Ä�㑤’ø’”ó”R–—>£¥Ã¸I¹Jº©º »q»î¼`¾–¿]À^ÁNÜĦŨǩÈËÉ‹Ê{ËýËáÌeÍüÎ+Ð3Ñ,Ó8ÔfÕ+ÖÌ×ÙÚÜ(â0ãäâåêæèÂèê%ë�ï–ðæñøòàóƒõîùõúüÜüÑýSþ9ÿ½ÿM·MaNòQ÷WûYÿ[^``qÀäz­L¿LÑLãLõLÓwçw|/|Ðz|ñQóVöWúYþ[^`Ÿa¶bcOdÓeÇfzg;hP–ØLšV›`œ`ž‘ ›¡¢�¢<£=¨†©ª¬Š¬P²ù³é´�¶Ç·Á¸(HzHÙHNK«LÝjÏk5m/n)oq,s&t~tÖtsy2j2uovÑwÎz9ô�˜�Ž‚#ƒ:„À…·†sˆ®Šh‹ÄŒß�ÆŽ_�¯}ž‰Â�á‘¢’ö’”ñ”ð•}—þ—¥ð¥G¹Hº§º »o»ì¼^¾”¿[À\ÁLÚĤŦǧÈÉɆÊyËûËßÌcÍúÎ)Ð1Ñ*Ó6ÔdÕ&ÖÊ×ÙÚÜ&â.ãäàåÙæè½èê#ë�ï”ðäñöòÞó�õìùóúü×üÏýQþ7ÿ»ÿ¶M`N O¦SôVøXüZ]_a a·bcPdÔeÈf{g¨‡©ª¬‹¬Q²ú³ê´�¶È·Â¸p)H{HÚHOK¬LÞjÐk6m0n*oq-s'tt×tty3j¿3upvÒwÏz³{:ø�™��‚$ƒ;„Á…¸†tˆ¯Šl‹ÅŒà�ÇŽ`�°}Ÿ‰_Ã�â‘£’÷’”ò”ñ•~—ÿ—¥ñ¥H¹Iº¨º »p»í¼_¾•¿\À]ÁMÛĥŧǨÈÊÉŠÊzËüËàÌdÍûÎ*Ð2Ñ+Ó7ÔeÕ*ÖË×ÙÚÜ'â/ãäáåéæèÁèê$ëŽï•ðåñ÷òßó‚õíùôúüÛüÐýRþ8ÿ¼ÿN#Ö#Z$Þ$g%?²"øÑ'Ñ8¿¦³LÅL×LéLûL¯MYNOàwôw(|<|Ýz¬{|·LÉLÛLíLÿL³M]NOäwøw,|@|áz°{|Å"T#Ü#`$ä$m%ä%X&!'‚^ám@op·ñ‡ÁŽW�E‘ ’¤“ê”�–!˜I™Øš’�%žè¡N¦¯©k«¦­ì®G¯„±6³¯¹¦º­»»½*À‰ÀOÁ[¶ÂüÂÂÃÒÔëÕÑÖU×Ô×Þøoù ú‹úû~q¾‰¿âPŒ–ã0}Êd±ý¢ ªóA¤=�æc#­2Î#6%Ä%­&¶(v*‡+),¶,>-—.Õ9Å;<x>Ì>à?œAïALB¨B CÂCGFêF…IÀIKJfLMÃNVOP\PQi½i?s^tát_uv+w!x-yAz{|“|}…}ô}¹~(ëùƒ…œ…†Ã†Ð‡‰.Š/‹×‹QŒÖŒJ�À�ˆŽüŽ™�A‘´’Œ§S¨í¨€©ªŠªE«-·,¹Š¼½ý¿ÒÀ6ÁþÁ¡Â¿ÃCÄÂÄÈÅ¢ÖWØ�ÚÜݕގà+á®á,âüâ�ã,äzåæéæÃç èÆ÷ú­úSûý5ø 4Ë§Ø Ô Üßïíù±©½}hëi8ËhfôÕ¯ o0Ã1£3°5&9ˆ>"BCEBGòHLoN¸OêP RÏS U_VQXZ€\^`_¬``abûf h—hiñiŽj4kAlØlÂm«n odstvuvvwâwÅx£y {|ƒ}XJ€Ë�e‡sˆ÷ˆv‰HЮЋñ‹RŒ±Œq�Ï�i‘’{“|”ß”B•á•e–ä–¶—˜‹˜_™À™šÒš0›‰ŸI ë¡£¤·¤¥¶¥«¬!­&®7¯7°D±ý±÷² ´Í´ºµ>¶½¶Ž·ó·c¸4¹•¹ô¹²º»ëÏa  —`w%ö%j&4']{]½]ßnMopR‘ú’‰”ö”4–D–È–P—…™Û™HšͰ–±m²H³ñ·7¸•ÀYÁÃÔùÏÿÕÅØbÙûÜ|õ½÷GøYøkøðø—ù©ùú�úÈy È =í¿Væ’x,!6$|$Y'j'÷')Ç) *’-Û-V89ÿ94<Î=@¨D4G#HOJ}MiÍs†uŽxÌ{B|³|5}£}~Ø~Gˆ„A†ŠˆÞŠ„‹ÿ‹pŒ÷Œm�à�ªŽ<�…�¯‘ø‘\¦å¦§(§—§e¨x¨ÿ¨‹©ªœª+¶q¶�¸ȸ?»¶»œ¼i½ü¾†¿@Á Â÷ÂÕÄ(̹Ìë̯Ó÷Óšà@â?ãÉãgä·åDæ%çÏç1èGï�ïR K` ×|{££0»\,e,yg2iFJRZjrv~†ŽŸ§«³ÀÅÊÏÔÙáéñùþ"&*.26:>BFJNUafkpuz‰•¤©±µ¹½ÅÉÑÕÙáåíñù.2:?DINSX]bglqv{€…Š�”™¡©®¼ÁÆÎÓØàåí$).3;CKS[cks{�¤©®¶»ÀÅÊÏÔÙÞãèíò÷ü$)>HUbglt„‰Ž“˜�¢§¬´¼ÄÌÑÙÞãò÷ü (05=BG\ainv‘–› ¥ª¯ÄÉÎÖãëóû  (-5EJRZ_goz„‰Ž“˜�¢·Éàêôù5@EJOTY^chmrw|�†š¦µÃØæëðû #(-2:ITY^chmrw|Œ‘–› ¥ª¯´¹ÊÙåõúÿ "',16;@EJRZ_mrw|�†‹�¤¬ÃÖçï÷ü $).38=BGLQV[`ejow|„’𢧬´¼ÄÉÖÛñö "'/49AFY^fk~ƒ‹�˜�¥ª²ºÂÊÏÔÜäìñý!).6;@HMUZbgot|�‰Ž–›£«¹ÁÆÎÞæëóÿ  $,04<@HLTX`dlt{ƒ‡�–ž¢ªµ½ÅÐÔÜäèðø !&+05:?DIYaiqv~†Ž–ž°µ½ÅÍÒÚâçï÷ÿ #+38=BGLQV[`ejoty~ƒˆ�’—œ¡¦«°µºÍÕÚâòúÿ%0BGOW_dlqy~†‹“˜ ¥­²º¿ÇÌÔÙÞãèíò÷ü      $ ) . 3 8 = B G L Q V [ ` q y ~ † Ž Ÿ § · Ê Ù á é ñ ý ! !!!!$!,!1!9!>!C!K!P!X!]!b!j!o!w!|!„!‰!Ž!–!›!£!¨!°!µ!º!Â!Ê!Ò!×!ß!ä!ì!ñ!ù!þ!" """ "%"-"2":"?"D"I"N"V"["`"e"j"o"t"y"~"ƒ"ˆ"�"’"—"œ"¡"¦"«"°"µ"º"¿"Ä"É"Ú"â"ç"ï"÷"ÿ"###,#1#B#G#S#X#d#i#q#v#~#“#¤#Á#Ú#ö#$+$D$L$T$m$†$ $º$Â$Ê$Ò$Ú$â$ç$ì$ô$ü$% %%%%#%+%0%8%=%E%J%R%W%_%d%l%q%y%�%†%‹%�%•%š%Ÿ%¤%©%®%³%¸%½%Â%Ç%Ì%Ñ%Ö%Û%à%å%ê%ï%ô%&&&&%&-&5&=&E&M&U&Z&b&j&r&w&&„&Œ&”&™&¡&¦&®&¶&¾&Æ&Î&Ó&Ø&à&è&ð&õ&ý&' ''''$')'1'6'>'C'K'P'X']'e'j'o't'y'~'ƒ'ˆ'�'’'—'œ'¡'¦'«'°'µ'º'¿'Ä'É'Î'Ó'Ø'ì'ô'ù'( (((!()(1(6(>(F(N(S([(`(h(m(u(z(‚(‡(�(”(œ(¡(©(®(¶(»(Ã(È(Í(Ò(×(Ü(á(æ(ë(ð(õ(ú(ÿ() )))))")'),)1)6);)@)E)J)\)d)i)q)y)�)‰)‘)–)ž)¦)®)¶)¾)Æ)Î)Ó)Ø)à)å)í)ò)÷)ÿ)* ****#*+*0*8*=*B*J*O*W*\*d*i*n*v*~*†*‹*“*˜* *¥*­*²*º*¿*Ç*Ì*Ô*Ù*á*æ*î*ó*ø*ý*+++++#+*+1+8+?+E+K+Q+W+]+c+i+o+u+{+�+‡+�+“+™+Ÿ+¥+«+±+·+½+Ã+É+Ï+Ö+Ý+ä+ë+ò+ù+,,,,,#,*,1,8,?,F,M,T,[,b,i,p,w,~,…,Œ,“,š,¡,¨,¯,¶,½,Ä,Ë,Ò,Ù,à,ç,î,õ,ü,- ----&---4-;-B-I-P-W-^-e-l-s-z-�-ˆ-�-–-�-¤-«-²-¹-À-Ç-Î-Õ-Ü-ã-ê-ñ-ø-ÿ-. ...".).0.7.>.E.L.S.Z.a.h.o.v.}.„.‹.’.™. .§.®.µ.¼.Ã.Ê.Ñ.Ø.ß.æ.í.ô.û./ ////%/,/3/:/A/H/O/V/]/d/k/r/y/€/‡/�/“/š/ /¦/¬/²/¸/¾/Ä/Ê/Ð/Ö/Ü/â/è/î/ô/ú/00000#0*01080?0F0M0T0[0b0i0p0w0~0…0Œ0“0š0¡0¨0¯0¶0½0Ä0Ë0Ò0Ù0à0ç0î0õ0ü01 1111&1-141;1B1I1P1W1^1e1l1s1z1�1ˆ1�1–1�1¤1«1²1¹1À1Ç1Î1Õ1Ü1ã1ê1ñ1ø1ÿ12 222"2)20272>2E2L2S2Z2a2h2o2v2}2„2‹2’2™2 2§2®2µ2¼2Ã2Ê2Ñ2Ø2ß2æ2í2ô2û23 3333%3,333:3A3H3O3V3]3d3k3r3y3€3‡3Ž3•3œ3£3ª3±3¸3¿3Æ3Í3Ô3Û3â3é3ð3÷3þ34 444!4(4/464=4D4K4R4Y4`4g4n4u4|4ƒ4Š4‘4˜4Ÿ4¦4­4´4»4Â4É4Ð4×4Þ4å4ì4ó4ú455555$5+52595@5G5N5U5\5c5j5q5x55†5�5”5›5¢5©5°5·5¾5Å5Ì5Ó5Ú5á5è5ï5ö5ý56 666 6'6.656<6C6J6Q64]›]ô±¸Ý÷U$Œ'é)³-…8Œ<]�Б|¦K¶¡¸n»5¿ÏÓgï=,rr�6žvwxyz{|}~…%‹%&w&Î]Ï]ìnZo.p/p0p1p2p_‘“–”Q–^—_—^š_š`šašbšcšdšešfšgšÚ°†²O¸P¸Q¸R¸S¸T¸´À¹À¾ÀzÁÁ„Á‰ÁÃÐÐÐ?ÖDÖIÖyøþø·ù$ú«úÍ]à á â ã Kû—œ¡Š$ä å (7*8*9*:*;*ê-9Ý=+i,ißsäsés˜u�u¢u¬x±x¶xÚ{P|Á|C}±}"~æ~WXš„Ÿ„¤„Q†V†¦ˆ«ˆìŠ’‹ Œ~Œ�{�î�¸Ž”�’7§¦§‡¨©š©#ª«ª€¶׸Ò»¸¼¯¿°¿±¿gÁlÁ/Â/Ã4Ã9à ÅÔÔÔÔÔÔÔ¬à±à¶àNâMã×ãuäÅåRæ3çÝç³ï´ïµï¶ï·ï¸ï¹ïºï»ï¼ï½ï¾ïb g glrw|(-2éî󊉱±>É©,ª,«,¬,­,®,¯,°,±,²,³,´,µ,¶,·,¸,¹,º,»,¼,½,¾,¿,À,Á,Â,Ã,Ä,‹g�g•g@iJjÜj„k“l(mnÇnprqrrrsrtrurvrwrxryrzr{r|r}r~ró‡ø‡ý‡™‰kŠÇŠ8‹ ŒmŒÙŒŒ�³�´�µ�¶�·�¸�a•f•k•—Ù—5˜¦˜{™Û™:šíš}ž~žž€ž�ž‚žƒž„ž…ž›« «­­²­»¯À¯ůu²z²²:µ?µDµß¶°· ¸}¸P¹°¹ºͺ �  —ßÓ¥wI¡åèëíïñóõõ÷ûûþþÇËÍÑÓÓÓÓÓÓÓÓÓÓÕÛÝÝÝßááãåçééëíÛÛÝßâú  !!!!!!!!!$7899:<<>@CFn$'(,/25>IKNNPRTWZ\_acefgghjkkklortvxz|~€‚„†ˆŠŒŒŽ�’–˜šœž ¢¤¦¨ª¬®®°²´¶p”¹»½½¿ÂÅÉÏ×Ùïñóõõõ÷ùûýþ  !#%')+-/13579;=?ACEGIKMOQSSUWY[]^`bdfhjlnprtvxz|~€‚„†ˆŠŒŽ�’”–˜šœžž ¢¤¦¨¨©«­®¯±³µ·¹»½¿ÁÃÅÇÉËËÍÏÑÓÕÕÖØÚÜÞàâäæèèêìîðòòóõöøúüþ   "$&˜ÆžÇ´ÈÓÔÕNÖÈÖÿÛÜÊÎÅÏÌ×�ØÿØÙyÚKÛ¥Û, Ý‘"ÝØ Þ= ߢ ß!àü Ýa&Þo#àÝ&àT$áÅ$á6&âVûÜ#ë#é>HQ€‘% &|&Ð]ñn_o3pd‘ “›”V–`—hšß°‹²U¸ÃÀŽÁÃÐNÖSøeøøù£ù¼ù*ú°úæ P¦�$e' (<*ï-"9Þ=-iîs§u»xß{U|Æ|H}¶}'~ë~Y©„[†°ˆñŠ—‹ŒƒŒ �€�ó�½Ž™� ’ò¦"§<§«§r¨�¨© ©(ª°ª…¶ܸ×»½¼²¿qÁ4Â>ÃÅÔ»àSâRãÜãzäÊåWæ8çâç¿ïl q�7ø�޶¶C$ÎÅ,šgEiOjáj‰k˜l-mnÌnrˆž‰pŠÌŠ=‹ŒrŒÞŒ‘�¹�p• —Þ—:˜«˜€™à™?šòš†ž¥«·­ʯ„²Iµä¶µ·¸‚¸U¹µ¹ºÒºÊ@`bÈæ×ÜáâÚÞãäÛÙÝàÆÔÒÐÖåÊߨÎÉ̃îôðóõëñòïí²µ´­¯³§©£¥ª¨¥°£©®¢±ž¦§ëìêèëÒÑÐL‘骩¨À{Dðƒ�»·µ»ò÷õ)•ˆ†¼ºþüP��ÃÁƒRö–•”ÁÊÉÈÁø…˜ÌÃúúÅÅÇþþžÉÒÉ�Ô¢Öîíìuþü¹¸·²°¹¸·ðïîóòñíØ™˜—¦Ú�›¢ ¥§­±3:¹ý¿¢ü¸(¾{û5½Ã¡yú4¼É *Â� 6<·»ÁÿÁŽ Ò.¶ºþ)Àج,;ÒTÒT´ü»�)ü¶Ë ÞpeA/6»¸Ð�j\n”6e,Ã}”V¯core_intrinsicsÁderive_clone_copy_internalsÁð‰âÞpeA/6»jªb¨ÒÑö¶Lû�ÀO_‹Ó¢Ë¾ÞpeA/6»Ê=GŒEú\Rq´,®8 }©Ø ‹Ófmt_helpers_for_deriveÁ¢g¡gÞpeA/6»‹Tk8~•'eöi_‹Óderive_eq_internalsÁ¢ŒÏ¾ÞpeA/6»C_�s<ÔÈÉüí&C…ÿ‚]´œÞpeA/6»¿¸2j°ÂÅZ ŽÒTúûèÞpeA/6»³’DðSåâ7q,¼û‹ÓªÔ¢g¡gÞpeA/6»½Å“žÈ$6o$õu‚‚´‹Ó�Óú Ì ÞpeA/6»àKŽÖýjÉ;„Ð` Ë´œÞpeA/6»zSÄcÉløÜq9,Ù”‹ÓªÔ¢g¡gÞpeA/6»¡|‰ùÇj9&É,„Â,´œÞpeA/6»P?ïÚ_¶LŠ'.‹Ó¢Ë¾ÞpeA/6»T;>+Æ+=ǽ÷ÒTúûèÞpeA/6»˜’Îä?ÖžÆüçÏ üª• ÞpeA/6»±Þü¥íØ|Kà ˜!‰ ü€  ÞpeA/6»?oÍî3 ƒÜe,ïR‹Ó�Óð‰âÞpeA/6»ëÜè}eguíìº üÒ¿ ÞpeA/6»DcÂÛ°Ãl„±�mÝŸ_‹Óò¾ÞpeA/6»§1pû£Û]É;„¥8 µ´œÞpeA/6»NÆ¢Xd ´üÔ]÷ JÞpeA/6»[)‚"LB¹áû,üÔ6füþ� ÞpeA/6»�¯C4-/q7,ËÛ‹ÓªÔ¢g¡gÞpeA/6»øÞ•š“ü“èq,ƒ'‹ÓªÔ¢g¡gÞpeA/6»¦àB€^Mo ´üÅV ÞpeA/6»ûoè²›öüq/,ºq‹ÓªÔ¢g¡gÞpeA/6»áU@qöª1 æÒTúûèÞpeA/6»o›î±ÆËbbq,øÔ‹ÓªÔ¢g¡gÞpeA/6»/Sðçvà ˜‰ � ÞpeA/6»Hw`m*Îèûü“ %‰ÞpeA/6»ókX%Bö¿É,„±Ä´œÞpeA/6»QKK9Ηìã·T‘¥™‘_‹Ó÷¾ÞpeA/6» Içà· ‰",ü·/°ü¨² ÌUÞpeA/6»…cÖÔ-Á�e,ü&�‹Ó�Óð‰âÞpeA/6»Gˆ§ï*‘_íÒTúûèÞpeA/6»›ÞT‰ ÷mÜ,üŒæ� üæÈ ÞpeA/6»ªÄHækt´ü•Ç UÞpeA/6»Åž�ÎÀ—‘$ª'uÔ=‰‹Ó�i€iÞpeA/6»Ó`o!¸WD”à ˜‰ d ÞpeA/6»“½†JüàÉpɼ³{´œÞpeA/6»ô€}‹x þÉüì6©´œÞpeA/6»½è,$;û,ü—$ÇÞpeA/6»ûó¦EÃe,Š:‹Ó�Óð‰âÞpeA/6»E@øo¸›û,üŒ�,ÞpeA/6»CãüøÜÙ×±o$ö&Õ‹Ó�Óú Ì ÞpeA/6»Å¦6%[ ÅÒTúûèÞpeA/6»¥ê¼àj•®í,üŽ!¹zÞpeA/6»Ù]¾Yƒ¹šÄ±¥'w‹Óò¾ÞpeA/6»ÉÊ� g1 ´É„æ)´œÞpeA/6»‘ÿ#¨;ÑäÒTÒTÜ ÞpeA/6»«XÁò™W¢„~†Í‹ÓöÔ¢ŒÏ¾ÞpeA/6»‡Ä„ýéÆ+Ü�,ü‚†üÝ ø  ÞpeA/6»HWIÞÍ[Vqµ,Ù` † ‹ÓªÔ¢g¡gÞpeA/6»[ý0ÈÑ;nÎ-ßÒTúûèÞpeA/6»¥!SnFUÌÉ,„ÐK ´œÞpeA/6»äà£Ó«íß·T™'‡‹Ó÷¾ÞpeA/6»µþˆTˆT ·É„ïª ´œÞpeA/6» Ń;   ¤üõ´Šü× M  ÞpeA/6»³³¦• GΤüùÜ0/ ÞpeA/6»¯\!=ŽÚ¤üëÉŒ\ ÞpeA/6»—_¼×¼'†4ö(z(X(8()Õ(¨(¬(’4\(Ž4)Š4°(e(A()í(Â(&(š(~(¾(Œ(I(*()ñ(Æ(q(S(.(ú(Ë(ž(‚(`(<( )Þ(´(‡(i(E(•(u(N(3(ÿ(Ù(£()è(‘()ã(¹(m(Ð(#)3W1‘-–4ò4Æ4œ0W.j,®*Y4Ø2*1G/-A+Ú),3±1 //-þ0/š,G)…1s/g3é1Õ/¾-Û+ú3y2k0ƒ.í-¦+d-z+*—320".,_*'4¦2É0æ.É, +w)Í3K2>0¸.=,ß*7)3u1®-¶45â4¹0s.Š,Ï*v4õ2G1c/-j+*W3Ù1Å/T-17/¹,g)¡1�/‡32ö/Ý-ø+4–2Œ0¨..Ë+�-–+O*½3;2.0G.-,ž*I4È2î0 /ñ,1+Ê)ê3i2[0Ö.Z,ý*°ÐODHT ·Þ‹&ÁX³ÅäÔ¥[G aÁä(=¤Øb¡Ü_ÑwÇèûMõø„.$ð@N­é;˜!8õÒ%4ê·¨¨ÊIH]`Ô@ÚqIÒ§ß‘@{ bÔá:ô @Vð=‘œ¨¼ ¾uÚño A ¨ÔÐO÷ûÐ xíbȯÈç (Ð S¸Ž˜É?å*‡¶{�%dýÏ&Š ´uˆµE0Ï÷ 2~Åp®oU1+œHß“üÇ–è 2Ñu¢&üUÐð�L;M[ÊÀ~ï} –†ø’x>¯§^R É«Îݾ¸ Táz~ËØz*öõ÷ìÓÈé®g«›†˜û#uE2G 8ù}qq^¦úˆy|û2q¦%èrÿ ¿UM(ȹe‘ÁÎ1(˜Ê„µíq ›*à  ù-¬?*`xUzN/Ðîmý¾r‡3H»9'3&—á3øVGp0Y 5�³!ø´¥·ß6¨ô±×î�H‰3èŸkHÙØÌµ8€>-T‰ñŒ9¸¡°ˆ¼EåC7( Rz¯õ@ë;psóø§]ô;h½xø)»º<(… WÙ¸<ð¿�䊜>ø¬PÊ2=@ :[޾+Äç>�‚2<ïª']X—)µb�ÂŒ`|ßVÎS-†`P�cÎCh°ý„\Ê)iàsQ3ÉÂOJi˜p†?_mSåkÈP~OÏÑÜêlXøJ6õùä‰qèuÆ(¶T,�sìï­øí&�t˜1“`A[u@(0õ�îyðùe`‘Lqz˜SUŒNv‚©|ÐÑB°ñÖí„}¸u©o[ð}Þ�˜ø™ „Pä¨@;e€0õXn\IbZ�0øK(´`Û„0{ˆZ¨þ–„PõL™àþÒî…0—¶Ù ü¥‡ØÜ&ž°H¬Úˆ°ÃzÈ�Á„œÈéjYjNŠ@$_Õ£)>׋ЄRù8´Úi&Ï’�áØ9!Ì@£�(äúü›Y’Ȟ܊H,L–0 „ìójÀ˜Ø7ÐSÑ7Ê9˜ÇQïƒEStœa)ŽZÚ�ò�ÀZ„:ótɘ�@¥¤¯¬×á�Hz:²Ñ|d0 8§Àúba¡hÆÕeHLå¢Xh];z剬¡pÑܼw¸yÇ¢ØÂN¾†ù£ 9†ÚÇYBg¦€zBN¶çé§£ˆ¶P�˜^”¦¨È^À0,D©€£¸Ù™�¡ÿ¥ åa¦Ù‚àf«¡SëÔM&³¬ˆsOnȆ¿n­PL-õ«wJ«ÀìÛq`ƒY¯è¸Ë,áv™‹¬pš—�ÑéÌÙ«èUïÊLè²hCIï¬úü§³@רî¬@Ó²H -ö’Dnñ³Ð­�ê:Kb²nyDv·a¶€J+_{ƒ6»@O®ƒP¸³\¼ ùf99œ»»è¢¡àß[ˆ½¨ Œ±ÉQm¼`ÉΧc•šÃø¦,€œª7CÅP£t ÁþTHÅPV“8³xçÆðùõŠhð½åÈh^g¥s¿ÎÆÈ Q˜Ž88`&É�€à!»Åˆ{ãC€&œ ͈�‚ýìwìÐØü“iSýù ÒÈÓs¢E²4ÔØŸ–~¡ hšÕ»Xsì^È£Õ0‚�æÀ¼×EkÙ"dÇÁØH q䄽Ùx‰Çþ¥5ö�ÚèþãûÐó$íÜðÙº°žƒ²~Ý0†·|„Ñßèõ6 y&ÌápÿbYüøÒã0©µNsÛåð?©t¹—卸ÿtpFÃçè»#Yuè òçðå´¬(µýèp˜Ëϼ¼:騿}ˆ–õëpF†¾¥–ì¸ÝG0©ÍæÍéø ÖŠæì\ƒîX–ßFÚúòî˜\Ÿ�f¨¯FïÈ#µ}1B çè‰5Û™ëgæp;;䣰GçòáÀÍOôPOwc—½/ôè5Ë…»êä1ô úì§"GK÷ §CgA9H±÷¿ ü‹s|ù@–*©òšú€GætäåNOþŸØÎc¡ÿx="ÈRGîQâ�\1/ï’á}!ø…¡õ,æéÅjAý²T½uƒɆgá*À–éîŸãÂUЀ ±„Ë-éËÇ ™Ü¦•&Qn�AUŒ•ãœI�df�×½ùšÈúSárÝJ=I²±\e ³¬ðûù4þÈWšc��û4H¤ ›;ã9y<ס¤[:ókåKNJ�±ç1>qucÖ™”kjNúè§YK,Å´)|Û¡ Ó"íÉùyV1i;™§éfG”�­CLâò qùZî¡ba¸�Œ— )`¶á) 9ËL¹êœ4ø ¹^:f%B™Îá'bF…ù[í˜qI�ª%ÙeF ÆÀÏ*&©Ø=ë¢ød'¹R'A‘Ñ1'9$¤°…_!»)áøÓúŠåª)‰ãnÿ'Ô$'™ë{ô— ë,+ºü›ð�-!:ÒFe}ÝÛ,!´��lˆù,á™YhïIØÎ1ñABªkرô4Q“ÞDÂ�5©�ï·ñ�á4!¹÷!ÿ«€u8!ße›®õÙ˜;™�•@PÏih< ~93@ž<)‡yÔü2ô>9"QÉæö§K@™§�ã¢ÛÖ@ù§ºUB.B¹m‡Þz�CŽd˽I¿:DÙÕ:÷àDm ­ëèsG©h\]*¯*HÑÎwuõö sácùrAjuQJ/lx$Æv9ÒT9uœDuÉ™T,ùxé‰Yòïy¹¿oEQÒðzá@+µ®UÒ¼{!ñ¡æ¿=Lázù�ti$Þ=G}™å$]Ÿ™;~Y›Ú¿MM~á“ rû€ ¡Èa˜Ïã °? JŒ�aëalÝbjÞ…i7rÍ÷©M#‡A»ŽØb×i‹©Š+^Zêb5Œ!�û+é=³i�Éð�ºV‹«‘áΟ$Bã½’!)ùÌ3šÅâ“ÉènÃ*1q�1£x±aUSt“Iž†»¸¹ÔÆ–Ñ(—ºêw˽˜Ù�âRTƒ1™Y‘ËVŸÞœšI ÷[,è™™±>xÔŒNƒîœI1’Å„œQHë�¥€Áu�I´A¤€ÚŸ±kÆ$莰R 1êÀ”÷¡¹âÚÀl#E¡ü²]•7ߣQ7ÈÃ\´k¤±%÷Þ(Ú«%Ÿá¹ñ.’ñ�7£ACf¿ŽÁZ ¦A{Ð\ϧ¨É{n!d£Öü¨É±MQ ‹P–ª™ùzL˜«l«1ËŽáéSª‰ˆ=#Y´¬Ñ?ùãÚÄ«®Ym} KÉmg¯qʲ<ÖsÍë°‘ ‘ —Ї¤ÞtNfà2þ³é„vw‡Ñó8´AÑ™°5wµë­þíÈŸµ™Á�1ßm³!  ü8¶Q`o‡Š�¹é6¨7M3ºiö¬$»ñæš¹™å·ßâûº¼QÐ}w–1i|»ŽMÐ 0{Ñ·ÙCpÚÉ´ «Âï-Ö`G¦!ÄñÃâZ ¸mlÅ™MûûV`©¿ÆÑÆV¥kÇÅyì¥й!^Íé} �DñRÏÙŽÚ±ÙcÐimXT`qÑ…{Äj´ñ)Òi|AfÃ}„–ÒyYÚ¶ â†ÐÉk8¬÷ý�Þ‰GK~ ÖK•Þ¡Úó‘V?ßÑžƒî:cw{á)s¨–~Æâ1M ¡ vlL䙣‡6Ù &pæþd@Ð3–çY »ô¿vçÙP”#¢ Zè¹E5ý c>€è)9æ¥�h´ë‘3‚jÜ�üæqä ‚x°Aíá07 !�‘Æíñ¶üÅ=0F;ï)‰ ¢Ž$Ÿ‰ï‘¦o{{€Ócî1djp�Òîíy"5¦ äKññÕƒ#�+íi£žx¥”˜@é¹Yˆ´zÛgŽ÷!ѱ,oê&@÷)VFþµƒcùIéœ[¥½¹ú î[“ÁsW.úiyöq=T¡ú�Ñ[h Òý1éÕƒs<×Úþá>QÖRAŠ%þ ÞNçøD8­j/ãêLäµêÚµíÒˆóïg¢2QÙ¸ ‘‘µ¿.ïâ ʯÈÿÃ9 ºH;®¬kšFC¯Q†Š¬ ²jeœÿ ":QŸæâÁ·ú,šŠxÛÁúÛ"ôÇïú\ Ð�Òº‡CŒ¹Z³½jßuFn–b˜oŒâ&×òá¸ÌXðÖÊx±ŠýðÉÛ-psO�(""ñTáRŒç¨a3!B ""fzZX,[# ·'U=öþ“#âô ®ä¾ÂU'º4ÓZãò'Êú&?�ûšy*ʯtø:Îü+Zþ�º‘�¨,r�í$ZÊú/Z5Ûª0Ã7ÊQDr˜Z6Ü7‚cªÿêJµ9ú“Á8Ÿó„þ8šªÏ/žõ£>b¼«S[’Àè?"u^#v»¼@ÊÙÎQeŽólCˆL ÏÒÝDÖµNõ–ñE"Eù‘$¾ˆFÍSbƒsÍGjîœ`SEòŠF¶fOÊJ:T´ÄŽÑ�KŠV…¹�€¡äLš“lÞÝväÆMFH Ÿ<�YN"ôŠŠ¸ÑfMBl;ƒ¬ïójMÒ{fYwkLMr0ˆÕªá þRº¡TcI`·ISÚ}5Åá OåS€–ïN}¦žUòGƒC¯ £ZbN ݬ�ö[’H• »ƒ‡]Rf"adñ]š;טò™ _ru¢9�_ ~2HžPŠ a6äs;;_Eb21dNj²ÑbRÐ4”Y#dš&†Ûψ3 bXŽTFfîÒ^ ç¿rà¯.gZ�‚eœ•�ªÖƒ·•p�ⓞWZß’ò:”Ž«ˆy’úug`¼”jÕN<ѵ#¬–²Go€B&{;—òw3³GÓ ~˜‚ÖŠÇ¥Q™êè„=GÖ!±™²Ïè™z…‡ä™šÏ’ÇÄ�é"œÊ‡Ÿ¡å®ž"O¤øÂNX¼ŸŠ±®O›�¬€žœ¬ÿ@¿¸b¡*±ø`{¢ àDs¯n¡j;�"¹‚¤BÄ\¤ôߪ¥r/È7J^g¥jìVoÅsÀ�¥Â5�–¶{¦‚«uñ‡cᩊÄ?|ý6äJ§‚`)cNⱫ²è¤Pt©ŠÂSû¾«Ø­Zhê›�¸ìh®úŒ�Éõñ•®¯ÒÍ<5m1_°*Œ%ú¢Š¬°¢úr¨¾ö"ã²jX9x*Ä>9³ÒÓö²$B´ªYµ·<¤Ÿw¯êN—.ò9P­Ú3¢MÌÅN·ª-} ÊMS�·j[ÖúóhÛ﵊""Dr¸Z«¯RÒß»ŠhͯC)‹T¼Ê¼¾T¾d[»òŒ55 }ë¾:U*xÃP¦€³²y¾fï{Á¯këÅrO(”Ö¨4Šʺ¢¿¬ôèÅ:–<¢Óà·È2ô‘1wÑqÅŠ†—(:èAÊÒœW“Å.®Ê*4 fvYg̲ð]¢6Ø«ŠËºaIÎâOäÎòu²—OjþèÏÂÐÿBzÿBÇbxvo’ÓøÈJÈÓÎ ´!MÏÒ–~üȦHÓBtú‘¦�̸Ö"iàJü/ÍÖÒ%!åÖ?çwÜ‚¬Q>f•R&Ýš!óáΈ?á9|f#¥â²ƒdáÀ‘âRöOê—¥ÿáb_]{aÓƒâêMjQÐ�ÊŠæÂœ¤ ®ÄM_æ’|ýMiú¤HæwüÉ£ˆ`éÂ&ôÄ=´JæzçY(sèM}æþ†òåï¿Ó€½­éñ¢JÆ£3òª1XõO�óÒ6§Gv4Þ/ôòʽÔv’wô�nBóh»pö"¯=;¿”üŒ÷:°S/#ÀZ™øt²ØÍ�ŽøÚhýË?ø°<÷jË, vñ/û™—Ešžt õÖYA¢‘xÌò* ~°fÒ �þBÔ¾nŠåþ2hܰ†”pãk¸Ì%çáÃ#5’C<"ó[�– ´ÑGˆ­â.¾ZG?éV›¨¿ \ùkµ%5J�²d¨<e:u. Ã2…¡v\¦ ãšXC–ª ú ûÕk펖b" kŒ‡IÙk ‹[XŠtוsNà 5Ê6k’” C#eßfþèÄý(£A\©öj¨*"°m³?½^ê9Ø©›ÄÜtäÏÛ˜{â\›B{C�+F- ˺²Ûcp¯ùg­øý›æüm»ÒÓ‚K ¦2O•€ÛVqònP�Ì£åïö¢÷Ü ƒž­¬ŸuƒÃ! jÚ¾ÿø.½"K¯-;ž9ëŠ#ü�Û,…%ÛYV�‰]\&c×e®¡R·*[+bwŒ�²j,»†á$ ”Ò-;c‡»¸ëØ-ƒÉ›6““†-ëy(þ/+r80Ó½t†íXUÔ1Ë[ë°ºÎÁ&0ƒW×'Ï…à0'=# €5+bÚ«Uý²'63Ñâ?¡µ>­:ãîâ“3;ø:sjä~œD@k:ÃxÑ"�e ù:{�«¡)OM=“î†çúÏ+>£ô…ðIvÂ@S€…‚àPÌ\<óå=÷p1Q¦C‹‘Ýtw4DÛc]P&ª+Dk~¹ÅMÔöÉF» @*|ª=G›õ¡ó#5ïhIãé c«ç%Iöù¤L×c³K#%s=”PçIK{Kæ¿NÈwOûÿ RdÊrPÃæà8zPÞP³§ ”aFÄS{¢*ëf"CwTõVé…6¹nUsÀ©U¢*6Wc—%„Z¶MüZÃè©JÀ ,[#L—¢Ýˆ‘^³¥p+ˆw^[Z¿7ûªžó`+-S7¢ëäeb«*%깩ó’dÃðÐ4èË”Af‹™(2êšg#¥k\WÿîhCŠ}­ì–åi3¾ô4œR/&j»äÈ[µ_ Šk[á-†.s¨ÝnCâå´)QÎsîìç°ÆUtKŒÓØÖ�RwÓêx§`Ce|yÃêl\„’êE{£ð4Aß�›ì|kg­ìAX…û~k½÷Zß_é‚[OE™ìßô‚„sÁ´§îò/!…Ûäß q`†ë>(Â7}§…y³p€�P…KýížWXÊ–‰K\´q–&ö™Š Þ8Ø‹Ž“ôj¯ýM:�ÿáL%øä(‘ËMU¢æíCª’Ó�{B®J&“3tM›À ”KkÞ5[­“o][!­ð”£òÔ¸ìw&—ëœ_Ô ýüšûâOƒ·ÐxD›Ÿ(×ÐÏZ*œã£—ŒJóÌéœÓX Ñ2~ÀŸK@;DKŒ + Y&#lôó¡ÛZjyJ�»¢³½3¥ÿ”[£Ûå‡Ì˜½´8¢1¬�l?Üy¦3t>Ä ¼ö©ké§0ô²4RªƒÜ@¨\÷®Ã#ƒ3T‚‡¯¤=r22°ógR …£ÀدÑ€f¯óP’{qhæ"´Ë�pš Ã]\µÝƒæ>·;"9®öîTµ·#—-1¹y å·Ãt&‹µæ'‚»Ó÷çJ˜KcI¼ é³íÅ'¤¾3_‹!!›ÀófwJjkCÁ*8ú½„›+À+s$²ÍÄ ¬Ãsô¿í].©±Às—ÌÞËul ÆÛ¥äåýÂñÈ›í,Øyh;—Ê»ky�hzD¶ËÓƒ©hZª·Ìk›ý€Ýí%‹Ì»v(Æ »3gÏ 6bUÆå-‡Ð9®±m§å•Ï»Èf†ÞŸzAÏ›‚ÖæË<)Õóä?ÎO#Û[¨á‘œ_SÞ {ç€9WÕß‹L]³ ›pã[ó,Ø �8ãcT!OÑáåŠåcžaíî]ìýçG›f»Fºè‹‹œ|@_éë«&:Iîïê§w0¹þp×껼cÔIîªéãp/Sa«õ¨ëÓRì‘ÏÌ=óí{-Wȇ3îëjXÜðÛ¼í“Âò±O‡tñsê«ÌŸædÑòC›îp9ñ;v#™>®lõ J`Kp:õãßõRbûjæøk‰ ‹tÛ&HøÈê•¡Âf!ú›K}£�ò®û[+%EÖðKüƒ}„¦&pzýƒ�ûÍò­®ý>Çsøû[AN½Û¢Ðdó”MB¨ DIO;ÑPÿT•MÊ™À$í¦ 9'.§Lµ=·7XU$øo/Šy44¤›�Æ™D; dw?I?€t±#×z÷µ‹ Lö}b`!ó5<;)…pTì S³„ÁÎ�âTTiIÈñ¾l„ ^JÅaò „G7´‰¨ã ÔÙ÷/~Àû+#,O„qèæd#ôßÅýà¿a&„®Œƒ¾¬ò'”~Š{írX+Ü}ic£å ÿ,=ω¹w&;-d’QÁèïˆ<+<‹âŽ#ñŒ,m‰3\”¼#1\ƦÂgk�t2ô¦‰`¢iw 6 Öâ> à~:8¤,÷ÛeCû}9ìŽ�+ê}X8¤ólðQWÅÈ;¼öóËxŽ=‡Ôe(ì lܼ<ü¸ÆBsP_@¼ãÓ&µÍ^(AœA±!¡ä‘ô@ š t±mq~CÄ8’“;ïãó=𨿱%èEÔ*ÇF [F,�Èñ'éžîG„ž$^ß8­H”Ñ´´÷HÌ×€àô�dÙJœýñtàÔÞ»K<1¡q¯nKì¶|ñVêݰMä®~gwEæÇM´£ù=9U0O¼¸o‹5eµÞP\Ânª°?=MÄï0 ˜ÒßPŒtÕ£?;©ÃSü„æÕåk_¬TÔ3Ì`}“µJ4†eÖ/ìVÄÅZçÝÎ[ãVŒš[ètàX\Ðó­xL¾öV.YŸ‹YSV$ ª(i+#[<9¦è‘ÝXô&H2›ãQ[Œ\ŸáÓ*©RìÝë’Ðä¾_yhîRüÕÁP\�­òüЋa,bÓ ÅÒ!bÄáx¨GŽÄ VôœHðÑDYG´‚�Wt²àµ`Ô»\kˆÕ'fDhhyêæáHgäëH.S^â8Ä~wÍ'9ðližßðϦ�Nl?pÏ:m½kôB7iÙÇÏ[lþÎãó°ÏæoÔ¥m–�Tµp\¶/œ¶òí&qŒ&¿¡Z¸.årTËd‰<ƒAÿsôgñ+6g�ást.ñSÝ1zŠtdó [£v^Õvìb€ÎÍ4ˆÚw¼áÊ+p­*xT0ãÐ\]w\Œ7`åÙz }TЄډq,зj¥q›ùsÔ]Ap“_•}´•ÀÚ¢¦î0~L˜Š• ëúà~œNuo�¬Új~ô9’uÝ"Ý}W¤tJ!ç½èNµ¥Ìt¸h�¥>ðŠmÄ~§Ì!/ ‰ºê:¨|­ú÷ÍsI‰¨l´¢2N8¦³ªô4Yß>8¼«¬âWŵƒ«ü±¶½¢Óݪt¤ë÷åž*±”ð±hÐ멲„zÿ‡<Êñ±”kã!/Å=´ì¿¬BP£+´ÔC¾p«ê¯·¹ÁìÖ×ñº”r––o£ »Üýîí–¿O¹TOkÁhþÎ[½lãùIª9Á„¥uÒ{á)ÿà ‰V–Ym�AĬŒcôùÁôÃ\3øýˆéÉÅ45ÁšóiCmÅ ð€›‡6k^Ǭ—ž®—ÐúŒÉT$,¢¹ÊÔVgaR¦œÉ ]R ÌìUuL-ÞöÍTUo†|HÄÎìƒfØ<ß (ÏDÍ “e�çÉÔXiN¥íökÌ„RºeCU*CÒ<Aµ•‘Ó,ùdµ{–ÆmÌ47Íu“q‹ÍËÜ\Pv!.ˆEÖÄÛ!ë50zÉ´s‡­NvMØ ¥ù�CÏ™PØœ‚ÂÎ\—÷ÙìÞüzy‚)ÛtS¿½á/‡ËÜü¡�›Ÿ[ÅÛô#ø=²Ü„‘ö«sL ß ¦ÙéJˆèÝDuOሹvÜô[œ*UÚ1Þl‚L­BDšq㎋�3\âãœï‰Âàå¿åŒ†+àG{¶¢æ¤Á}}åž(æ4ݫѭè$]üÝ í^‹ét@)ÖåÆ~à„|°¨jÖ"ëŒiBZDÐóuìœA�_6°ÂRí¤ö�$ÑŒ#DîÌoCUÀŒìŒqÙ˜ðçøbîtsk;³“ð$3ç³c'Hoð£ mé— EDLÂg²‰vÜ –n¦SJr•1ËtNS Q…ç´]±K/ 6Õ- @¥à%�¾K³r–ŒͶUèCgõÞ÷öÁ�d@íE9JµïT-ÛÃkY �=N@ÇîeëÒ-O+ÑäµÖœEúñ |ÜFÓuhtj€°}�­ùh²ã/t eve€í›© ÝPV‰IrëÕ"�é›;†­l9`R‡Uƒƒò9®¯%ýuÞßV¨¡&}º¬nÐL—'õ3ÕØÖEl£&…ð÷@ù8î§&�ºÏKˆ7‡Ã'�-Ìv- �!%%-¨ÒlŽu'�JÏ‹--‹õ-Yî­ -ý·.[žØ‚Ý ƒ¾‹Ü×…0½³ÉÍ,B6é05õ W€Pç¢)µ i�Í€Á¹•�›«!ºÁ4}€6!ƒ„i6mž=žÓ•.=7µ�ÑÞ©i�9íoñô…?;•˜=P…éá=•‚û;ý¼M0=-ÔÝÇØ!U?5½`€‹˜ÇBUí‡m¨µ»EUGƒ„«Û¹õEe‚fV©Wb§H-Ëm,&ÉHu~¾†x|ÇnHuÓdÖPÒ+¢KÅa­Ì™C/MýÆÝxb‡“$OU;㦠‹ñ´Qp ¸ÞhªéRíWü× Ú±ùS…�dRÚ³ÒS­DH¡˜èÚjU•,ùºšÌÚUåçÁ”ÙGÃVEN„‚ȵ µXM~ÇG™)GZõ[|GqHÎ3[-haÇÎðØ\µF/w484^mz"$õu”±`Írî0ˆÌô5`•f\¶$ðSb¥ aèíBÒ1c�⃦Êl¹.gÝ4µ…ÛÒ…h=ÔbQÂò úi ±ºÈøÙuÖj5+Ä6G‡M‰kÅP¿„Ðû;’jåÄ Ä·ÏñhM6€)ý„;ÿn}¢m1À+@´n�_‘íWæl™p•Æ8DdR_p}Ðk�¶Àw”rEÁLŒ|‰¸k•Uƒf\u, Ê':¯†z=]r膱›{õ-»]ÊâÑv3C‹®ð|õÌ|kIIo¥zíHÈ =sí�¼öÝ=ëƒ�/ú%†Z…­jtîÿæ4€…Mgn*×ÔR�ˆ5|çgôŽ[�‰­FW黻ƑŠåY]õ÷W‹½y†zÞ#�I‹5œc…®_f��4à¼n™èŒå¡@oA€!ö�%PÆ•U],�e¨Ö’ ãÄ�=ÆlL_2«ŽÅôª•P’~o“ÝÓKìëÆi|–�!£y3á•—ýñ¼»>2˜ýЕ—‚ü™-‰¹¹k¸˜]–“Ú�”Ô˜j\ÞZÿœ�úÉ¥ Ê}’Ÿ�vÀóYXùE ¥±þ¿?Ä·Ÿµ°–BÏBX¢]êæ£¦‰X¦í];D¼Pµ¦eL*Åñðˆ©•by<<žA­MpbŒ/.Á®]bì~üå­å>aÁð²e°ýtþü}ϪM­•ØØÿÙµËÿ² ÍcdI=z®ÅˆÓä|£î²E!‡Û-ôí7·ík¹SØ9ª·5à-àsØ‚¹}�|)%¨Y¹­Räüý½È¹ÕÚõÉv˜ÿ¼ ºô»Z]K~½u2¯¨ ¦Uþ-:3–ÒT[…¿íh ± âv Àµ¥4±·Î£Ô¼í}ÐåÍâ�aÂ} „ÁèÃ5~ågC’“½•bÂT7ÐÈÅ=�ò‡¬¬ù¶Èm­:�JhZ ËUñ §ëfàÌÌõ‡ÁW¹lÍ…nU»‰#ìÎõšÕrtU• ÏÅ,n/EŒžÏÕ?<*äqÑu£œ!ãË5?3’$OS"Ô…¸wá4ð—Õeí¥½Ù =áÔe�Ñh³®»×]Ã^è¹á’µØEcúñù²�õÙ ¯¸  ø•Úuþ/ÕÙ�<Ýuý…5Ž�Þ%�[.¦I­,ݽ:Ò‹�èàÅB,}ÅàU¼c&ç¸âµ/@&R[÷-âåÁ&úñrŸä�ëP¦ ×å5õR�Ò’à•úÃÁ:Wèç‡-AäçÔÍè�Ö‹d0&èýœ¿^�ž•gê…B}šIÉ¥Hë-:¥PFX_éu¾×Ü6.ÎZí�+D«[Í»ÓíõLñ l“ŽåM(=úÐc�Ÿó%8*�{s`õ-Q4�3?kùýqÏ3®,Ñù�+‹Ø ñrû­é–æA>4jþAM¼ˆJÃÿ�$ôZªPÎLµãT{¼.®ü(Gè¯<ÃĘçtç–›÷¨›C.~>´Ë”išEÖçŽQ4ý?æ—>ÀöªA"îi³a¼a/ Æç�3Ø«Ý ×zø µ VøÌ#HÏÒöç_/Dôo‰N!íâ˜.N >™&V^™ó*ÿÛ¹¯—÷Âî” 5}g¶Yn¿œ#@·ç¶³ðÌ{Ó%‚ˆ×þ¬ß°ñ6“S-Ô÷$À.ØÓBw©š;–lDÊ]S"¶v¨’ðŽ�ÆÉj4 ýà$¾„›ð\žz�$FÙ®S§ýX$&¥´¿Ø]¢%nÐ3ޱ‹âƒh—¢º)^Á®ÐÝð1|*Æ‚¤;LÈV*¶ç¸köW+,Þ`´ˆbÄQ<-¶ÛN«_—áŒ.æ¥7rŸ€j.›kþÍ¢kê0þ�m.¤¼ò0öYšº{ ƒ2^ *³ÙXfó0f4Ì ᫎ–3iÇ]L2Î�}7K^6ª\înwù7¦úk ½Nœ8F(«‘M­9®åý=öÑ9Ö?sÆõ¯E6Îù·®7æùÞ¤•°Bw"œPÊ!ÙâBÆ^â2…‹ZåDŽÿË�4bGni‰ÜøQÔ×GÚ¼_cEç£I¦1lîÙ{’M>T’¸˜‘%Of„Ké®l^MQ=›�ÆŠè/R¶£�7¤”WRædá0onÝØTF.”عTRæ6ÁxpŽ£Uæû£ßÇ&¦\¶×z%SÈè_Žö^’8 ·T_¹•Xä‡*ÆbVæzPb~NV°phþN Oæo +iΗèï¤ühQ³KUâªl7Q¥åWlfp÷1Цl�TH,éQr¦ã”ô[£c—u®kð½ÄüvnÅ|ÑéÝLFxî$Cò´öý¶yÏ>× þ®"z^j¢û£9{&1èp„~|VZÑ z¶&œÃaÃJ‘X€(ª+ù0ÕƒVÙFm§ƒ¤‡ö}ž˜]Õ’ˆnG\ÔY£‰¦zßf·ß6aiÏm.È(‹î|Ÿ—®çŒn›Ãñ¼i@Œ“6;ÊNˆÃ,;ªÿtÇ�Ö.Ÿ éÅ#�îE÷ùå®fk�>sC³Þ3Ä’¦¡~B 7Æü‰>p.D“o<ŸŠNwãâX§Eh•ÞYS¿î.•ž?¹cC˜—)óŽasÁ™^Z¬r�ÒÉš®xeȵ‘~šFŒ€â-¡'œfú˜p„Ã`FžÞÖÉ€sÓŸNÑK̵ü ÿ¡Úò*Ídîá¢~ÛBJ¯k(T£î~vrÓji¤N­_wˆùc¡.ð;nUr馮ü\2Õgƒï§þNyúD᨞^ycJÚ%<¨þ´+˜OÒ,†¨vOaývkëG¨¶va­°9’¬NÄɯ9-è6¬Ëi N�$î®ö)àVbЉ¬®†·7©¡[°°VÚ|» 3¤F±�p*Ó¿Äq²ÎÌ"Ÿv²FFÙ1ôà/²ëT”¥7³®÷@¬h¦TµváªÚBÀÁ2¹ŽZ5¹¶µ|ºfP_ä "Þ»éãéßš ».NM‹I®%»ž�O|6Uœ¼ÎâÁu&ítmÀ“´k5¤•wÀF5`vaÞ4·Áž©Ñ” ßóƾÈÄ?ºtȵÆ.;‘oÓ®*ÈÈæN —çÿ¸�É΄Ò¬~pWÆnCQ5n+qóÇVÖ¿yã&ÑÆÞ>¤&3©ÈÎ~(.:¢JÏ€”yÎ™ÏÆÂ ÙA^¥Ñ¦5 UfÒN©Ú©ÓÛÓe϶ŠÇ4¶)!ÐóíœÀίÕžPž•€**ÕN˜Ù‡ñ}×V@/8CqלÙNÞ±L´ƒþiÛ^ñyª,ŠíÜÎ7†'±TçD߯Îðº±íߦ0Í{ªéáÞÉÞÝ|»á&ò v¸gÀ‡ã~¢j t¶ +äFí2Ô\^8Tä&WÆò^z+Òæ�p 9€æ®B*’f9oiè¶Wÿʤ)1æŽ1òôcZénÕô3 q£Òë®JxPÖÔ'ŽìFßû[“®›ßè~ˆòv{ˆEÙäþâ2ÑY¿è¦Äb¡¤‘ý8ä~?È�gçÀhñŽ­ Íæ·š^òÆ(ÎZ¢atóþnÒ¾rª0çÆhˆÅîXõVwKëÞ9dõžË©;s¢añæ…s/Å£Œ(ðÞÊÝËïùÖ¢…,C«Õòú6k;�|4Á†ûŽ’tC§›”ùŽ@{œph¶Ãý¾„€:ø+Uü~7·÷`ÿU'@HŠÏƒØÏ ¯Çáâ\�øvaóuú€M#Á¨�öÊ\~Àx–ç߸ãõ‰þÆè ÷_G£L¼" ï�785X —ï~òÊÁ–ŽpwÌ7ßn¦hƒä×ë™o%|…Ÿ ¶³ˆ»ß ý´~ïïz:vÀÞ5ÏK–ú %CäŸhF>±çÇgÓ×Ü¥4¦±"‡ûø‚2ÎpŒ#ÿ’uÞ2?¿Y%Ǧ‰)[«%/Á?|Á¯%E&¯ À8K¡ß(/pÔ'yúC’)ïÈmAGr'(§^ÅE(´¼p+‰†�!Eš`) PØ“ 4-oˇÒõ*´“.—|éÎ$Ä5rb<ýz2XzëZOë‘É1Tz‡d¯›.âÒXŠúdß9œÕpzÔ__â�ßoÆ èg¯#N}’0ëÁi7ó„à¬I80iMQß”±Ä0kbBzd˜F“j·¤åjdm§<1o“u3nß2»Ò6:c‹k@b`"˜epol•†m”RqÏ—.¬Ö÷2qWݲOPs·BRϨ×Ito»‡_�ˆlpq‡µF›d w¯ZÚÅk xçWëŸOsþþy_]lh¨x¿D1�?YõýwWònkw›ƒÏ|¿ª0ä÷eÖ}{t²|C¢~_/ì¡E†~÷Á†W:e›|§ºõ�“p;€ß™¼»Òà¤�ƒ§5ØÎ)ÔE΃—_]�J0‡ÿŸÐ d{/ˆ×ƒ„aÚÂðiŠ_Å ‹5´‹ïå5§«|1hŒmMG�©Š�Úq.0HL�§‚Á˜Ý#ÝJ�§4Ä®k¹,2’׸¤É¥À¢;’¼àÕ×ýƒV”‘›)DàþG—±µ��0_Ì—¿ë>¸? ³Á˜—qV¬ßš÷ôHÚXÑ+—Dzõu(º²�gJð .’äžoˆFGÄ´uŸ?P‹ÜóôU¥¢GHƒzÃwbñ£�©púb�¤7ó<Äkå™I§§De�ve€ü¨ïOŸ_ 6¡©ÿµBºÂê’ªW(6Û@™«^Û’°ÞªŸu^J4 ì­§ðzÆ?4¨ï錔IÕ&7°µbûo&—{±?©*¡á:²ÿ”EU|!è°ïü”ݦbR´µª,β_•´ ûôva¶o=ÐTÆ=b¶·Žº p[-­¸¯P7eLÄÇŒ¸l§DšH‘W·ÿtuÏŽÀ»¿x%s£†zµGÅõ6ðÖ¶çQK¤½NÉ’¹—|½«*w}·¿¯áÑÂA_À÷]Ù®o¿÷ŒE¾ÖÂwÄS¸³ ¹gYÑß\x[‚´'q¢ñdL:ÿÆC¨ÅâqÆ7ºKXmþJ Èïñî¼´/þDÉÿ$|Þ€þƒÉǯ?-±¡«ËoãHê\-i_Ë/ÁÚEÍ&ïÊò[ªy\%ôÏ'',ùúT^ЗYG\{¤�Ò/~Rzûÿ‘Ò�VÇÔ,HóÕÿ¯?¶Nƒ[Ö·¸éy{óþÖ¿¤ßÝ©œzÚ_³:uܼhTÛ÷ÞKlƒÔI‚ÚwˆÂ=]c§ÝçB?ýú ÛwÒ h:¢L^àwåÄm°x·Rá·Ü»�ňŠâÿjPÞçïà·²Ö[€ôh꿦àÂûÛÂ믮¤©«›pºìϸÕR_«‹jñƒ�¤4¿óÇŸ)Œ²>¾ôïì«Útż[ô¯ñV^¸NÓ õÇvNK¿Ìû÷çyYȨGM7÷§¨¹…ˆ,H·÷Çø[ˆ =·þ¿t`b0P&'ie8x:h1 ÿÿ2 ÿg7IhFw< *W>>ÿÿÿÿÿ2B <ÿÿÿ6ÿÿÿ#X5X) ##koO ;ev!sÿÿÿlF>YÿÿÿOBSFÿÿF 2ÿ}-5i#y10&pv# R7u]i@,ÿ!ÿÿw{ÿ2ÿÿJ<(ÿSC2jÿ.;Wÿÿÿ-p}ÿFÿÿÿHÿY8-/V3kO ÿsÿUsÿ{ÿÿ1 1* 7P:mX0ÿÿ9ÿGÿÿÿ}ÿÿÿxO|7YH:ÿ;LV?P7TV[>&8ÿÿÿÿq}+ ÿÿÿÿÿPÿm6= mÿÿÿÿÿÿÿÿÿ%mA9ÿCÿ]JP~72 AODÿX#-{j('ÿÿÿqÿÿvHd!5(Mÿ!ÿ:7pÿÿÿX8x ÿÿÿÿ=ÿÿÿ:Fvÿÿmÿÿÿÿÿÿÿ"U`UÿÿÿU/gÿÿ&Z|)NÿZB6$E3D*KAÿÿÿÿ ÿkQr2hCG_8ÿÿ*ÿÿnÿÿ(ÿÿ2j=ÿ,ÿHhJ5sP#ÿ1NGmJÿVÿ ÿ Iÿ'ÿ7kBtIOÿRWV "?.d+:t)uF9iZKQ>kf_ÿÿÿÿ']HKN.0Y;i?}ÿÿpÿÿÿÿ(ÿÿÿA'.5R~~ ,_ÿÿÿiÿ%,S^7)~K,? ?ÿ\-h-_T,5ÿCÿÿÿa5oQ^n.W~S8wVm~ÿ+2ÿÿÿ1ÿp1d:ukÿmqÿÿÿqrhUCBBÿn.\Pÿ|9%ÿÿpÿ+Tÿÿÿt ÿÿ8_)ÿÿhÿE5Ezdÿÿrÿÿÿÿvÿÿ<ÿ6ÿVÿ{ÿÿÿ"ÿZoYvZ ÿÿÿÿp*=&57j/ÿÿ'Kÿ,5 CVÿÿÿSÿÿÿA )Iÿ8ÿÿstÿÿ;_fÿrÿÿ >'J&Sÿÿÿ7Hÿ>ÿÿÿÿ ÿYÿÿÿÿ4ÿÿÿÿÿ#{ÿBbÿFEÿÿÿ4g(EDÿSDÿÿÿqÿ{G6yz\iXPITd @xP>?Q77wjsf--y, $ 4V[ `E:U~X!H@7ls*4MP&n9kX lO"= &L.+ÿ&7eZj_*ÿ{aÿ ÿÿÿx:;+ AoVj{gfTzAd4Mÿÿxÿÿ} 0ÿÿCÿÿA3ÿ _2ÿnÿqÿ~2$|SB?ÿ>0ÿÿw.0AÿÿÿZ1]b_@6H5&Ag 19] =^ÿÿÿ}ÿ:7ÿs+.Cp ck6U%ÿÿxJ I5dÿÿ`ÿÿÿÿ<ÿÿÿ810l1DCÿÿ5>rzWhrayÿÿÿÿ`j7ÿ;R /}Wÿÿ~-i1 `()E_>k"xÿÿÿÿÿÿÿgEKÿÿ&ÿÿZ~b{eG?sÿ=fÿÿ/ÿÿÿÿÿvÿÿmNxk)i"T MW4W \Z'56Mf.5 ~o(ÿÿÿÿqÿeÿÿD^6ÿÿÿIÿ%ÿMNp`ÿÿÿÿÿ=ÿÿ/Jÿs'ÿÿÿÿPtYÿ *ÿÿÿJÿÿx>ÿ! hÿÿaUÿÿ#ÿÿÿ>.o4Oa O{ ?q)\yÿ2@Lÿd%ÿy!;/.'<0;d4p>8 l*{Uÿÿ/q'`ÿZ0hÿÿÿbHi(_RÿPmcv(ÿXÿ$m-ÿ,ÿ)+ÿtoÿÿ%aÿb? ÿÿÿÿÿÿpRjÿÿÿÿHÿU+',\-ÿÿÿÿÿb0P&'ie8x:h1 ÿP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/poll.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁP/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/poll.rsÁ cøš+ LK;":Ò‘%õÚòóòó® * 5S/S29MPOGOILMNK+1687>DO0.&+30N!2@'_L 'BP M?FFOK$MOLOO63KOIKNHHOK"QFN/??9EGIN DO0&65@+O]OPQN-/'IOKMNOQNB2LSPPII72LHQNMNJKINIP3*CG""""""""""&""KLJQOPQHQM @XIWH,1AW  ( PP ^. 6 '  %8%% /"Q ;: EPG(+7%gA ;*"PPNQERPN-NQNON'GJJ@N5GG#9OM#HM2BHS!4782!1/7/1/ % R%64+"7P$+#FT# _= * #"A*@OPK5ODOOIJ JOO$P;Q#LMJ,PPNI5/??%HS!42!",%:9F+"76$2+$(/6#/D# c #P 0CJNQPQP"Q:JKHS!4*!"!:9F@""P7$" 5%;<DJQ5FLM!.>'!P7)PQ7&03>#-:!M!1  JKO8'QOUPIQL3IT%,-#8<8RS(N M,>&KQPOPO04IT#%4('78:*P!IG#)P:&%R42;P2RL,G9) 24 ¾-Í-š'³Öiµ/(!–¸qjc/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/selector/epoll.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3Ác/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/selector/epoll.rsÁ ?NÕŽÑ×Ü�j|ï5µLÌ»7»7ö I0>'3+?a%9 60>% ]MPL'B'&-!!& M: ],3,( &Q_,3,( &Q<&V!$ (#4!,!!$+"0;C0<-<31:CAH41:.BFD=0<'6'U5A.   "! 8&;"A/7L[ÒÜFSÒæXDx|b/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/waker/eventfd.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3Áb/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/waker/eventfd.rsÁ Âë1ÜÑ �d‚[3*#ññc"".N76HEL/ EP0M<*O" # zX8HÎ�‘9”qÍ+AX/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/mod.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁX/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/mod.rsÁ >eAò’M™» ÈèÜÎ.9«-«-¶H;2 41 . ##!! $. %#!"# $# %.*)#&/ #"!#"#! #/f %#!"## $# $C* D-)'#%&'$(' E3 €M'H@&C L 5.H1+')(,+G%! "#!I " #!*`[i‹_ÕÌÖHë°ŠäLÝê]/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/sourcefd.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3Á]/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/sourcefd.rsÁ #÷¿¸‰“\J3½ü¶¯lbàà "N7 /IFJO.MIQ>>2"D C H0&6.LGR1"W D Y F J4 (*@BF0É™}»zêyNú)ëÖÀ�ÍX/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/tcp.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁX/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/tcp.rsÁ òÚâ…ùR“H Éä8ØmÊ%Ê%‹ &""'N7/FM!,-*T:M U: OR4 \1;5 `OMN;GG5=:=E%G) zr³¶y�Ê>)Ö>”{,\/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/uds/mod.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3Á\/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/uds/mod.rsÁ CYg÷†æ’飺Uéê…–1–1³*(""$$H9GD18.8AMHAMF>@-3@3% E!QPOQC "? ;H2!Q/5  BFLGIJM; CVCCVC  () ,$I5K6-.8 <&2$0;#M1E6-*8g‡ãï†ÇÚ±ŽiàŠ&Y/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/pipe.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁY/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/pipe.rsÁ ½ò09ë#õÊR!þsæ�…‘…‘î0 b4(! T4   P1/4 FJ6S--!  1M: /)O3QQV KQMQILNP%1%057JFTN&.6''$>!/3*MK+ '%"/6ML1A!#+6<.-#% A0))$+!/3MK#!59-! 1664!7;I=O+KQ*2 ! 4"/0G>#8V!O50 (2J= %8W!N50 ' 6 &" 8:F(;9NC,6;9NC,6 8#+M<19 #$. &)( #2 #7=I=O+KQ*2 ! 4"/0G>#8V!O50 (2J= %8W!N50 ' 6 &""8:F(>8TB>8TB 8&/N? 8&/N?$.#39 "*+("#2 fE,A( aE;0"! "C4  ÍFׇTbNe¶x²'¡Y�S/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/mod.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁS/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/mod.rsÁ ‰æ|ˆ‚à•©Wë”æÈ}Š)··V'LG:?6OH>% 9I'(K1'ZPA2I8)J"&-  43$##&F9þ¤hÚ*Ûù/¡Ùº[R/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/macros.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁR/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/macros.rsÁ Ö"@³-”e|0Yµ‰ÃÃb?6& (? ' - % '> " $; Q H_ P =T $ ".%-’¨†�†Üv”®v—7ÿU/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/io_source.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁU/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/io_source.rsÁ óµÀC,_¸û«ÖæfkrÓEÓE·!&N7"'0/LKONF"3 QQ+!')%, P+KQ*25 ()4N-#Q" 'Q"#3 4&!/J!7LF!8@&!/N!7:G!9 3&!/E!7GF!8D#?<A8###6 KA4G/ .C MQ I42- )= .M O=J4N( )= $C ”úͪç]—Îñ êï½ï\/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/net/tcp/listener.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3Á\/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/net/tcp/listener.rsÁ ~ÉI+4r-�]hõÛat¯©M©M¶"&TN7\a  4$834-.90.G!1'L?2'O$5$@5R!CJNNPQH9A(CK$QH90?QQD98 ?GQD9 +?OQ@ KJ,OA>>Q2O+KQ*2),! 4."/!930H= #8Xœ!N50 ' 6 &">6T@>6T@;7NA,4;7NA,4#8:F( ?<$.<#<-E48<#--<(<#-E#,#,2!+##1E@D'--0'1E+0*)[SHBJ ­·ŽSÁßÔj’Ò‚ÄôåKS/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/net/udp.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁS/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/net/udp.rsÁ xü‚a§ÙØ.HÿJ™©B·Õ·ÕŒ%JOO >0&TN7\a 4%QQ>n0":.$$`FFa9c!_OO1 C%";H/R8EE%H%$ %5Br! 4!/E*Z= \? =6DKOL;* FHQ.Is! 4!+-: 9 TBr! 4!+4-$> 8O!N-!4!?K4O#  Q=O8PS5HI! 4!?M4AU  Q7QQPS5HI! 4!?M4AU  Q7\-:2["PN5HI>2Q6PN5HI>2MQKQ&@!ELBr! 428!I43 9  >%E4!&Br! 428!I:  2JO@F-J4).:'IKOC@E-I4(-8&LQ@F-L4).:'?QBr! 4!?!" (  8 ?G Br! 4!?(  +?ONMK+1d;AONO1^;@4%*1e<B4%*1_<B10'?OQ@ O+KQ*2),! 4."/!9//G= "8W›!N50 ' 6 &"#8:F( ?<$.<#<-E48<#--<(<#-E#,#,2!+##1E@D'--0'1E+0*)[SHBJ ó^c~ú˜³g1åêÆ>b}T/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/interest.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁT/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/interest.rsÁ  8ÿ‘RÓÜ\*�ж·±2±2Ê"NPM481A+7 5B\B\H! RH"RM<\%I P7. -]:T0I SBK,+CAC= ]?D?-'?-';(";("@-'*%.$A $& $& %#! $# (% & (% @ $(* 8Ÿs=Ѩé;ª$Ër�Ô±qÄq/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/selector/stateless_io_source.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3Áq/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/selector/stateless_io_source.rsÁ é២„k&ú%~ï«X� � 2M (!+G (E2;2=\2+jœ¾ºL¾­ú„.Ý&{Q/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/token.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁQ/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/token.rsÁ #éï�¿š¦þY//á�[¥(¥(Œ9F941AENF,DO034.#K#O)"&<#!CLK'!O&,7 28 '"J$257F3"@F8Cc4?UO'L0P'L8'I5UM'L D#2Õºã<»-ó)ç�°6¿?Q/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/waker.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁQ/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/waker.rsÁ Ô±ÑÞWÄÄòù¨Mp9ðð`# 2JJ?, OOJHKO(LD2.9<+)!/DH ),390G#P!5(1 I!#Q;#+˜º!œ©ôPßdí¸(­Å¦žW/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/event/event.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁW/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/event/event.rsÁ ÀÓäŠ[0b^/ ŠtðÀCÀCæL@4"$ ##'?GGB‘Q0(-?(-<PN7PA,,,N@DM%*BNDNOBMI(A,,,7,@DM+0CJOI(MJ(A,,,06,@DM,1?PA,,,,@DM(-:QA,,,0D@DM#(:P:#(IIDR? KPL/+?'-(44.:<4*+53K9D [ôË; ÃÔ[ ÄÇG<ŽX/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/event/events.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁX/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/event/events.rsÁ ž+-Ùf ˜b9Þ%Ú - -æ&LNK+44".902!".?!:A#-.902!%?!:J 2- 69 C 2- &= 2$ %52=!4!!6%)C%>  % ?N2=!4!!6%)C$ )7'+!/- 4+?.»D¦S…tß;S�Ë.INX/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/event/source.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁX/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/event/source.rsÁ §6…c‘p¡·?ïÖ½ÿ#ÿ#‹( >@JO '*#PKMP0/ POPL:>;DO*W 8= Y :? J:- <PP"H?9EPL>9EHLE68F&®ŸâDÛ9vƒ0®\^!‰\/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/net/uds/datagram.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3Á\/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/net/uds/datagram.rsÁ žÓ“;>¢ÐÞûå¿• mM¨D¨D�T, 4(@G5'NIKJNONA* 6K)G!J3B5@>11 ,9 3@8'JQ7'6>2;9V;7MK9:24@ FIK/>!O+KQ*2(V! 4"$6/F>#8X!N50 (/G= #8X!N50 ' 6 &"&8:F(#?"$. #"0E7;0.[[J&30(&#/ uÓ/üSýñù[XX>Ü“\/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/net/uds/listener.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3Á\/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/net/uds/listener.rsÁ ¼\Ÿ/â‹ÆÙŒ*VV°Å ÆÆ‰T, 4.(KG5'NIKJNONC, <MC5;9 4@ &8:F(#?"$. #"0E7;0.[[J&30(&#/u½•x¶Û|_–³Œ� ¼Z/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/net/uds/stream.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁZ/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/net/uds/stream.rsÁ #+««9ì@�’ùö½P·©F©Fš7T, 4'&0KOH5(3KOJJFLOLIM=* 6E<!O+KQ*2(V! 4""60G>$8Y!N50 (0H= $8Y!N50 ' 6 &">6T@>6T@;7NA,4 ;7NA,4$8:F(!? $.# .E59,*[YF$/.($#-ÑtÆ¢ëínÔzq³ƒ‹U/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/event/mod.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁU/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/event/mod.rsÁ ¼·±òáxh±g ÑÑ )# &Í÷Öî[¶¢G ‹_ôüX/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/net.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁX/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/net.rsÁ ):?·&Úxù­õÕ1ØàL‰@‰@Ü Le-.$&e!NM698<? +94 )G U- VU- ZUYS #;2AU&UZ+@2@/^",#+"'-+)(')*+(,+*(*'+0@M &4B0,100'-+)(')*+(,+*('*+1J"AN S EH%,0]TI4< _V=51$$ 6!Hñ™.ËÛbûçŽ×§a/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/uds/datagram.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3Áa/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/uds/datagram.rsÁ 8ãÌ1Uóš Ùßømƒ¬šš ','&Q6W<;;6M"_¯fS —éü ^1†ß8îëa/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/uds/listener.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3Áa/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/uds/listener.rsÁ ÖqÁ_ÃÍmØ¼Ý¦à‡‡”•(•(˜'",'5Q<@6W,;Š ! #$]HAMFF GG9 >"L G 8"HFACC;="  C4'BPC#<_J#(RXÍ  IÆØç§qÇqKJ_/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/uds/stream.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3Á_/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/sys/unix/uds/stream.rsÁ @ÿ€£¥4U¤ ÕuÓ�Bµ»» ,'&R<>6W5L!I#CeXñäî¾/ƒ[™ OÑÇS/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/net/mod.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁS/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/net/mod.rsÁ f¶Õeü÷´Sœã«æ 8C� � 'JOO > PRP;QQQ?/PR M? -8 8 Ác³jo\D‹¹"\ó…ZW/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/net/tcp/mod.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁW/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/net/tcp/mod.rsÁ @’Á¯°Öà—šëéþv­laa% KŒü»Ç:6vCå¯rÈ#W/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/net/uds/mod.rsÁD/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3ÁW/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mio-1.2.3/src/net/uds/mod.rsÁ ’äæWøñhj%‹Þ‰˜˜&& H¶ÎUõZ9ú)¹Vö6Ÿ6­�±Ù³¶Í·¼¹}»A½�¾‘À<ÄÀÅNǸÉ5ÌSÏ�Ó‹Õ'×ÞØhڅܤÞhà¶â€ä׿è(ê‹ëníÍî"ð[ñx86_64-unknown-linux-gnuÁÓ¸S3y²äûª5_Ö¢êémioÁ-e91db379c565967aÁÞpeA/6»ÐåE·ìd™ Áº!ÏÏË„ Ë `��‘‘Ÿ›)ƒ�(ÑÑÛ Û  à ƒà+Ú�(„ Â+Û„ „ ‘„ Œ$Œ$ÛÛ‘Û‘Û‘ÛÇ+Û‘Ú‘´®ÑŠ¿óÒ½ ѤóÑó¿½ ÒÒ¤¤ÛÇ+�Ú׎ŸŸÝ„ ݈ŸÛÝÏ‘ÛíÇ+ƒƒ‰�(Òö Ú©ŽÌ·$€ä €€ € "–Ûfrust-end-file