rust ³Ê#rustc 1.98.1 (48a229cea 2026-09-01)ÁûÊÆÍRLñ.åSÛAúwjL-df1bddb45adbe94bÁ±ò‰<å%Z‰>¸64‡ËV`-2d2ab9fb0fe1def5ÁЉƒ!Ó‰|× ¿LÆ"Ócore_hint_black_boxÁü”"û    unwrap_u8Á”´·¸´¹º´½¾!´!Æ ¿$� &”ConstantTimeEqÁ(ct_eqÁ(ct_neÁ +�+¼ .¼generate_integer_equalÁ 1¼ConditionallySelectableÁ3conditional_selectÁ3conditional_assignÁ3conditional_swapÁ to_signed_intÁ#generate_integer_conditional_selectÁ 9·;·ConditionallyNegatableÁ=conditional_negateÁ?�?'aÁ?ñC�C”F�F˜ F¦FöFøFunwrap_or_elseÁL‚Fis_someÁFis_noneÁFƒ P‘P‚F½S‘S‚For_elseÁV‚F into_optionÁY�Y·\�\¼ConstantTimeGreaterÁ_ct_gtÁ!generate_unsigned_integer_greaterÁb¥ConstantTimeLessÁdct_ltÁjûl�l˜ lgetÁChoiceÁp póuŽwñy¼ {¼!}¼"¼#�¼$ƒ¼%…¼&‡¼'‰¼(‹¼)�·�Ð�é*‘·‘Бé+•·•Еé,™·™Ð™é-�·�Ð�é.¡·¡Ð¡é/¥·¥Ð¥é0©·©Ð©éCtOptionÁ­�­�­ú1±�±Ž2´�3¶�¶ñ4¹¥5»¥6½¥7¿¥BlackBoxÁÁ Á�Áó8Å�ÅŽ9È�:Ê�Êñv8x8x8x8888 8)8)8*8*8-8-8/8/8z8z8|8|8~8~8€8€8‚8‚8„8„8†8†8ˆ8ˆ8Š8Š8Œ8Œ82828484858586868Ž8Ž8�8�8�8�8’8’8“8“8”8”8–8–8—8—8˜8˜8š8š8›8›8œ8œ8ž8ž8Ÿ8Ÿ8 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³8¸8¸8¸8I8N8O8[8[8^8^8`8`8º8º8¼8¼8¾8¾8À8À8c8c8e8e8k8k8Ç8Ì8Ì8Ì8(3=_dù ppq¾ ró X·5h§í»>ˆ………Ÿg…¬…«Ó……“ò……ËÔ……Êò……ëÕ……�ó……ˆ"…¬…( �(…(Ä((((((((((�²‚²ƒ²LessÁ„²…²†²‡²ˆ²‰²GreaterÁв%ÑÓ¡yû3Ä3ì3õ3þ3‡3�3™3¢3½3…=Î…­­È ¯�°úÔ¼¬ìhÄÏÎù ŠŸgŠ¬Å™Ç™È™­É™Ê™àË™óG*¤�R{9 Ί3Š(Š_Ä_õ_‡_™_½dÄdõd‡d™d½…ÁÁÂÓ Äó #ýI«Wì{^Îù žŸgžsp´­ÈÁtpup±­ÅÁwp¶­ÊÁ&pCÅ™pppppp!p+ .py{}�ƒ…‡‰‹1�²\­�‘•™�¡¥©9�²;pY­?¹»½¿b�²fghij�²ù ¡ˆ…Ÿg¬«Ó“òËÔÊòëÕ�óˆ"(3 C=:_d(¾)Ã)v#(…4 …>GQ(Å)  ß)Ä  ŸgTY çgjo\|Ê)x”ÀœÜÄœ¯ÅœóƜǜ€Èœó‘¥_¿´ÒwĤĤŤErrorÁ Ñâó:½ÖàMš $ €g€gŠ‚gê ûcƒgbufÁûcØ«q¢1È¡kÔ s‡!c  ÄqÄ#y›œ©´Â#‡!¨¡!Æ4‘-Ä�-üé,4Ä„-š ,ú, ,Dò2ÄŒñ2þ2ÄD†3ÄŒ…3’3Äüñ2% ɇT]  ¸[7Ô $D¡3Äl¡3 ­3Ä´3ü¹2{ $Ô2…4Á2«ùÄÚÄó§Ä…sourceÁ@`�&Ñ4¯4Ä,¸4Ä„®4 ¼®4$¿4 «Ä…04¿4Ë4üý3N…4�4…$‡4…�4ÄzĥĚ)rhsÁ0Z”(¡,»5\»5 ®Ó……-Ã5+œ³5Í5ü€5M­"¨5 …L‘5…œ5…}…•"�(&SÏ)­4Æ6Ä,Ï6Ä„Å6 ¼Å6$Ö6”('4Ö6â6ü•6M…4´6…$ž6…¤6ÄqĜđ)�(-W”(•,Ð7\Ð7 ÎÔ……-Ø7+œÈ7â7ü–7L­"½7¨*L¦7…±7…z…’"�(&Pï,ª4Ý8Ä,æ8Ä„Ü8 ¼Ü8$í8”('4í8ù8ü«8N…4Ë8…$µ8…»8ÄqĜđ)�(-W”(•,é9\é9 îÕ……-ñ9+œá9û9 ü®9M­"Ö9¨*L¿9…Ê9…z…’"�(&PŒ0ª4ë:ÄLé:Œâ: ã:ÄÄâ:$ô:”(14ô:€;#üÁ:?…4Ñ:…$È:ÄrćĠ A”(4½Bü¤B ĤB ŽÎ7#ÌB$ü“@¹Î ¶@Î,©@ Îy ΃inputÁ$F§3‰t°CºCÄtÁCËCÄü°C É ‡T] �&‘1Ô ›$„ŠELŠE $Ä,”E#ăE p¡E'üûB¦…4‘CÄ,ƒC¿ûæ¬Äˆ‡3+M�&ÐÀ5ªŒÜM,áM )$ÜM,çMdáM”ÛM Š"…M óM*ü©MJ…4ÊM ü6,²Mé7,¹M…˜î L÷6Áª7‘T¶TT­UŒ¦U|ÍUdÍU ®…Ä ÚUÄ 0µW Ä\ÒW$×W ìwÎ$ÒW 4×W\âW$çWÕ9$âW 4çWäÒWÞW ÞQ�p�pIterÁ pí óo¡p end_or_lenÁóo¢p_markerÁóoÛê2ÝЫί: Î ¦„ÞWà<ÒW ‘P²Œ²ŒZipÁµŒ—ÍJ¶Œ˜ÍJ·Œ÷ÍJ¸Œ¶ÍJÉ by­]ò¯:¯:€… ø<ÂWcŸ  ®³ ÆQ¾; Ä ÌÑ Ý ðÇW àù3ù3ù3ËW à¶=ù3d‚X,…X )΂X‹X L…X ¯XD¯X$±X”($4±XdÄ‚XL�X ˆ \�XìýW L½X-üüSÁü¬T‘ü©W”„‹…4›T Í,…TÜ?$ŒT«°T¦«¼Ä,­W¾;j¾;¯:^¯:9¾;ŠÅ™Ç™È™­É™Ê™àË™óG*¤�R{9 ¶=× ¾;â´Wù3ûù3ãÄ[š Õ…ÝÄ´í_rhsÁõ¶ù®ì�X aiÁobiÁ]ƒ ³wÎþ°Bö‰9ÊÕ9ƒÕ9\©:;¸;±ã<·î=ˆ”(Mà>",¨Y$°Yt§YŒ02(|¦Yª78»Y/üôXG…4•Yš ,ýXš „Y…€…§…Ÿ)�(-WŒ0·ª7–`Ž] îÕÄ#Ä# Ž](•]0€Ê^`Ì^ —¡Ê^pÌ^°Å^ €ß^ ¾b�í^�/ 1�/�]�øÅ^* ‡  ‡.  CˆÓ_  Ù_ÄøÒ_  ì_”( ÈÒ_0ì_€`zø�\ñø€]€ø·^É …0°\Ä#(˜\Ä#(Ÿ\Ä„]Ä»^ąĺ�ƒ�އ)0İcî f®i¯jÀöDZ°E)”((Ôaøæ[öÄ0ëaøæ[ŽÄˆéaøÓa((ãa )Äo2Àãa‰b|øÔ`µ …0õ` ì(Ý`™K(ä`Ä#ÈÄÏìæÄ#›ÄµìÌ@î CtÏJÁ`Ž] îÕ õ L Ž](•]3€Ê^`Ì^ ΢Ê^pÌ^°Å^ €ß^äb�í^�/ 1�/�]�øÅ^* ‡  ‡.  CˆÓ_  Ù_õÈÒ_  ÄøÒ_  ì_”( *0ì_€`~ø�\ñø€]€ø·^É …0°\ L(˜\ L(Ÿ\õ„]õ»^õ”õÉ�’çHš‡5<ÄÔõùgî j®m¯nÄ™LpÖL<”((Ôaøæ[öõ0ëaøæ[ŽõˆéaøÓa((ãa )õo2Àãa‰b€øÔ`µ …0õ` þ(Ý`ÓR(ä` LÉõÐþç Lœõ¶þÍ@î CtˆRÂ`Ž] îÕ ‡ÚS Ž](•]3€Ê^`Ì^ „¤Ê^pÌ^°Å^ €ß^‹c �í^�/ 1 �/�]�øÅ^* ‡   ‡.  CˆÓ_  Ù_‡ÈÒ_  ÄøÒ_  ì_”( *0ì_€`‚ø�\ñø€]€ø·^É …0°\ÚS(˜\ÚS(Ÿ\‡„]‡»^‡—‡Ì�•çH�‡8?ÄÕ‡ügî j®m¯nÄÓSs�T?”((Ôaøæ[ö‡0ëaøæ[އˆéaøÓa((ãa )‡o2Àãa‰b„øÔ`µ …0õ` �(Ý`�Z(ä`ÚSɇÐ�çÚSœ‡¶�Í@î CtÅYÂ`Ž] îÕ ™—[ Ž](•]3€Ê^`Ì^ º¥Ê^pÌ^°Å^ €ß^²c@�í^�/ 1@�/�]�øÅ^* ‡  @‡.  CˆÓ_  Ù_™ÈÒ_  ÄøÒ_  ì_”( *0ì_€`†ø�\ñø€]€ø·^É …0°\—[(˜\—[(Ÿ\™„]™»^™›™Ð�™çH¡‡<CÄÕ™hî k®n¯oÅ�[xÍ[D”((Ôaøæ[ö™0ëaøæ[Ž™ˆéaøÓa((ãa )™o2Àãa‰bˆøÔ`µ …0õ` ¢(Ý`Òa(ä`—[əТç—[œ™¶¢Í@î Ct‡aÂ`Ž] îÕ «Ùb Ž](•]3€Ê^`Ì^ ¤¨Ê^pÌ^°Å^ ü dì d Ù« ü d#   Âd«%   '«L «€ß^ í^«&  («M «øÅ^* @«$  9ˆÓ_ Ù_«ÈÒ_ ÄøÒ_  ì_”( *0ì_€`Šø�\ñø€]€ø·^É…0°\Ùb(˜\Ùb(Ÿ\«„]«»^««7««ã««öÓg¢LÄè«{î ~®�¯‚ØÒbò�c¾Ïcƒ”(.(Ôaøæ[ö«0ëaøæ[Ž«ˆéaøÓa((ãa )«o2Àãa‰bŒøÔ`µ …0õ` ´(Ý`”j(ä`ÙbɫдçÙbœ«¶´Í@î CtÉiÂ,€flÿe 4•f t”f    |“füÿe$,�f )ìu/´�f©f2üÍe\ …4îe ½,ÖeÃl,Ýe™KÇìνäìë™K˜ì·½ÍìÔLî P}þkÆ$Ésü°s-İs 4ü6,,Ïs4Ös1ü¨s5äs5üßr…­"�s ü6Lõré7,€s…4Žsü6Žé7¦+î /choiceÁ9pámѰyÑy  ü¼y ”¾y 5ü6 ¼yK4Õyô¾yûy üæy ”èyõo æy ,4ÿyôèy�z6üØxµü¢yk ­"—y¾n ìx¾n úx…4ˆyü6 ¦y­"Ðé7 ¾n ­"£é7º¾n"—W˜[‡n_ªc§õo;õoú0ø�øHÿà>'Xÿø÷*ìøö+ €ì  .øö1Ä8Å€ öDƀʀ )€½€    ¹€  îÕÄ#Ĺ€ </Û€ŽøŸ~¼øëp Ä Ü~Ä#µ~Ä#¿~…0É~Ä ïì&ì@Änš ‡EÄÑÄ—a˜d‡ngmaskÁn¸à>ÓöDSšt0Õ‚�Õ‚HÜ‚à>*XÜ‚øÔ‚*ìøÓ‚+ €ì  /øÓ‚1Ä(§ƒ 0¯ƒ €¦ƒ    ¸Ÿƒ   ø–ƒ   Ń�øÿ€ÆøÈ‚}­"½� ÄH•�Ä#( �…0®�Ä Ì‚ìì2Äcš }6Ä»ÄÕÄþÄôqî s‡nuÿtwÊà>Ð0À…�À…HÇ…à>*XÇ…ø¿…*ìø¾…+ €ì  /ø¾…1Ä‘† –† H�†    €‰†   8«†  8Ć  Ú†�øéƒñø³…§ø�†Y­"¨„áxýƒáx‹„…0™„Ä ·…ì4ìOÄ€š šSÄ…†ÄöÄÄ—x˜z‡n|ÿt~ªW åà>ÿà>(ìý €ì *ëñ îÕ™K™Kóð î   ëñ îÕ™Kìé "è’åá ìÞ™KÜ™KÚ…ØìÖì Ä:š Sì�ìÓ—.˜2‡n6ÿt:…à>¡À!ƒ€åÏÌÉà>ðÇÄìÀÍ€ìÛ í¬ © ¦    £      œ“™” ­"� ì�™KŠ…‡ì„ì«ÄÜš ö¯ì4ìOìyìpîî ñ‡nôÿt÷Kà>R‚|à>£zwìs€€ìŽ  _ \ Y    V   S  P  M”JE@ ­"<îƒ:îƒ8…5ì2ìvħš Ázì'ììDì;—�˜ ‡n£ÿt¦ª€ à>*0ø�øHÿà>'Xÿø÷*þøö+ €þ  /øö.õ8Å€ ™Lƀʀ )€½€    ¹€  îÕ Lõ¹€ </Û€–øŸ~¼øëp õ Ü~ Lµ~ L¿~…0É~õ ïþ'þAÄoš ˆFõÑõ—a˜d‡ngÿtj´à>ЙLOÍŠ0Õ‚�Õ‚HÜ‚à>*XÜ‚øÔ‚*þøÓ‚+ €þ  0øÓ‚.õ(§ƒ 0¯ƒ €¦ƒ    ¸Ÿƒ   ø–ƒ   Ń—øÿ€ÆøÈ‚}­"½� õH•� L( �…0®�õ Ì‚þþ3Ädš ~7õ»õÕõþõôqî s‡nuÿtwÊà>Ñ0À…�À…HÇ…à>*XÇ…ø¿…*þø¾…+ €þ  0ø¾….õ‘† –† H�†    €‰†   8«†  8Ć  Ú†˜øéƒñø³…§ø�†Y­"¨„’�ýƒ’�‹„…0™„õ ·…þ7þRăš �Võ…†õøõ!õ—y˜z‡n|ÿt~ªW çà> à>*þÿ €þ -íó îÕÓRÓRõò ð   íó îÕÓRþë $êšçã þàÓRÞÓRÜ…ÚþØþÄ=š VþŸþÕ—0˜4‡n8ÿt<‡à>¤õ•$¸–èÕÒÏà>öÍÊþÆÓ€þâ ô² ¯ ¬    ©   ¦  ¢›Ÿš ­"– þ“ÓR�…�þŠþ²Äãš ý¶þ:þUþþvôî ÷‡núÿtýQà>Yˆ…‚à>©€}þy†€þ• §e b _    \   Y  V  SœPKF ­"B¥š?¥š<…9þ6þ}Ä®š È�þ+þ þJþA—¢˜¤‡n§ÿtªª„ à>10!ø�!øH!ÿà>'X!ÿø!÷*�ø!ö+ €�  1ø!ö.‡8!Å€ ÓS!Æ€!Ê€ )€!½€    !¹€  îÕÚS‡!¹€ </!Û€žø!Ÿ~¼ø!ëp ‡ !Ü~ÚS!µ~ÚS!¿~…0!É~‡ !ï�)�CÄqš ŠH‡Ñ‡—a˜d‡ngÿtj´à>ÒÓSO‡¡0!Õ‚�!Õ‚H!Ü‚à>*X!Ü‚ø!Ô‚*�ø!Ó‚+ €�!  2ø!Ó‚.‡(!§ƒ 0!¯ƒ €!¦ƒ    ¸!Ÿƒ   ø!–ƒ   !ŃŸø!ÿ€Æø!È‚}­"!½� ‡H!•�ÚS(! �…0!®�‡ !Ì‚��5Äfš €9‡»‡Õ‡þ‡ôqî s‡nuÿtwÊà>Ó0!À…�!À…H!Ç…à>*X!Ç…ø!¿…*�ø!¾…+ €�!  2ø!¾….‡!‘† !–† H!�†    €!‰†   8!«†  8!Ć  !Ú† ø!éƒñø!³…§ø!�†Y­"!¨„Î¥!ýƒÎ¥!‹„…0!™„‡ !·…�9�TÄ…š ŸX‡!…†‡ø‡!‡—y˜z‡n|ÿt~ªW çà>  à>0 �€�# 5óù îÕ�Z�Zûø ö   óù îÕ�Z�ñ *ð¢íé �æ�Zä�Zâ…à�Þ�ÄEš ^�¥�Û—6˜:‡n>ÿtB�à>¬µ¬*ø¬îÛØÕà>üÓÐ�ÌÙ€�ê ü¸ µ ²    ¯   ¬  ¨£¥  ­"œ �™�Z–…“���ºÄëš ¾�@�[�…�|úî ý‡nÿtWà>aŽ‹ˆà>¯†ƒ�Œ€�� ¯k h e    b   _  \  Y¤VQL ­"Hç°Eç°B…?�<�…Ķš Љ�1�&�P�G—¨˜ª‡n­ÿt°ªŠ à>90(ø�(øH(ÿà>'X(ÿø(÷*¢ø(ö+ €¢$  5ø(ö.™8(Å€ �[(Æ€(Ê€ )€(½€    (¹€  îÕ—[™(¹€ </(Û€¦ø(Ÿ~¼ø(ëp ™ (Ü~—[(µ~—[(¿~…0(É~™ (ï¢-¢GÄuš ŽL™Ñ™—a˜d‡ngÿtj´à>Ö�[OÏ·0(Õ‚�(Õ‚H(Ü‚à>*X(Ü‚ø(Ô‚*¢ø(Ó‚+ €¢%  6ø(Ó‚.™((§ƒ 0(¯ƒ €(¦ƒ    ¸(Ÿƒ   ø(–ƒ   (ѧø(ÿ€Æø(È‚}­"(½� ™H(•�—[(( �…0(®�™ (Ì‚¢¢9Äjš „=™»™Õ™þ™ôqî s‡nuÿtwÊà>×0(À…�(À…H(Ç…à>*X(Ç…ø(¿…*¢ø(¾…+ €¢%  6ø(¾….™(‘† (–† H(�†    €(‰†   8(«†  8(Ć  (Ú†¨ø(éƒñø(³…§ø(�†Y­"(¨„š¼(ýƒš¼(‹„…0(™„™ (·…¢=¢Xĉš £\™(…†™ø™!™—y˜z‡n|ÿt~ªW çà>à><¢€¢3 Eÿ îÕÒaÒa *   ÿ îÕÒa¢ý 6*üªùõ ¢òÒaðÒaî…ì¢ê¢'ÄUš n,¢±¢ç—B˜F‡nJÿtN™à>¼‰Ã6ÌÃúçäáà>ßÜ¢Øå€¢ú  Ä Á ¾    »   ¸  ´«±¬ ­"¨ ¢¥Òa¢…Ÿ¢œ¢ÊÄûš ΢L¢g¢‘¢ˆî  ‡n ÿtcà>qš—”à>»’�¢‹˜€¢­ ¿w t q    n   k  h  e¬b]X ­"T¿ÇQ¿ÇN…K¢H¢•ÄÆš à™¢=¢2¢\¢S—´˜¶‡n¹ÿt¼ª– 'à>I$ì�Ä$ò�ÄüÕ�*´Õ� 4ÄF74ø�1üÎ�2 p†�<ü‚�„…$¿�š ˜�š ¢�…4¬�ĘÄ#ÉÄ#¼—6˜9‡n<t÷ÌÞ$³›l±› Ä!ù3d²›$Là›üÈ›*”Í› 5Î$È›54ë›üÍ›%ù›Bü´šÅüŸ›Z­"äš ÎLÊš…4ÕšÎD£›ù3¶­"œù3´5‡n8self_negÁC†îάÏç@/֤Π†Î-5x/䤅 †…-6(/¤¤ ­Î/©¤/¨¤A³PŠ[ ŠeÎáù3è…µš ¼Š”®ÑèÑàÎ}(1±¤ Ô @1Ö¤ Ô Î(‡!x1ä¤ Ô  …(  4 ‡!•š Ûg«°ž£puÌ1¶¤¸æ Þ!ñáÒùë"Ô Ô ù‡!ù3Ô Ø‡!ß š éš ðHœVaù3‡!VéÕ‡!'×Ô} üä©# 4ä©„ä©<ë© NÎ,Lë©,ää©Lõ©à>P\õ©œ„ªÄ¸d£ª ÎÔ–ª Å™Îüá©{$Ϊ Å™Î& ᪠ü­©µâª>ÎE2 àLÍ©Š4µ©®ÄAš ƒ…‹áҥΤ©&C”‹×Áà>�ŠÎÎÓüò­L ­ÎÄ®Hü³­‘Š\Ü­Î,¾­…<È­�úHdÀ°…ÄÀ°LͰà>+\Ͱ12Þ]92æ] IÎÄ#‰2Ý] A2þ]Ä#I2ˆ] Ä#I2­] Q2º] É2¬]    Tò°Î‚±ù2ç!] ±š>ã°ñ>è] ! Ô >Þ°  §fÔ S&Q §¤§¤ArgumentÁ©¤‚¡f‹0mÖ”49d™¡ Ä«ÁÏÔ ‹g««ù2Ë<] Å™‰¥‰¥ ArgumentsÁ‹¥templateÁûcŒ¥Çûcg‡@#éó ù2‹}]ù2‹ ] Ê[ÄÄ !2¬]Q2²] Y2¾]«F �±ü‡°{Iù2ý¬]ù2Ü¿]Î ©°Š$•°Ô ›°Ä#Ä#Ä#EÄtš ‘Ä#MÄ#%Ä#êÄÄ ±š²š³š~´šµšNeÁ¶š·šMatchÁ¨±vXç]!2à]nřǙș­É™Ê™àË™óG*¤�R{9 »à)»àñ3è]­ÞW­ÞpéÞ«wéÞZ¼ß‰ õä•­ÞžwmsgÁ~left_valÁƒ right_valÁ„ ¦ ÇüÇ-à>6ÅÞüêß)¨á¬Še Ú° Ä=LI”Ä#hÄJwd–²…Ä–²L£²à>+\£²14à ]94è ] JÎÄ#‰4ß ] A4€ ]Ä#I4Š ]Ä#I4¯ ] Q4¼ ] É4® ]    T½²ÎͲù4é !] ±šá4Í] Å™»àù4�]]ù4� ]¨á !4®]Q4´]Y4À]R > ̲üè±eJù4ÿ Œ]ù4Þ Ÿ]Î ÿ±Š$ö±ÒâvÄ#ªÄÙš öÄ#²Ä#ŠÄ#~OÄyÄp¥ã!4â ]ü‡ä wÕäÜéäÕ¦C åà>m¨áMŠ °² ÄfuJ=Ä#‘ÄJ $º´\À´ÎdÍ´…ü¤´6¬¤´ 4ÎTJ</à´KüijœÎ 泊$Õ³ÎÛ³ù3¬ù3¤…˜+defÁ1_òí°í· í· Ž#‚­"ˆ­"-5$ì·\ò·Îdÿ·…üÖ·6¬Ö·òíPF8+’¸LüÖ¶¼Î þ¶Š$ï¶³ï õ¶ù3©Îêù3¨…œ3œ5d­ï"òí¸d‰¹…›¹Nü߸<…4ø¸áÒ,î¸ 0d“º…l’ºª7)¥ºOüè¹=…4�ºáÒ,÷¹…m7ª7süó¾�   ó¾  d�¿T�¿ ÷Î!lœ¿\»¿ ÎdØ¿ …üõ¾~¬õ¾òíP F 8,Ê × ßìÙ Ž#‚Îò ó¿  d‚À …üؾÁlؾ H‘k </ŸÀü˽Ô{‹ P4 ­­È ¯�°úÔ¼¬ìhÄÏ­ö\뽊$ܽÇõ â½­ö$ÇõÍõ6Î¥ù3äÎù3å…Ú…1Niœk˜ô]òíÁõ§¨ödÇõ– <ÇÄ  ÑÄ d÷ÄT÷ĘôlöÄ\‘Å ÎdªÅ …üÓÄn¬ÓÄòíP F 8,üÑÄq &ØÁõä<E ÁÅ \ÌÅ …dÛÅ …ÜÌÅ •ò…… F 7 +òÅûÅ úÅü§ÃÔ­½S4üÃĸ“÷\ÌÊ$½ÃÇõ ÃÓ÷Çõ ÍõfΟù3ÞÎù3ß…Ô­" ¨*>…2cyœ{tmpÁ—ô˜ôpòíÁõõåûs“÷-ÇõÀ<´È   $¾Èt¾È<ÃÈ OÎ,LÃÈ ÞÈ  ÞÈ,­ï8ˆ­"(,…ÉŒÉüìÈ,ÄìÈ 4Š=3<�É3žÉü£Çû �É V7ü°ÈnüÖÈH Š\ÄÇŠ$µÇ³ï »Ç…’áÒrŠ ÚȳïHáÒáÒú›RœTˆéœRà¯ÿÍ­ï„΀>³ïñ\ÜÎ$áÎ «Šà$ÜÎ4áÎíÎXü¬ÎAàLÈΊ$¿Î /žƒ~D½ÐÎDÇÐÎü§Ð1¬§ÐòíC44ÑÐ.T�Ñ…T�Ñ …üæÐ:ÔæÐ 4…F 74™Ñ1üŒÐŸlŒÐ Hγ[+±Ñ[üÀÏñ Š$ýÏáÒ ÖÏáÒ àÏ…4êÏÎù3Dù38…Íš þš ñ—O˜Q‡nTŽòíp¯…é…é t°Ó<µÓ‹×$°ÓLµÓlÐÓ<ÔÓ‹×ÐÓLÔÓ,éÓÏ) éÓ íÓ&TñÓÎT‚Ô ÎäñÓ,üÓî=@ 1ŒüÓüèÓ& Ï)–F!’Ôª7 “Ô —Ôª7 ˜Ô L‘ÔÏ) ] =  üèÓ2 ï,­ @ ! Ô^üñÒ¯ü¨ÓxüÈÓX …4—ÓáÒ,úÒáÒ�Ó… ¬Ó… ÌÓ…*…´…gù3™ù3�…à…1…j�(l—o˜pÆ ‹×|‹×WÏ)1î=âÏ)»ª7™ª7zÏ)[ï,:05Œà  Š"Ä#(5�à&h5…à  ®ÓÄ#Ä 5…àT/(5ƒá •� 5„á!h5ƒá  ®ÓÄÄ#F(5‹á/5þá �ø5îâ 5ôâ €5ôâ  Òè�# 5¢ã 5©ã P5¢ã  ‡ ‡.  C   ˆ5›ã  5øãP5ñã -�$5´ä 5³äP5­ä 5öä �ø5Šå® 5�åø5úâ›�# 5¾å5ÅåP5¾å‡‡.  Cˆ5·å 5¢æP5›æ  -�$ 5ùçH5øç 5ÿçÄè5ëç`5ëç‰9x5øç%5–èºø5ÁßÕø5ûß›ø5õà¡ø5ðá¦ø5Ÿä÷ø5èä® …05âßÄ#(5ÊßÄ#(5ÑßÄ5ÿßÄoÄ85ùàÄ�85ôáš�²ÄXÄ€�x‡pw�çHÄ85£äÄÍÄå�85ìä‰�¡ÄGÄo�g‡_f� çHÄwÄÉ î gtbÁltbÁpowÁ bitÁʘ—»Ã•�ÄÂ�ž•�o ŽN‰9(06Œà  Š" L(6�à&h6…à  ®Ó Lõ 6…àT/(6ƒá ‚™ 6„á!h6ƒá  ®Óõ LF(6‹á/6þá �ø6îâ 6ôâ €6ôâ þè�# 6¢ã 6©ã P6¢ã  ‡ ‡.  C   ˆ6›ã  6øãP6ñã -�$6´ä 6³äP6­ä 6öä �ø6Šå® 6�åø6úâ›�# 6¾å6ÅåP6¾å‡‡.  Cˆ6·å 6¢æP6›æ  -�$ 6ùç H6øç  6ÿçõx6øçÄè6ëç`6ëç‰9-!6–è¼ø6ÁßÕø6ûß›ø6õà¡ø6ðá¦ø6Ÿä÷ø6èä®!…06âß L(6Êß L(6Ñßõ6ÿßõ~õ86ùàõ.�86ôá©�Áõgõ��‡‡†�)çH!õ86£äõÜõô�86ìä˜�°õVõ~�v‡nu�çHÄ õÈõàî ú–‰—˜—§—ʘ—»Ã‚™Ó¯™­‚™~�š]‰9$07Œà  Š"ÚS(7�à&h7…à  ®ÓÚS‡ 7…àT/(7ƒá þ¤ 7„á!h7ƒá  ®Ó‡ÚSF(7‹á/7þá �ø7îâ 7ôâ €7ôâ «é �# 7¢ã 7©ã P7¢ã  ‡  ‡.  C   ˆ7›ã  7øãP7ñã -�$7´ä 7³äP7­ä 7öä �ø7Šå® 7�åø7úâ› �# 7¾å7ÅåP7¾å‡ ‡.  Cˆ7·å 7¢æP7›æ  -�$ 7ùç H7øç  7ÿç‡x7øçÄè7ëç`7ëç‰9-!7–è¾ø7ÁßÕø7ûß›ø7õà¡ø7ðá¦ø7Ÿä÷ø7èä®!…07âßÚS(7ÊßÚS(7Ñ߇7ÿ߇€‡87ùà‡0�87ôá«�Çi‡‘�‰‡�ˆ�+çH#‡87£ä‡Þ‡ö�87ìäš�²‡X‡€�x‡pw�çHÄ ‡Ê‡âî ú–‰—˜—§—ʘ—»Ãþ¤Õ«¥¯þ¤€‰¦_‰9$08Œà  Š"—[(8�à&h8…à  ®Ó—[™ 8…àT/(8ƒá ü° 8„á!h8ƒá  ®Ó™—[F(8‹á/8þá �ø8îâ 8ôâ €8ôâ Øé@�# 8¢ã 8©ã P8¢ã  ‡ @‡.  C   ˆ8›ã  8øãP8ñã -�$8´ä 8³äP8­ä 8öä �ø8Šå® 8�åø8úâ›@�# 8¾å8ÅåP8¾å‡@‡.  Cˆ8·å 8¢æP8›æ  -�$ 8ùç H8øç  8ÿç™x8øçÄè8ëç`8ëç‰9-!8–èÀø8ÁßÕø8ûß›ø8õà¡ø8ðá¦ø8Ÿä÷ø8èä®!…08âß—[(8Êß—[(8Ñß™8ÿß™„™88ùà™4�88ôá¯�Ç™m™•��‡…Œ�/çH'™88£ä™â™ú�88ìäž�¶™\™„�|‡t{�çHÄ ™Î™æî ú–‰—˜—§—ʘ—»Ãü°Ù©±³ü°„‡²c‰9$,âëláëŒáë ñëì !ì?ì4…ìt„ì ”„ì   •ìì   !ì? ìL ì Ä  L±ìÄT°ì Ü ì,ªì `Ä Z 1ŒªìÁìcüåêÜüÙëhüüëE…4†ëÃl,îêÃl,õêì Ý뽦ì®ìœì €ì½_ìg¡ÀSÄ# ÄÄ#îÄ}î €—ƒ˜iØ•¿%ŒÀõ,Åõ `ü6$Àõ,ËõdÅõ”¿õª7KŒÕõ,Úõ÷6$Õõ,àõdÚõ”Ôõª7Fü¿õ' Ï)‹;!ìõeü�õ_…4®õé7,–õé7,�õ…Ý……—…Ñ3î 6cÈÁUª7#÷6ª7ÚÏ)½,åøläøŒäø ôøì !ì?ì4ˆùt‡ù ”‡ù   ˜ùì   !ì? ìL£ù Ä  L´ùÄT³ù Ü£ù,­ù eÄ Z 1Œ­ùÄùküë÷ÙüÜøhüÿøE…4ŒøÃl,ô÷Ãl,û÷ì àø½¦ì®¡Àšì ƒù½]ìe¡ÀQÄ# ÄÄ#ìÄ{î ~—�˜iÖÖÆ#9ÏúήÑ(0(9�ú ÁÎ9¢úÇ0ž; žEÎ�ù3ˆ\f®Ñ¥(;ªú Ô ;ÏúÎ!‡!JO¡![`Nm;¯ú̇Þ!’éÉšë"¡Ô ¨‡!˜ ù3¢ù3©ÉœÖàØË‡!Õ¡!ñ\Öü ÁÎçünü¯ü8ž$ÇüÎ,ºü� 04áýÎŒ×ýL×ý $Î0#îýoü·ý7Î Ëýž$ÂýÎs6³Í{ŒÍ) pq%…0Ä7>ä²ú ÁÎÂ+ž6Î=D$(3=_dpq­ÁÂû–“!¾BitAndÁ4¨!«Ó BitAndAssignÁd°!“òBitOrÁ,¾!ËÔ BitOrAssignÁ\Å!ÊòBitXorÁ4Ò!ëÕ BitXorAssignÁdÚ!�ó NegÁè!Â! NotÁí!ˆ" °4…"Å™ üÀ°ûü禣 # subtle [![](https://img.shields.io/crates/v/subtle.svg)](https://crates.io/crates/subtle) [![](https://img.shields.io/badge/dynamic/json.svg?label=docs&uri=https%3A%2F%2Fcrates.io%2Fapi%2Fv1%2Fcrates%2Fsubtle%2Fversions&query=%24.versions%5B0%5D.num&colorB=4F74A6)](https://doc.dalek.rs/subtle) [![](https://travis-ci.org/dalek-cryptography/subtle.svg?branch=master)](https://travis-ci.org/dalek-cryptography/subtle)ÁŽ�ü’WT **Pure-Rust traits and utilities for constant-time cryptographic implementations.**Áê�üîMJ It consists of a `Choice` type, and a collection of traits using `Choice`Áü¼SP instead of `bool` which are intended to execute in constant-time. The `Choice`Áü� <9 type is a wrapper around a `u8` that holds a `0` or `1`.ÁÍ �\Ñ  ```tomlÁ”Ý  subtle = "2.6"Á<ð  ```Áø �üü JG This crate represents a “best-effortâ€� attempt, since side-channelsÁüÇ @= are ultimately a property of a deployed cryptographic systemÁüˆ <9 including the hardware it runs on, not just of software.ÁÅ �üÉ NK The traits are implemented using bitwise operations, and should execute inÁü˜ OL constant time provided that a) the bitwise operations are constant-time andÁüè PM b) the bitwise operations are not recognized as a conditional assignment andÁü¹ ! optimized back into a branch.ÁÛ �üß OL For a compiler to recognize that bitwise operations represent a conditionalÁü¯PM assignment, it needs to know that the value used to generate the bitmasks isÁü€JG really a boolean `i1` rather than an `i8` byte value. In an attempt toÁüËNK prevent this refinement, the crate tries to hide the value of a `Choice`'sÁüšOL inner `u8` by passing it through a volatile read. For more information, seeÁôê the _About_ section below.Á‰�ü�QN Rust versions from 1.51 or higher have const generics support. You may enableÁüßUR `const-generics` feautre to have `subtle` traits implemented for arrays `[T; N]`.Áµ�ü¹QN Versions prior to `2.2` recommended use of the `nightly` feature to enable anÁü‹KH optimization barrier; this is not required in versions `2.2` and above.Á×�üÛPM Note: the `subtle` crate contains `debug_assert`s to check invariants duringÁü¬OL debug builds. These invariant checks involve secret-dependent branches, andÁüüOL are not present when compiled in release mode. This crate is intended to beÁÌÌ used in release mode.Áæ�¤ê ## DocumentationÁÿ�üƒ,) Documentation is available [here][docs].Á°�ü´%" ## Minimum Supported Rust VersionÁÚ�äÞ Rust **1.41** or higher.Áû�üÿol Minimum supported Rust version can be changed in the future, but it will be done with a minor version bump.Áï�dó ## AboutÁ€�ü„QN This library aims to be the Rust equivalent of Go’s `crypto/subtle` module.ÁÖ�üÚOL Old versions of the optimization barrier in `impl From for Choice` wereÁüªNK based on Tim Maclean's [work on `rust-timing-shield`][rust-timing-shield],ÁüùJG which attempts to provide a more comprehensive approach for preventingÁüÄ(% software side-channels in Rust code.ÁüíRO From version `2.2`, it was based on Diane Hosfelt and Amber Sprenkels' work onÁÜÀ "Secret Types in Rust".ÁÜ�üàFC `subtle` is authored by isis agora lovecruft and Henry de Valence.Á§�t« ## WarningÁº�ü¾RO This code is a low-level library, intended for specific use-cases implementingÁü‘LI cryptographic protocols. It represents a best-effort attempt to protectÁüÞRO against some software side-channels. Because side-channel resistance is not aÁü±PM property of software alone, but of software together with hardware, any suchÁü‚$! effort is fundamentally limited.Á§�ä« **USE AT YOUR OWN RISK**ÁÈ�üÌ" [docs]: https://docs.rs/subtleÁüï`] [rust-timing-shield]: https://www.chosenplaintext.ca/open-source/rust-timing-shield/securityÁüâK0https://doc.dalek.rs/assets/dalek-logo-clear.pngÁléhttps://docs.rs/subtle/2.6.0Álµ$(3=_dpq­ÁÂû�–‚¾÷Î|«Ó‘Ïp“ò±ÏkËÔÊÏ`ÊòéÏZëÕ ƒÐN�ó £ÐKÂ! ¹ÐHˆ" °GÅ™ RUXL�!OLœ!=@#&÷úãæÉ̸»¨«¤÷!Ÿ\å)…ìé,ü÷)>; Unwrap the `Choice` wrapper to reveal the underlying `u8`.Áº*�TÂ* # NoteÁÑ*�üÙ*FC This function only exists as an **escape hatch** for the rare caseÁü¤+?< where it's not possible to use one of the `subtle`-providedÁ„è+ trait impls.Áý+�ü…,QN **To convert a `Choice` to a `bool`, use the `From` implementation instead.**ÁLð,Ñ Ñ…ÄBÿ ú,à>$û,Ô¡-®ü¹2üÂ-DA Convert the `Choice` wrapper into a `bool`, depending on whetherÁü‹.+( the underlying `u8` was a `0` or a `1`.Á».�TÃ.èöÒ.�üÚ.LI This function exists to avoid having higher-level cryptographic protocolÁü«/-* implementations duplicating this pattern.ÁÝ/�üå/B? The intended use case for this conversion is at the _end_ of aÁü¬0KH higher-level primitive implementation: for example, in checking a keyedÁüü0LI MAC, where the verification should happen in constant-time (and thus useÁüÍ1C@ a `Choice`) but it is safe to return a `bool` at the end of theÁŒ•2 verification.Á$¼2…Bÿ ©&ñ´¸3…­Ó®Ó\Õ34Ú3…üý3&4€4………Bÿ Û�(ääÏ4…•òü€5(lƒ5Ò Ò……­"Bÿ ‘5 $–5�(·¬Ñ5…ÍÔÎÔ\í54ò5…ü•6%,˜6………Bÿ ~�(‡Üæ6…Ìòü–7'd™7Ó Ó……­"Bÿ ¦7 $«7�(T´æ7…íÕîÕ\ƒ84ˆ8…ü«8&4®8………Bÿ �($äý8… ƒó ü®9(l±9Ô Ô……­"Bÿ ¿9 $Ä9�(ñœÿ9…"#‰"Š"#\™:4ž:!!…´Á:Ä:……Bÿ!! #¾ü“@$Ó¬üß?üÞ?!üÕ?,L–@ÎÎBÿ�%%þÆÎ  @ù Î$£@³Í‡3jÄÎB…'®'äûB$þBÄ…Bÿ&& '‡3™ÄÈHü¥EDA An `Eq`-like trait that produces a `Choice` instead of a `bool`.ÁêE�lîE # ExampleÁüE�<€FÓ×üˆF use subtle::ConstantTimeEq;Á”¨F let x: u8 = 5;Áœ»F let y: u8 = 13;ÁÏF�üÓF+( assert_eq!(x.ct_eq(&y).unwrap_u8(), 0);ÁüÿF+( assert_eq!(x.ct_eq(&x).unwrap_u8(), 1);Á<«GÓ×tÒH((ÿÆü6üÈH­(‹Œ‹Œ!)*)**)üÿJ(üçH%" Determine if two items are equal.Á‘I�ü™I96 The `ct_eq` function should execute in constant time.Á×I�lßI # ReturnsÁñI�üùI'$ * `Choice(1u8)` if `self == other`;Áü¥J'$ * `Choice(0u8)` if `self != other`.Á,‚KÕÖ Õü6 Öü6…Bÿ( ˆK(÷6$‰Kî ,�Kü©M'ü­K)& Determine if two items are NOT equal.ÁÛK�üãK96 The `ct_ne` function should execute in constant time.Á¡L�l©Lߌ»L�üÃL'$ * `Choice(0u8)` if `self == other`;ÁüïL'$ * `Choice(1u8)` if `self != other`.Á,¬Mר ×ü6 Øü6…Bÿ( ²M( *ü6$³Mî xü÷M.�,,ô‡ üM(ÎtÿMÍ-)-üüS%ü¬NA> Check whether two slices of `ConstantTimeEq` types are equal.ÁòN�TúNèö‰O�ü‘OC@ This function short-circuits if the lengths of the input slicesÁüÙODA are different. Otherwise, it should execute in time independentÁÔ¢P of the slice contents.ÁÁP�üÉPNK Since arrays coerce to slices, this function works with fixed-size arrays:ÁœQ�<¤QÓ×ü°Q! # use subtle::ConstantTimeEq;Á,ÖQ #ÁüàQ'$ let a: [u8; 8] = [0,1,2,3,4,5,6,7];ÁüŒR'$ let b: [u8; 8] = [0,1,2,3,0,1,2,3];Á¸R�ìÀR let a_eq_a = a.ct_eq(&a);ÁìâR let a_eq_b = a.ct_eq(&b);Á„S�üŒS&# assert_eq!(a_eq_a.unwrap_u8(), 1);Áü·S&# assert_eq!(a_eq_b.unwrap_u8(), 0);Á<âSÓ×,ÿSÙÚ ÙÍ ÚÍ…Bÿ+ …T+ -Î$†TÚ@kôÁX…/)/üôX',÷XÛÜ Û… Ü……Bÿ. ýX. /$þX�(—!üóZ#´€[ —[ ›b �[ ¿[, ž[8t_uÁŸ[& ¢[8‚£[$ ¥[, §[8t_iÁ¨[& «[8‚¬[$ ®[, °[8 bit_widthÁL±[& º[8²$»[*Á[ Ä[ ˜b 8$Î[8§tÓ[8 â[, æ[8«šç[ ë[ ‰`+ ù[ ú[ �\8þ4û[8 �\8¼,’\ —\ «\ ˜\8$™\$ �\8î ,Ÿ\& ¤\ ¦\, §\8«š¨\(­\8¾ 4°\ ·\ ÿ_8€]8® „]& …], ‡]8«šˆ] Œ]8$Ž] “]8î ,•]% š]8·^8¯ »^& ¼^, ¾^8«š¿^ Ã^ Å^ Ú^8® Æ^ È^8® Ê^ Ë^8 wrapping_negÁdÌ^ Ø^ Ù^Ü^ ß^ î^, à^8‡›Lá^ ë^7ô í^% ï^ Ò_ ê_ Ó_ ã_8¯ Ô_ Ö_ Ø_ â_7ô Ù_8Û_, Þ_8«šß_8å_8™è_ ë_8intoÁ$ì_ ð_ ñ_8$“`8§t˜`8 §`, «`8Ùš¬` °` ’b+ ¾` ¿` Æ`8þ4À`8 Ô`8¼,×` Ü` ð` Ý`8$Þ`$ â`8î ,ä`& é` ë`, ì`8Ùší`(ò`8¾ 4õ` ü` ˆb Óa áa Ôa8$Õa8Úa, Ýa8«šÞa âa8¼,ãa èa úa éa êa ùa ëa8î ,ìa8òa, õa8«šöa% ™bü“e%üÇdKH `Ordering` is `#[repr(i8)]` making it possible to leverage `i8::ct_eq`.Á½2)2üÍe',Ðeñò ñ½ ò½…Bÿ1 Öe1 2$×eî Ò5üñh'ü­f@= A type which can be conditionally selected in constant time.Áîf�üòfC@ This trait also provides generic implementations of conditionalÁü¶g%" assignment and conditional swaps.Á¼ûh33‹Œüñhžù ü6$”i3‹Œ*»¨‹Œ6»¨+456456546ü¢nBüŸi,) Select `a` or `b` according to `choice`.ÁÐi�lØiߌêi�üòi# * `a` if `choice == Choice(0)`;Áüšj# * `b` if `choice == Choice(1)`.ÁÂj�üÊj2/ This function should execute in constant time.Á�k�l‰k爛k�<£kÓ×ü¯k(% use subtle::ConditionallySelectable;Á,Ükà•Œæk # fn main() {Áœük let x: u8 = 13;Áœ”l let y: u8 = 42;Á¬l�ü´l52 let z = u8::conditional_select(&x, &y, 0.into());Á¬îl assert_eq!(z, x);Áüˆm52 let z = u8::conditional_select(&x, &y, 1.into());Á¬Âm assert_eq!(z, y);Á<Üm # }Á<èmÓ×”¥nóô óü6 ôü6…ü6Bÿ3 »n3ám— ¸n˜ Ân‡n4Ìnüßr>üênB? Conditionally assign `other` to `self`, according to `choice`.Á±o�ü¹o2Ö©ðo�løo爊p�<’pÓ×üžp(Ī,Ëpà•ŒÕp‚«¼ëp let mut x: u8 = 13;Á¼‡q let mut y: u8 = 42;Á£q�ü«q'$ x.conditional_assign(&y, 0.into());Á´×q assert_eq!(x, 13);Áüòq'$ x.conditional_assign(&y, 1.into());Á´žr assert_eq!(x, 42);Á<¹rš­<ÅrÓ×”ârõö õü6 öü6…­"Bÿ3 õr3õo$úrî Í6‡nÖ6üØx?üêsFC Conditionally swap `self` and `other` if `choice == 1`; otherwise,Áüµt" reassign both unto themselves.ÁÜt�üät2Ö©›u�l£u爵u�<½uÓ×üÉu(Ī,öuà•Œ€v‚«¼–v꯼²vаÎv�üÖv30 u8::conditional_swap(&mut x, &mut y, 0.into());Á´Žwç°´©w assert_eq!(y, 42);ÁüÄw30 u8::conditional_swap(&mut x, &mut y, 1.into());Á´üw·±´—x assert_eq!(y, 13);Á<²xš­<¾xÓׄÛx÷ø ÷ü6 øü6…­"Bÿ3 ïx3 6ü6—8˜8‡n$8Ô‘zlžz ¬z ‚}( ²z µz8™³z*·z ºz Ëz8×Äz% Ìz Òz Öz8ŸÓz*Øz Ûz íz8Øåz% îz ôz øz8¥õz*úz ýz �{8Ù‡{% �{ –{ š{8«—{*œ{ Ÿ{ ±{8Ú©{% ²{ ¸{ ½{8±$¹{*¿{ Â{ Õ{8Û$Ì{% Ö{ Ü{ ß{8×Ý{*á{ ä{ õ{8×î{% ö{ ü{ €|8Øý{*‚| …| —|8Ø�|% ˜| ž| ¢|8ÙŸ|*¤| §| ¹|8Ù±|% º| À| Ä|8ÚÁ|*Æ| É| Û|8ÚÓ|% Ü| â| ç|8Û$ã|*é| ì| ÿ|8Û$ö|% €}ü…}0ü’}# ¶} î† ¼} Æ}, ½} ¾} Ä}, ¿}8ª À}& Á}8ýÂ} Å}*È} Ë} ì†, Ì} Í} ê†8$×}8™¼Ü}8 ô}, ø}8ª ù} û} ä†+ ‰~ Š~ ‘~8þ4‹~8 Ÿ~8·”¢~ ´~ ×~ 8— µ~& ¶~ ¸~8$¹~$ ½~8˜ ¿~& À~ Â~8$Ã~$ Ç~8‡n4É~& Ï~8¾ 4Ñ~(Ù~8$Ü~ á~ Ú€ 8ë8ÿt$ï ô ö ÷  €8‡n4ø þ8ŠLÿ ˆ€ ‰€8‹€8€lŽ€ ›€ œ€ Ÿ€, �€8ª ž€8¢€, ¥€8ª ¦€% §€8— ¹€ »€ ½€ Ì€8ÿt$¾€ À Å€ Ë€8— Æ€ È€8˜ Ê€+ é€ ê€ ñ€8þ4ë€8 ÿ€8Д‚� ”� ¼�  •�8–�8$š�$ ž�8î , �& ¥� §�8$¨�$ ¬�8‡n4®�& ´�8¾ 4¶� ¾� ă8È‚8ÿt$Ì‚ Ñ‚ Ó‚ Ô‚ ý‚8‡n4Õ‚ Û‚8ŠLÜ‚ å‚ æ‚8è‚8€lë‚ ø‚ ù‚ ü‚, ú‚8ª û‚8ÿ‚, ‚ƒ8ª ƒƒ% „ƒ –ƒ8$—ƒœƒ8ÿt$Ÿƒ ¤ƒ ¦ƒ µƒ §ƒ8$¨ƒ ­ƒ ¯ƒ8î ,°ƒ% ¶ƒ+ Óƒ Ôƒ Ûƒ8þ4Õƒ8 éƒ8é„ìƒ üƒ §„8— ýƒ& þƒ €„8�„8$…„$ ‰„8˜ ‹„& Œ„ Ž„8�„8$“„$ —„8‡n4™„& Ÿ„8¾ 4¡„ ©„ Ù†8³…8ÿt$·… ¼… ¾… ¿… è…8‡n4À… Æ…8ŠLÇ… Ð… Ñ…8Ó…8€lÖ… ã… ä… ç…, å…8ª æ…8ê…, í…8ª î…% ï…8�†8ª …† ‡†8ÿt$‰† ކ �† ˜† ‘†8— ’† ”† –†8˜ —†% ™† «†8— ¬†®†8ª ±†% ²† Ć8˜ ņdž8ª ʆ% ˆ ë†üùŠ.ü€‰&# `Ordering` is `#[repr(i8)]` where:Á§‰�”«‰ - `Less` => -1Á”¾‰ - `Equal` => 0Á¤Ñ‰ - `Greater` => 1Áæ‰�üê‰MJ Given this, it's possible to operate on orderings as if they're integers,Áü¸Š@= which allows leveraging conditional masking for predication.Á½:4:ü®‹A”±‹©ª ©½ ª½…½Bÿ9 Ç‹9 :— Ä‹˜ ΋‡n4Ø‹üÆŽ'…<4<ü‚�A”…�«¬ «… ¬………Bÿ; ›�; <—`f˜jf‡ntfü‘— ü†”?< A type which can be conditionally negated in constant time.ÁÆ”�TÊ”èöÕ”�üÙ”DA A generic implementation of `ConditionallyNegatable` is providedÁüž•DA for types `T` which are `ConditionallySelectable` and have `Neg`ÁÄã• implemented on `&T`.Á´›—==‹Œü‘—ž=‹Œ‹Œ">>>üü˜1ü¸—?< Negate `self` if `choice == Choice(1)`; otherwise, leave itÁtü— unchanged.Á�˜�ü—˜2Ö©”ÿ˜­ ­ü6…­"Bÿ= ’™= >ü6$—™‡n4�™ü±™n�@@AÃ! AÎÎT“š3μã™AÂ!³Ö|�šô‡ ¶™ÎB>B„šü´š0”·š® ®Î…­"Bÿ? Êš? BÎ$Ïš‡nœgüø¤'�DDô‡ ý¤àE®Eü­©)ü¦¥OL Convert the `CtOption` wrapper into an `Option`, depending on whetherÁüú¥HE the underlying `is_some` `Choice` was a `0` or a `1` once unwrapped.ÁǦ�TϦèöÞ¦�üæ¦QN This function exists to avoid ending up with ugly, verbose and/or bad handledÁü¼§QN conversions from the `CtOption` wraps to an `Option` or `Result`.Áü’¨QN This implementation doesn't intend to be constant-time nor try to protect theÁüè¨@= leakage of the `T` since the `Option` will do it anyways.Á$°©ŠàBÿCC EΩ&elœæª�GGô‡ 몊HIJKLNOPSVX ü³­4ü€«B? This method is used to construct a new `CtOption` and takesÁüÇ«?< a value of type `T`, and a `Choice` that determines whetherÁü‹¬?< the optional value should be `Some` or not. If `is_some` isÁüϬ@= false, the value will still be stored but its value is neverÁd”­ exposed.Áº­Î…ŠBÿFFé…�#mú-mü‡°#üÊ®<9 Returns the contained value, consuming the `self` value.Á‹¯�d“¯ # PanicsÁ¤¯�ü¬¯GD Panics if the value is none with a custom panic message provided byÁTø¯ `msg`.Á4ް³Š ³ÎBÿF  °F IÎÁpÄäËpÄè±üˆ±63 This returns the underlying value but panics if itÁ”ñ is not `Some`.Á4ﱊÎBÿFF JÎuüijQüÓ²52 This returns the underlying value if it is `Some`Áü�³$! or the provided value otherwise.ÁL˳ŠÎÎBÿFFÇÖ¼ý³ KÎÁv÷íËvüÖ¶qüæ´5êãü µ<9 or the value produced by the provided closure otherwise.Ááµ�üéµ@= This operates in constant time, because the provided closureÁ¬®¶ is always called.ÁtݶгïÎBÿF‚MMFþƳï ì¶ÇÖ¼•·‹#³ï­"l¹·�#³ï­"Î Å· LγïëwœöwQSü߸ü˜¸41 Returns a true `Choice` if this value is `Some`.Á<渴 ´Š…BÿF î¸F‹×$ï¸üè¹ü¡¹41 Returns a true `Choice` if this value is `None`.Á<ï¹µ µŠ…BÿF ÷¹F¯ÿ$ø¹ü˽~ü«º=: Returns a `None` value if the option is `None`, otherwiseÁüíºEB returns a `CtOption` enclosing the value of the provided closure.Áü·»@= The closure is given the enclosed value or, if the option isÁüü»74 `None`, it is provided a dummy value computed usingÁ̸¼ `Default::default()`.ÁÖ¼�üÞ¼@‘欣½ÛæÒ½ŠÇõ“÷BÿF‘Q‚RQRFþÆ­ö Ö½þÆÇõ Ù½öÎ<Œ¾ÇÖ¼–¾‹#ÇõÍõtº¾�#ÇõÍõ­ö Ǿ PέöÇõY{œd{z|uwü§Ã�ü¥À=ÒêüçÀ>; returns the result of the provided closure. The closure isÁüªÁ<9 given the enclosed value or, if the option is `None`, itÁüëÁB? is provided a dummy value computed using `Default::default()`.Á²Â�üºÂ@‘æ¬ÿÂÛæD®ÃŠÇõ“÷BÿF‘T‚UUTFˆï ·Ãšï ºÃ¬ï<íÃÇÖ¼÷ÃÅïÄ›Ä�#ÇõÍõ“÷\¨Ä SέöÇõ_{œ[{^`bdü£Ç~ü�ÆNK Returns `self` if it contains a value, and otherwise returns the result ofÁüÔÆ<9 calling `f`. The provided function `f` is always called.Á<ªÇгïŠBÿF‚WWF°è ²ÇÇÖ¼åÇË載È�#³ï­"Š\•È VγïTzœPzFHü¬Î%ü¤ÉOÄ×üøÉHžØÅÊ�TÍÊèöÜÊ�üäÊQ™ÙüºËQõÙü�ÌQÑÚüæÌ@­Û«Í�ü³ÍMJ It's equivalent to the corresponding `From` impl, however this version isÁü…Î" friendlier for type inference.Á\³ÎŠàBÿFF XδzüñÎH�ZZô‡ öÎÇÖ¼ùΊ[4[üÀÏA”Ã϶· ¶Š ·Š…ŠBÿY ÙÏY [Ηz˜z‡nzüµÑ6�]]ô‡ ºÑÖ’t½ÑŠ^)^üñÒ,üòÑ<9 Two `CtOption`s are equal if they are both `Some` andÁü³Ò+( their values are equal, or both `None`.Á,ôÒ¸¹ ¸Š ¹Š…Bÿ\ úÒ\ ^Î$ûÒ�(áxì—Õü¤ÔOL A type which can be compared in some manner and be determined to be greaterÁüôÔ" than another of the same type.Áœ¡Õ__‹Œü—Õç_‹Œ‹Œ"```üÔÛ(ü»Õ%" Determine whether `self > other`.ÁåÕ�üíÕLI The bitwise-NOT of the return value of this function should be usable toÁü¾Ö! determine if `self <= other`.ÁäÖ�üìÖ2Ö©£×�l«×ߌ½×�üÅ×EB A `Choice` with a set bit if `self > other`, and with no set bitsÁt�Ø otherwise.Á¢Ø�lªØçˆ¼Ø�<ÄØÓ×üÐØ$! use subtle::ConstantTimeGreater;ÁùØ�œ�Ùœ«œ™Ù¸«±Ù�ì¹Ù let x_gt_y = x.ct_gt(&y);ÁÛÙ�üãÙ&# assert_eq!(x_gt_y.unwrap_u8(), 0);ÁŽÚ�ì–Ú let y_gt_x = y.ct_gt(&x);Á¸Ú�üÀÚ&# assert_eq!(y_gt_x.unwrap_u8(), 1);ÁëÚ�ìóÚ let x_gt_x = x.ct_gt(&x);Á•Û�ü�Û&# assert_eq!(x_gt_x.unwrap_u8(), 0);Á<ÈÛÓ×,×Ûº» ºü6 »ü6…Bÿ_ ÝÛ_ÈÁ$ÞÛî ,äÛü€Ü.ü�Ü! ¯Ü ¨è µÜ ÐÜ , ¶Ü8«š·Ü& ºÜ8‚¼Ü$ ¾Ü, ÀÜ8‡›LÁÜ& ÊÜ8²$ÌÜ*ÒÜ ÕÜ ¥è8$ßÜ8‹œäÜ8 øÜ, üÜ8«šýÜ �Ý Ÿè<C Returns Choice::from(1) iff x > y, and Choice::from(0) iff x <= y.Áü�ÝF<�âÝ<èöTòÝ<�‰Þ<> This algoritm would also work for signed integers if we firstÁü™ÞA<4 flip the top bit, e.g. `let x: u8 = x ^ 0x80`, etc.ÁüçÞ7+ «ß ¬ß ³ß8þ4­ß8 Áß8¥,Äß Éß Ýß Êß8$Ëß$ Ïß8î ,Ñß& Öß Øß, Ùß8«šÚß(ßß8¾ 4âß éß •è68ûß8ú–ÿß ƒà8$…à Šà Œà8î ,�à% ’à8õà8ùà8‰—ýà �á ƒá8$„á ‰á8î ,‹á% �á8ðá8ôá8˜—øá üá7ô þá% ÿá8%,îâ8˜—ôâ øâ, úâ8‡›Lûâ …ã �ä 8‰—›ãŸã8‰—¢ã¦ã8˜—©ã% ¬ã8˜—ñãõã8˜—øã% ûã8Ÿä8£ä8§—§ä «ä8ú–­ä ±ä ³ä8‰—´ä% ·ä8èä8ìä8˜—ðä ôä7ô öä% ÷ä8%,Šå8˜—�å ”å, –å8‡›L—å ¡å ·æ 8§—·å»å8§—¾åÂå8˜—Åå% Èå8˜—›æŸæ8˜—¢æ% ¥æ8¾ 4ëç'ñç8”$óç ÷ç ‡è øç €è8§—ùç ýç7ô ÿç8‚è8™…è% ¦èü¦ê*½c`cüåê',èêÄŠĽ Ž…Bÿb îêb c$ïêî »iüµí@üÅìLI A type which can be compared in some manner and be determined to be lessÁü’í"�ý„¿ídd‹Œüµí¹(ü6tÑí_ü6œâíd‹Œ:Ò”/á”&‹ŒLÒ”Aá”8eeeü�õ'üüí%" Determine whether `self < other`.Á¦î�ü®îL¼þüÿî! determine if `self >= other`.Á¥ï�ü­ïIF A default implementation is provided and implemented for the unsignedÁ”ûï integer types.Á’ð�üšð2Ö©Ñð�lÙðߌëð�üóðEB A `Choice` with a set bit if `self < other`, and with no set bitsÁt½ñÒ€Ðñ�lØñçˆêñ�<òñÓ×üþñ! use subtle::ConstantTimeLess;Á¤ò�œ¬òœ«œÄò¸«Üò�ìäò let x_lt_y = x.ct_lt(&y);Á†ó�üŽó&# assert_eq!(x_lt_y.unwrap_u8(), 1);Á¹ó�ìÁó let y_lt_x = y.ct_lt(&x);Áãó�üëó&# assert_eq!(y_lt_x.unwrap_u8(), 0);Á–ô�ìžô let x_lt_x = x.ct_lt(&x);ÁÀô�üÈô&# assert_eq!(x_lt_x.unwrap_u8(), 0);Á<óôÓ×,�õÆÇ Æü6 Çü6…Bÿd –õd eü6$—õî ÛläðõÄì�öõì±ö‡ìÒö™ü¯÷'½keküë÷',î÷ÈÉ È½ ɽ…Bÿj ô÷j k$õ÷î ¬kÌÔú�mmô‡ Ùú„ˆ$Üúžnoä¯üüôúPM Constructs a new instance of `BlackBox` which will wrap the specified value.ÁÉû�üÑûYV All access to the inner value will be mediated by a `black_box` optimization barrier.Á¶üΞBÿll nÎ�Uj¬·ýüíüEB Read the inner value, applying an optimization barrier on access.Á¾ýžÎBÿll oÎWj(jüÒ"NK The `Choice` struct represents a choice for use in conditional assignment.Á¡#�ü¥#PM It is a wrapper around a `u8`, which should have the value either `1` (true)Áœö# or `0` (false).ÁŠ$�üŽ$QN The conversion from `u8` to `Choice` passes the value through an optimizationÁüà$QN barrier, as a best-effort attempt to prevent the compiler from inferring thatÁü²%LI the `Choice` value is a boolean. This strategy is based on Tim Maclean'sÁüÿ%QN [work on `rust-timing-shield`][rust-timing-shield], which attempts to provideÁüÑ&OL a more comprehensive approach for preventing software side-channels in RustÁL¡' code.Á«'�ü¯'PM The `Choice` struct implements operators for AND, OR, XOR, and NOT, to allowÁü€(EB combining `Choice` values. These operations do not short-circuit.ÁÆ(�ÌÊ( [rust-timing-shield]:Áüä(JG https://www.chosenplaintext.ca/open-source/rust-timing-shield/securityÁ4Ø)…X·5h§í»>qrÄ…BÿJn1Ä…Bÿpp qß)ppÄ ¸)…bbb…b…v†vbbÍ Í……Bÿu¾)u vbÂ…x gxÂÂÎÏÐ Î… Ï€g€gŠ‚gê ûcƒgŒ"ûcØ«q¢1È¡ÐÞ!BÿwÅ)w xœÂàÎ[Äz)zø�\'(’\ÝÞ ÝÄ ÞÄ…Bÿy˜\y z ™\î ´#à“`ì|)|øÔ`'(×`ßà ßì àì…Bÿ{Ý`{ | Þ`î )%àÎ[õ~)~ø�\'(’\áâ áõ âõ…Bÿ}˜\} ~ ™\î i'à“`þ€)€øÔ`'(×`ãä ãþ äþ…BÿÝ` € Þ`î ã(àÎ[‡‚)‚ø�\'(’\åæ å‡ æ‡…Bÿ�˜\� ‚ ™\î &+à“`�„)„øÔ`'(×`çè ç� è�…BÿƒÝ`ƒ „ Þ`î  ,àÎ[™†)†ø�\'(’\éê é™ ê™…Bÿ…˜\… † ™\î ç.à“`¢ˆ)ˆøÔ`'(×`ëì ë¢ ì¢…Bÿ‡Ý`‡ ˆ Þ`î b0àÎ[ «Š)Šø�\'(’\íî í« î«…Bÿ‰˜\‰ Š ™\î 3à“` ´Œ)ŒøÔ`'(×`ïð ï´ ð´…Bÿ‹Ý`‹ Œ Þ`î ¤4ø×}Ž ÄŽ��456��ŽøŸ~A�¢~ùú ùÄ úÄ…ÄBÿ�¸~� Ž—ù9˜:‡n :øÿ€>�‚�ûü ûÄ üÄ…­"Bÿ�•�� � š�î ò;‡ný;øéƒ?€ìƒýþ ýÄ þÄ…­"Bÿ�€„� �—ò=˜ý=‡n>Ÿ ì’“”456“’”›˜ÿ€ ÿì €ì…ìBÿ‘–‘ ’—ù9˜:‡n :”��‚ �ì ‚ì…­"Bÿ‘�‘ “Šî ò;‡ný;‡ƒƒ„ ƒì „ì…­"Bÿ‘€‘ ”—ò=˜ý=‡n>ø×}Ž õ–—˜456–—˜øŸ~A�¢~…† …õ †õ…õBÿ•¸~• –—,E˜6E‡n@Eøÿ€>�‚�‡ˆ ‡õ ˆõ…­"Bÿ••�• — š�î #G‡n.Gøéƒ?€ìƒ‰Š ‰õ Šõ…­"Bÿ•€„• ˜—%I˜1I‡n�!‚�“” “‡ ”‡…­"Bÿ�!•�� Ÿ !š�î _R‡njRø!éƒ?€!샕– •‡ –‡…­"Bÿ�!€„�  —cT˜oT‡nzTŸ �¢£¤456¢£¤›˜—˜ —� ˜�…�Bÿ¡–¡ ¢—fP˜pP‡nzP”�™š ™� š�…­"Bÿ¡�¡ £Šî _R‡njR‡ƒ›œ ›� œ�…­"Bÿ¡€¡ ¤—cT˜oT‡nzTø(×}Ž ™¦§¨456§¨¦ø(Ÿ~A�(¢~�ž �™ ž™…™Bÿ¥(¸~¥ ¦—®[˜¸[‡nÂ[ø(ÿ€>�(‚�Ÿ  Ÿ™  ™…­"Bÿ¥(•�¥ § (š�î «]‡n¶]ø(éƒ?€(샡¢ ¡™ ¢™…­"Bÿ¥(€„¥ ¨—³_˜¿_‡nÊ_Ÿ ¢ª«¬456«ª¬›˜£¤ £¢ ¤¢…¢Bÿ©–© ª—®[˜¸[‡nÂ[”�¥¦ ¥¢ ¦¢…­"Bÿ©�© «Šî «]‡n¶]‡ƒ§¨ §¢ ¨¢…­"Bÿ©€© ¬—³_˜¿_‡nÊ_´¹¤üý›FC The `CtOption` type represents an optional value similar to theÁüÄœ@= [`Option`](core::option::Option) type but is intended forÁô…� use in constant time APIs.Á¤��ü¨�B? Any given `CtOption` is either `Some` or `None`, but unlikeÁüë�30 `Option` these variants are not exposed. TheÁüŸžC@ [`is_some()`](CtOption::is_some) method is used to determine ifÁüãžEB the value is `Some`, and [`unwrap_or()`](CtOption::unwrap_or) andÁü©Ÿ>; [`unwrap_or_else()`](CtOption::unwrap_or_else) methods areÁüèŸB? provided to access the underlying value. The value can also beÁü« DA obtained with [`unwrap()`](CtOption::unwrap) but this will panicÁ¤ð  if it is `None`.Á…¡�ü‰¡C@ Functions that are intended to be constant time may not produceÁüÍ¡C@ valid results for all inputs, such as square root and inversionÁü‘¢C@ operations in finite field arithmetic. Returning an `Option`ÁüÕ¢DA from these functions makes it difficult for the caller to reasonÁüš£A> about the result in constant time, and returning an incorrectÁüÜ£>; value burdens the caller and increases the chance of bugs.ÁDĤ�®®ô‡ ͤŠÔ¼¬ìhÄϯ° "DÖ¤,Ö¤­­Î|ä¤<䤭­…‚h5�²²ô‡‡…Î/ͤг†³¨ª‚h‚h¯ ¯ŠŠBÿ±/¤¤± ³Î‚h 0«¤6�µµô‡/„ˆ0ͤŠ?B7i7�··ô‡pŸgÎ1ͤЏ g¸’•7i7i°±² °Š ±€g€gŠ‚gê ûcƒgŒ"ûcØ«q¢1È¡²Þ!Bÿ¶1±¤¶ ¸Î7iœ7iø5ßÜ!ĺ`ºø5Áß'ø5�ÝFž‡5âÝ�P5òÝèö5‰Þ�ø5™ÞA—ˆø5çÞ7ãˆ(5Äß¼½ ¼Ä ½Ä…Bÿ¹5Êß¹ º 5Ëßî `Šø6ßÜ!õ¼`¼ø6Áß'ø6�ÝFž‡6âÝ�P6òÝèö6‰Þ�ø6™ÞA—ˆø6çÞ7ãˆ(6Äß¾¿ ¾õ ¿õ…Bÿ»6Êß» ¼ 6Ëßî \�ø7ßÜ!‡¾`¾ø7Áß'ø7�ÝFž‡7âÝ�P7òÝèö7‰Þ�ø7™ÞA—ˆø7çÞ7ãˆ(7ÄßÀÁ À‡ Á‡…Bÿ½7Êß½ ¾ 7Ëßî Z–ø8ßÜ!™À`Àø8Áß'ø8�ÝFž‡8âÝ�P8òÝèö8‰Þ�ø8™ÞA—ˆø8çÞ7ãˆ(8ÄßÂà ™ Ù…Bÿ¿8Êß¿ À 8Ëßî  —ŠŒüÈùKH Wrapper type which implements an optimization barrier for all accesses.ÁD½ú�ÃÃô‡ Æú„ˆ$Éúž#ýI«Wì{^ÂÄΞBÿ9�WΞBÿÁÁ ÂÎnp ÏúÁÁÎf�9�ÆÆô‡¶†Ý9Æú„ˆ½žÇ†ÇÖØµ�¸�Ê ÊžžBÿÅ9�úÅ ÇΑ :¤ú:�ÉÉô‡]„ˆ:Æú„ˆežtwÚ�;�ËËô‡¥ðÞ;Æú„ˆ­žÌ gÌÇÊ-‘0‘ËÌÍ Ëž Ì€g€gŠ‚gê ûcƒgŒ"ûcØ«q¢1È¡ÍÞ!BÿÊ;ªúÊ ÌÎÕ‘œÜ‘® ˆöˆüˆÂˆÎyˆ÷uˆ uˆtˆ‘oˆ –Kˆ-nˆ ÀMˆmjˆ ’Tˆöiˆ ‰YˆÐˆ¦\ˆXˆë`ˆàˆ¦\ˆfˆë`ˆêˆ¦\ˆmˆë`ˆðˆ¦\ˆsˆë`ˆöˆ¦\ˆyˆë`ˆÐdˆ äeˆˆ`ˆ Ånˆ\^ˆ ‡sˆ÷[ˆ ýxˆˆÂ~ˆ­ˆ§�ˆ@ˆŽ„ˆDˆ,ˆÖˆ)ˆeˆ%ˆIˆÂ~ˆÞˆ§�ˆqˆŽ„ˆuˆ,ˆˆ)ˆ–ˆ%ˆzˆ!Â~ˆˆ!§�ˆ¢ˆ!Ž„ˆ¦ˆ,ˆ8ˆ)ˆÇˆ%ˆ«ˆ(Â~ˆ@ˆ(§�ˆÓˆ(Ž„ˆ×ˆ,ˆiˆ)ˆøˆ%ˆnQˆ Ñ‹ˆçPˆ ¥�ˆ�NˆªMˆ— ˆ[ ˆa ˆ7iˆHˆ‰DˆüCˆq<ˆ ãψE;ˆ †Óˆ®6ˆ ëÛˆ½ˆ5Øßˆàˆ6Øßˆˆ7Øßˆ&ˆ8Øßˆr0ˆ üꈠ+ˆ ¤õˆÜ*ˆ ‚øˆ£ˆ`ˆfˆ+•ˆFl<Fhttps://www.chosenplaintext.ca/open-source/rust-timing-shield/securityÁ OptionÁcore::option::OptionÁ core::optionÁÏWhttps://crates.io/crates/subtleÁhttps://doc.dalek.rs/subtleÁCtOption::unwrap_orÁûunwrap_or_else()ÁCtOption::unwrap_or_elseÁwork on rust-timing-shieldÁÛó¦ô´ôÅ™ãô unwrap_or()Áû§õÄõhttps://docs.rs/subtleÁöõÛó¦ôCtOption::is_someÁ³ö§õhereÁØööõCtOption::unwrapÁ is_some()Á…÷³ö/https://travis-ci.org/dalek-cryptography/subtleÁ§÷ØöÈ unwrap()Á¼÷ÍôÑ÷…÷‡õë÷§÷È Ùõ°ø¼÷´ôÍôÑ÷ãô‡õë÷È ­ûÄõÙõ°ø«Ó“òËÔÊòëÕ�óÂ!ˆ"(3=_dù ÿ …Ìí¦£¬©ö€#…#ˆ#‹#Î!Ñ!Ö!ÔPŽQ—PŽPÄQýÆþÆÈÇ÷±¯²Choice7assertion failed: (source.0 == 0u8) | (source.0 == 1u8)71assertion failed: (input == 0u8) | (input == 1u8)1CtOptionvalueis_someÀBlackBoxÀúÍú‹ûÃûÒûÞûìûõû�ŽÝ3Ceãèl§”×üsËà¬Ã¶ Ã<©­%qøÄöÎ\‚ËÞÉF&ýàýä—XjÞD‚OF©Ó’2zßäØœ’ìõþó›*?EXƒ[Êõ-ð6áÍÆ¤æ©†.�6‹bØÑËÙ¿ÏÐì5s:ûBSˆ„Äî Àg›idÇFœp¯é[OI6/)¸L+ØÁ¨!âÉMZž¾§ÕcO ¿ÀHÿy$Rä ¥�n«(fÁÜÍ_¶žª=@·¿ºjs¾vÔq;¡w²K ‡žm>_+p �¢ê‹zÙ"�Ö|茇7™‘v-ý.2²Š%«•2Þs(›û?Kß/‚~$ªê©Ì pz,¥²Å€µ¬Y5åIš‰3-:p!y;˜Ä)-—!°kô»ƒû^“dô"éÔÑ?‰¸Ç°›-Ñ�·hþ†~–YÒÒéțቡ·‹ÖõðçIZß/d Ø/ÓËNyò—“â®:S5Yz' Õ—i}äׂÞ'x:Ø[š*†ßâðX�œ¢Èæix[Nïzè!Q<ɵKÉâA e–R7ÿ‘³óÁjøÜÛšF×Q¶1³)ü£Kv™?ó*;$ËŠï< Ýo�]/"25�Ö5Mx¸)6’(ïl‘0ÅK í0Q7c¿(T‰½:zPÍb a“P`�®\xí,�;[mÍ%_îá)¨Á @e/òqí–Øvk‚Ãà„ƒ~ªýÕåº2—UwDŽòÕŽtH�Ï>'¸ikÉsoúÇv=;pt:á§ÏÊà –å@ù¶°ê~ågµðÕQ<ÝzÎä’ß4A—Мú–é0?Y߯Èfë<9ú º!û5Ð0±MÝ"Ì1Þ­#é6bà£Æp±ø'öÒ8‹âÛ(iʹéó‹ïkY3:ó…wo4Æ-PB8Ê÷SÑÊ�Ž]8ª'¯É5ùÁ|z£ ®E8šÏœª“¡ÕÙ¿2#Ù×+—KŠ´[ŸWÕéãÊŸÚ¥;<¬–Æ56o–P|ÕdØŠÔ…ó}âÍ>E1À| sM®Ða‘+qGHð†—±˜¶å¸h�át‡RO�ŽÞÀÍè:Ad½Ä6á‰äš ¾� ¡gìÀâg NXGaù¼/ÞöK­ÞFf²}f—±LÓ2•Æ á2s�À6~¶D4H\õÑ’�$þètð¼Òrúèz쿚¨ �Ìݽ-F¶7Ó^Ä@*²{�ÂÌÙ"³�k;qRèÀ]\q׈õ DT’oy›øƒ­^¼�pTwÙÌzmýد/רž€"Üê ›gžÑâX,"‘¹Ã˜&®šï�b[Y_ðS2%P¯àçxÅÂQ°è/ØÅùðr¸#ìÖé–ñ°4ü4  ¯ÜÑfA�&ÓÙSBh&…}òNjÝÎIìwäRþ:èmιýi5�áv&‹§@N&�Þ€†Îo3Èt¸ÙQ Çc›B”½®Ó‚„ÐY¡w¸½`Q_® Çí°§ ä´r4G?Ãr@²pŒ�²×®€E±je4?‹¶†—š¹¼ +4ÇåRgA·§ÚK¬Ñ6B�[‰­h8Cš6c-CÐÿÀ�áø{=Û!žóÄœ€�ß–¹æÁËŽ6ê‹f}ý”>€rðuÉ¢¬8< A•Jr)‚ê0-£4;ÉÖ0®†M_Á ¨l4ì®wSž ýÆ—·>X”èX‘?À'ò…/µå7Ò�WÏÜg-µ@<š)ìýˆVvÎ9g‘Êõ& Ý­”Ѳæk½È Î(g¹ä‡I€‡4!Â?‡Qº6¢Æz£Îú*ê†õf‰aH�ˆv—-*ìêb!‚œ$€#9¾M™o8ÓýÌ´°ÛkG™æ„Uj'Â%BJû ”Ž=óc²èÎØÑ–¨èëŸì©ö”×�x—†‰vâå ­@L}2[²£¾A4L;釛5ë¿èÅ!z™j·’$h.FÍ™ªzß¹·ÍV^5û÷Ð{ÙÉØò¿0_ ÓÂáL[®vYáP :CòÉlHºöÍðQîHô¤sQ±޼ÑL†Q–¡9ý6DS2P�ƒL¯'Ôº¨þS›ÇQ•þÝ#ñ› ­¨}AåšÃ9ò¥h×ê_Ðe½ÍŽH£�±±qÿUõÇó¿‹[pɘȄcmü xÖ³ô²~˜æ½S#NFÃÌÄ¡ZøÊ»ºÌ“?ùC„\±¼ô�Š)Ú©4PnU÷Xøêzº=T¯zëš!—èÒ¼¢A�¯�gé"!r0ª`ïä0GXŠÈ[º:Ý åã ²Jœ÷þZêá5KàçÖÂ-ýþܯ†bWq[Ì#²bQýZµ¾ø¢ˆT6€8ñø¼c:ó!ÙÍÙ>ÏÓ‡CH.‡G´ &`ßáp¾ªš Èj¨•QË™q¾ÿ§Äż I”¤Xq³&βتڕ‡„Ì7|ú§ÿ/°Ý•`ÆçUÖê]ÑR¢§?\{õ"´„¼ÄÐdë CõÓ$qgŒËã ¬V™Ñì¸s´<�+àŸcI6`딦òÙH7³ÓLÊ?3K›#mxû¨Ï‹¯r«lìÅ•çÈÆtûݲ˜3Žílï‘ÓÙÏʆ¬½€&€<�x? >™-ý¾´­štˆ¡ª#±¾†Ë58‰ëÏSŸa¥‘OY÷Îz>ùŸîÎ×��N5 ñÑ‹öÐ�†¦JM2áÚ8 cQG½nLø7Î[–Ê ùÎøSÀªÕm´¹ÌyVcj„ø–³çlKd)O`Ò4XÔ,@}4Là71œoœÙóÝ =��ëHç4V-EÝ[„Jû±vÛÉhê¹V2b$1®cY»h�iŠRok—;¦#�VæNÖäÑB„Á¿úý€Úîávô┑ÊÎÖpà Æ5üϸEªØawD¥Ç |R—ÝÝ=;ØÖûûÆœ8"ð S‰ï['þ‡Ey4N>@aÛú¦(vO�öé ÜàQ=FÑ š#N†� ;¡^‡0-\Ïø°JDz-œ,öÄ/ï„E–žv¥f\÷ ri¦˜ÇÚñr±êÐL#ÌÒq3.îv…gž-#éX” ‚!í“~Zš©)*0»Sè�©¡=¼,ËøŠî$:QÎz¼¼÷£ç^Ýc>ø@PM…ÇB�gDÚ>õ6ŒÙtá­`¦\—$ù¢œ{‚z®ÌŒïìã7w€Ù[Aúë§GdlOÔ¿îà‚°Õ¼|^%#¬ Í6ÏD¶eb·�]ÙÀÖ4¨f¼wÉyøa6‹’£RI˜ �ÀÿÂå\ªV²Êëú _Q7HOS)¤í‡ Sxò”S ƒ¬î”ä,$ÂÙ‹Ó�Á%Uò }Ö°9'\ÎäúLææÿÂË‹½êZILÕ]³|ÖIí$AHXv3Ki•[0•�‚e½Î|à@7/°Ú1âyVe™#¨€†H¨·1ùK0€À¹ó<4@@›Ò«Ó,‚õ¨K£}-6ym‰¼ÕwØÅ:fàM±lÅ“÷ú¿¶‘dp¾Âbh#P´l˜t­ÅÚÓ•éÚþ ³ÅæÓ›éàþ Ö9×9Ø9Ô ¹iK¨±ºµº¼º¿ºÅºËºÑº×ºÝºãºéºðº÷º »ã¼ý ¼×¿ù¿ÀUÀqÀÉÀëÀÁGÁcÁ»ÁÝÁõÁ9ÂU­ÂÍÂä íÃÇà ÄËÅAǶÈɂ̜ÌÍìÑ[ÒÃÒ Ô ×VÙÌÛMÞÃå"çœç·ç+è®é�êëyë¸ ë.îzîð?ñÞñ¢ò ô³ôFõ¯÷–ùÓ ú)üpüèü/ýþó þ¿½ØD 1# &8J\oŠõ7EÔ,CU„Ÿì³Î9T¿ÚEbÎëYväoŒú…¢C»7­ÛKº._×S É ÷ g!Ö!J"{"ó"o#å#$ƒ$ò$f%—%&‹&'/'Ÿ'(€(®-Ê-ä-4.Œ.Í. /Ö/ô/Â0à0®1Ì1š2¸2‚3|4“4â4:5‚5Õ5Æ ¹¹ÅòÓ¡éæþ$ »î¼ã¿aÀÕÀSÁÇÁE¹¹ûÅåÈŽÌMÒõÓç¨ç¢éõê›ëP îTüýçþÉ% 2DVh{ êQ€’ú¿EËQÚeð{‘¹:Õ V"ñ#r% '˜-.º./â/Î0º1¦2$4Æ4o5·5      +++         + '    '    Ź®¼´¿ý¿)À‰ÀïÀÁ{ÁáÁ ÂmÂÑÂüÂSÃßÃuÅñÆbÈ/Ì´ÌÍsÒ›ÓÅÖþØpÛÐÛRÞ;çÐçdéEê1ëîÕïúðµñfòˆóxô õÑöÞøOúü‰üÅý©þjÅñ± Ð £®É .¶çmó{�¥0»\ÕQòbÑxñm !~!í!”" #‰#*$š$ %°%)&¥&F'¶'%(_-³-Ï-K.7/i0U1A2-3ß3G4~4ù4ì5b¨¨º®º±º¸º¼ºÂºÈºÎºÔºÚºàºæºìºóº»ß¼ø¼Ó¿õ¿ ÀQÀlÀÅÀçÀþÀCÁ^Á·ÁÙÁðÁ5ÂP©ÂÉÂàÂÜéÃÃÃÿÃÆÅ<DZÈîÈûÈ~Ì—ÌÿÌçÑVÒ¾ÒÔ×QÙÈÛHÞ½åç–ç±ç%è¨é‰êþê ëësë¥ë²ë)îgîtîþï:ñØñœò ôô­ô@õŽ÷›÷¨÷vùƒù�ùÀúÍú#ü]üjüâüý)ýþíþ¹·Ò> + !3EWi„ð%2@Ñó(>R�œé®È4NºÔ@\ÉåTpßûj†õ€œ =´0ªØH·'YÐL Æ ô d!Ó!C"u"ì"h#â#$€$ï$_%‘%&„&þ&,'œ' ({(œ-©-Å-á-$.1.†.».Ê.//Ï/í/»0Ù0§1Å1“2±23.4j4w4�4Ò4ß445p55Ã5Ò5„6Š6�6–6œ6¢6¨6®6´6º6Á6Ç6Î6Ô6Û6á6è6î6ö6ü67 777 7&7.747<7B7J7P7X7^7f7l7t7z7�7‡7Ž7”7›7¡7¨7®7¶7¼7Å7Ë7Ô7Ú7ß7å7ê7ð7õ7û78 888!8'8,82878=8B8H8P8V8_8e8n8t8y88„8Š8�8•8�8£8¬8²8»8Á8Æ8Ì8Ñ8×8Ü8â8ê8ð8ø8þ89 9999"9(9.949<9B9J9P9X9^9g9m9v9|9…9‹9”9š9¢9¨9°9¶9¾9Ä9Ê9Ð9«ºµº¿ºÅºËºÑº×ºÝºãºéºðº–¼œ¿ù¿ÀqÀëÀÁcÁÝÁõÁUÂÍÂäÂ;ÞÃÇÃqÅÙÆJÈðÈÌœÌÍ[Ò—Ó­ÖæØXÛÌÛMÞ"ç·ç_é,êëëë§ëìíiî¼ïáðœñMòoóô_ôòô¸ö�÷�÷Åøxù…ù6úÂúçû_üpüý¬ý¤þQ¿Ø¬ · Š'•Åö,ŸÎTÚbëvŒ¢C»7ÛKº_×S ÷ g!Ö!{"ó"o#$ƒ$ò$—%&‹&/'Ÿ'(Z-ž-®-Ê-&.4.¾./ /O0;1'23Ú314l4|4Ô4â4s5Æ5Õ5‡6�6“6™6Ÿ6¥6«6±6·6¾6Ä6Ë6Ñ6Ø6Þ6å6ë6ó6ù677777#7+71797?7G7M7U7[7c7i7q7w7~7„7‹7‘7˜7ž7¥7«7³7¹7Â7È7Ñ7×7Ü7â7ç7í7ò7ø788888$8)8/848:8?8E8M8S8\8b8k8q8v8|8�8‡8Œ8’8š8 8©8¯8¸8¾8Ã8É8Î8Ô8Ù8ß8ç8í8õ8û899 9999%9+91999?9G9M9U9[9d9j9s9y9‚9ˆ9‘9—9Ÿ9¥9­9³9»9Á9Ç9Í9Ó9ÿºÒ¼ë¼Ä¿ß¿À<À]À¯ÀÑÀøÀ.ÁOÁ¡ÁÃÁêÁ ÂA“µÂÚ ÃqæõÃðÈÅ'ǘÈËÈøÈeÌŠÌéÌIÒ¨Ò®ÓýÖ6Ù¨Ûçsç¤çèwémê¤êëYëŽë¯ëîCîqîéï!ñÇñzò«óôžô1õ÷˜÷¥÷ù€ù�ùrúÊúü>ügüÂüýü&ýüý¼þ¡Å' Ä .@RdwÙ /.ÀÐ8M|ŽÛö™»A£Ç)M±Ö;aÆìQwÜg�ò•‹µ)™6±+ § Ñ E!µ!$"R"Í"G#Ã#í#a$Ñ$@%n%é%c&ß& '}'í'\(v-¦-¾-Ú-ý-..s.¥.Ç.æ./µ/Þ/¡0Ê0�1¶1y2¢2e3ö3[4t4‰4¬4Ü4!5S5|5›5Ï5j6ùºÆ¼å¼¼¿Ù¿þ¿4ÀWÀ£ÀËÀðÀ&ÁIÁ•Á½ÁâÁÂ;‡¯ÂÒÂÃ^àïÃèÃvÅnjȸÈòÈYÌ„ÌÝÌCҜҜÓñÖ*ÙœÛ çfçžçûçeé`ê‘êëLë{ë©ëî0îkîáïñ¿ñrò–óô‘ô$õáö’÷Ÿ÷îøzù‡ù]úÄú ü+üaüµüêü ýïýªþ”¿ ² ú (:L^qÌ÷)&¸Ê0GvˆÎðŒµ;–ÁG¤Ð-[¸æCqÎüY‡ä‡|¯�ü0£ ˜ Ë 9!©!"L"¿"8#´#ç#U$Å$4%h%Û%T&Ð&'q'á'P(a- -µ-Ñ-è-(.d.�.Á.Ñ./¦/Ø/’0Ä0~1°1j2œ2V3á3R4n4€4—4Ö45>5v5†5É5[6»Ö¼í¼È¿á¿ À@À_À³ÀÓÀüÀ2ÁQÁ¥ÁÅÁîÁ$ÂC—·ÂÞÂÒ÷ÃôÃ+ÇœÈãÈiÌŒÌíÌKÒ¬Ò×:Ù¬Ûçwç¦ç èqêóê]ë™ëîNîíï%ñËñ‡òõó¢ô5õr÷Zù¨úüRüÆüýþ¥Ç+  0BTfyÝ2ÄÒ$<O~�ßø�½!C§É-OµØ@cËîVyál�÷š�·.ž 8¶0 ¬ Ó J!º!)"T"Ò"L#È#ï#f$Ö$E%p%î%h&ä& '‚'ò'a(�-Ã-ß-.x.¸./º/à/¦0Ì0’1¸1~2¤2j3 4b4Ž4Ä4&5m5µ5o6¯¼µ¿*ÀŠÀÁ|ÁÂnÂýÂUÃàÃòÆcÈ0̵ÌtÒÆÖÿØqÛ<çÑçFê2ëîÖïûð¶ñgò‰óyô õÒößøPúüŠüÆýkòÑ ¤¯Ê·ènô|�¦1¼]ÖRócÒyòn !!î!•"#Š#+$›$ %±%*&¦&G'·'&(`-L.8/j0V1B2.3à3I4ú4í5¯¼µ¿*ÀŠÀÁ|ÁÂnÂýÂVÃàÃóÆdÈ1̵ÌtÒÇÖÙrÛ<çÑçGê3ëî×ïüð·ñhò‹ózô õÕöâøRúü‹üÇýlòÒ ¤°ë·ènô|�¦1¼]ÖRócÒyòn !!î!•"#Š#+$›$ %±%*&¦&G'·'&(M.9/j0V1B2.3&4J4û4î5š¼ ¿ÀuÀÁgÁùÁYÂèÂ?ÃËÃÝÆNÈÌ Ì_Ò±ÖêØ\Û'ç¼ç1êëñíÁïæð¡ñRòtódô÷ô½öÊø;úìûuü±ýVݼ �šø¢ ÓYßgð{‘§HÁ=ÞN½dÝY ú j!Ù!€"ù"u#$†$õ$œ%&‘&2'¢'(7.#/U0A1-2334å4Ø5Ò Þ ì ú   $ 2 < I V ¹ j s | Û - 6 c l u ~ ‡ � € ´ ¾ È _ h q z ƒ Œ • ž § ° " + 4 = F O X a … Ç Ñ ? H Q Z ™ Ô Þ ¨ÃœÅúÈÉÓ„é ë±ësîôš÷§÷‚ù�ùÌúiü(ýÉþï 1¨-0.É./v4Þ4~5Ñ5’òM0ùЖm3úªå¸þ 5>6+7ºeÍf¾jÖl^m.s'vwOxµxIy |ã~ �•�Hƒì�4 ­¡Ÿ¥ ¦`Àå!Y$ˆ%(B)Ï+ÿ,‘/Á0Ó3°8¬:š<·>{@BâCÜEËGëI±KSMOQS)UñV•X^Z^\S^y`Ebíc h5i†ð‹ì‘ê—󣣤§¦ó¦ðK.÷Δk1ø¨ã¶ü ã!<6)7®8Ëf hÔl\mÎrÇuwMx³xGy|á~�“�Fƒ†2 «¡ñ£ ¦¥¦¾�W$†%(@)Í+ý,�/¿0Ñ35ª:˜<µ>y@BàCÚEÉGéI¯KQMOQS'UïV“X\Z\\Q^w`Cbëc¸e3i¼jî‹ê‘è—ê�¡¤�¥ñL/øÏ•l2ù©ä·ý ä!=6*7¯8Ìf hÕl]mÏrÈuwNx´xHy |â~ �”�Gƒ†3 ¬¡ò£ ¦¦¦ò¦¿‘X$‡%(A)Î+þ,�/À0Ò35«:™<¶>z@BáCÛEÊGêI°KRMOQS(UðV”X]Z]\R^x`Dbìc¹e4i½jï‹ë‘é—ë�D§¢¤ž¥"`4ؼ̿DÀ·À6Á©Á(›ÂÕÃøÃ-Ç£ÈpÌñ̰Ò×<Ù³Û{çèxêdë"îðï,ñÒñŽòô¥ô8õ�÷iù³úüÍüþ¨/ á9Ëã¡%«1ºEÐ[æqüŸ•3£»5 ± O!¿!."×"Q#Í#k$Û$J%ó%m&é&‡'÷'f(€.Â/«0—1ƒ2o3.5w6�ÅÊÓ…éÊþð ù÷ºã¼×¿UÀÉÀGÁ»Á9­­ÃoŶȂÌAÒ•Óçœç]é�êyë.î)üèü¢þ½ª &8J\oõÃEt†î³9¿EÎYäoú…­.É J"å#f%'X-æ-Ž.Ï.Ö/Â0®1š2Ø3•4<5„5á�-4Ôƒ- 4ÈËÒÖÚÞâæêîòöúþ!%,37>BIPT[_fmqx|ƒŠ‘˜œ£¸ÄÐÔÛâæí 3Le|�º¾ÅÉÐí !%,37>ELSZov„’™ §®µ¼ÊÑãçîõù!-UY`wƒ‡‹�“—ž¢©°ºÇËÒÖÚÞåéðôûÿ  (,48@DLPX\dhpx€„Œ”œ ¨°¸¼ÄÌÔØàèðôü  (,4<DS[ckowƒ‹�—Ÿ£«¯·»ÃÇÏÞãëó÷ÿ '-39?EKQW]ciou{�‡�“™Ÿ¥«²¹ÀÇÎÕÜãêñøÿ %+17=DKRY`gnu|ƒŠ‘˜Ÿ¦­´»ÂÉÐ×Þåìóú     $ + 2 9 @ G N U \ c j q x  † � “ ™ Ÿ ¥ « ± ¸ ¿ Æ Í Ó Ù ß å ë ñ ÷ ý     & - 4 ; A G M S Y _ f m t ã“-4»ï¼å¿ë¿bÀ×ÀÝÀTÁÉÁÏÁF»ÂÀÂºÃ½Å¾ÅæÈ�ÌNÒøÓùÓúÓç©ç£éöêœë[î\î]î^î_î`îaîbîcîdîeîUüýèþÊ& |"#“ûÀFÌSÜgò}“$(,¿ÃÇ@DHÛ ß ã \"`"d"÷#û#ÿ#x%|%€%'''./ä/Ð0¼1¨2È4¹5 ÍÒÛTÞÇÙ9Â(<»ô¼ñ¿hÀãÀZÁÕÁLÂÅ¿ÿÅêÈ“ÌRÒûÓç­ç¤éúê¡ëfîYüýéþÎ' 2DVh€$Q€˜ÄJÐWàkö� —0ËLç h"$„%'.º. /è/Ô0À1¬2Í4o5¾5:5 ;  ==7 : 689< ˆˆo$¸)u‚‚´core_intrinsicsÁderive_clone_copy_internalsÁú Ì �ŽÝ3CeãH1¨ÕCž¯ËñüÂb%üóZ©0�ŽÝ3Ceã£À ¸¡#Ô$crate::assertÁÉ ‡T]�±ù]©»panic_internalsÁƒgeneric_assert_internalsÁ±œ�ŽÝ3Ceã°a¿þZè¡?ñüúcJ¤0�ŽÝ3CeãÏ„:E� ¿æe,¤¤}”V¯©»»»ð‰â�ŽÝ3Ceã’ 5ScydÚ”üÓ‡/ü…}ê 8�ŽÝ3CeãáLUšYÇùW$crate::format_argsÁñ2è]Åõ‘] fmt_internalsÁfmt_arguments_from_strÁžœ�ŽÝ3CeãD*Ü.²ˆ`Ûüµ°2µŽ ]ͼ�‹�ŽÝ3CeãUAQßð$Ñyq,ªú}©Ø ©»fmt_helpers_for_deriveÁ¢g¡g�ŽÝ3Ceãgß QŒ:R±üÖè+ü€Ü© a�ŽÝ3Ceãjäªiq”´Éì”ú…ÿ‚]´œ�ŽÝ3Ceã­v…Üëkq,Å)¯©»î¿¢g¡g�ŽÝ3Ceã$¬f™.GÖÆÉì¯)d´œ�ŽÝ3Ceã ~ÄÕ j¢ñüžb"ð0�ŽÝ3Ceã/é)ͳªñü�c%0�ŽÝ3Ce㟓uj+74>”ü¢‡/=8�ŽÝ3CeãPl%X¬;Ÿ<q,±¤•©»î¿¢g¡g�ŽÝ3Ce㥄ùÃÉ웤L´œ�ŽÝ3Ceã¬ß×£©o$¤ú;©»»»ú Ì �ŽÝ3Ceãò†›íÔ±ü«è)áa�ŽÝ3Ceã+j6Žö’ôN ÙqˆÚ¾ê¾�ŽÝ3CeãÌz†Évoo ±ü°é+;a�ŽÝ3CeãÖŠ ‹0'›ˆˆÜ �ŽÝ3CeãšøZÃ`*”e,¾)í©»»»ð‰â�ŽÝ3Ceã5öçÃA墧¼É‡T]¹©»ͼƒâ¼±œ�ŽÝ3Ceãa<�ñüéb%50�ŽÝ3Ceã9Å@BÒ/Δüñ†/V8�ŽÝ3CeãwÛë"ÈF£o$«¤ð©»»»ú Ì �ŽÝ3CeãÁ+J䵘í”ü„ˆ/¹8�ŽÝ3CeãÓO×Jºˆ·e,�ú"©»»»ð‰â�ŽÝ3Ceã,¨ôÜ‚’[OÛü‹²'€ͼ�‹�ŽÝ3Ce㸗›ÑÑÚT`üÂWcˆ�ŽÝ3CeãR«moojå±üƒé+Ua�ŽÝ3Ceã>´Pž‘¥>W38 debug_assertÁüã24ÍœS]ƒ‘‹�ŽÝ3Ceã k_ó^[2¸Éü¢C.5ƒ‘‹�ŽÝ3CeãXgÌ/fm�ƒ¥¤H�øœL�$�­¤,�©¤�<��d�D��l�P�4��üœT�(��X�0��\�8� �`�@��h�±¤ �p�‹¢¹ µ¤õ¤å õ�*£¡™žV£=¡Ÿ¹£ ¡ŸŸ¤¢# x¤^¢T ”�²¢… ê¢$žÄžƒ£j¡0Ÿæ£ΡÕŸS¤1¢„�¢¢Õ å¤¥¡žF£-¡´žs£Z¡ ŸÖ£¾¡ÅŸC¤!¢D •¤{¢u å�Ú¢© £‰žðž©£�¡�Ÿ¤ô¡ h¤N¢°4ODHT N·ÞÉMZž¾§ÕϸEªØ4;ÉÖ0®†œ�·hþ†~'>_+p �¢ê5Yz' Õ-‰3-:p!y"ý€Úîávý.2²Š%/רž€"Üx„Uj'Â%B°ûûÆœ8"ðcO ¿ÀHÿr¸#ìÖ„E–žv¥\ÎäúLæ=Å“÷ú¿¶Kˆ„Äî Àg›˜æ½S#NFͧ@N&�Þ€‡H�Ï>'¸ikF¶1³)ü£K6çIZß/d *Í>E1À|`DS2P�ƒÃ‹ïkY3:ó…Two4Æ-PU)O`Ò4XÔ2s�À6~¶DlÊ�Ž]8ª'¯WÚ¥;<¬–Æ]ýÆ—·>X”èŸâå ­@L}2µµKÉâA e–3ÀÍè:Ad½e[²£¾A4L;¶ÖIí$AHXv@ç4V-EÝ[idÇFœp¯a‘+qGHð†b´°ÛkG™æ¯+àŸcI6`íAúë§GdlO/×+—KŠ´[,@}4Là7Ð0±MÝO†¦JM2áýEy4N>@a56o–P|Õd^ïzè!Q<É2 í0Q7c<�k;qRèÀ]s‹’£RI˜ �5ßâðX�œ0ÃÌÄ¡ZøÊ»Î?EXƒ[Êõ- GXŠÈ[º:ÝÖÀÿÂå\ªV²6F¶7Ó^Ä@*q®šï�b[Y{ÏD¶eb·2� ¡gìÀâg.îv…gž-#"yVcj„CòÉlHº¿¯r«lìÅ•ñjs¾vÔq;ÐY¡w¸½‹�Ö5Mx¸)6:ìã7w€Ù[.Òrúèz쿚of¼wÉyøa64É5ùÁ|z£ Xìêb!‚œ¬Ô¿îà‚°Õ¼0Ú•‡„Ì7|åþܯ†bWqÚ,ËøŠî$&ቡ·‹Öõð)ËŽ6ê‹f}ý˜±¼ô�Š)ÚÐsQ±޼ÑLÁ­^¼�pTwv’(ïl‘0ÅK;ô┑ÊÎÖÍb a“P`�>¼ I”¤Xã”×�x—†‰v´x:Ø[š*†/jøÜÛšF×Q5’oy›øƒu‹zÙ"�Ö|SŸa¥‘Où~$ªê©Ì p#ñ› ­¨}AÆò—“â®:S, sM®Ðaé–ñ°4ü4€-\Ïø°JDz?Ãr@²pŒ�Žü xÖ³ô²~̰§ ä´r4G�ê~ågµðÕQJËà¬Ã¶ Ã[Ì#²bQÛbh#P´l˜tMÛÉhê¹V2 ªýÕåº2—UD:QÎz¼¼÷'¿(T‰½:zP=‘dp¾ÂL“¡ÕÙ¿2#ÙZL+ØÁ¨!âá)¨Á @AÉsoúÇv=;G?Y߯ÈfëÏÓÞgDÚ>õ*�‚e½Î|à@Bªzß¹ºk‚Ãà„ƒ~C[®vYáP :¾ýi5�áv&‹†ÐÿÀ�áø{=•<ÝzÎä’ß4K—±˜¶å¸h�cÄ6á‰äš ¾f/µå7Ò¡�$þètð¼n�¯�gé"!rÔdô"éÔÑ?%_ ÓÂáL½&`ßáp¾ªà®\xí,�?öÍðQîHô¤Àe/òqí–ØvB˜3Žílï‘óø–³çlKd¦#�VæN v™?ó*;7ØŠÔ…ó}â_Û!žóÄœ–±ø'öÒ8‹R ñÑ‹öÐ�üýZµ¾ø¢ˆTÜ6€8ñø¼c:ÝA—Мú–é0L#mxû¨Ï‹ð-œ,öÄ/ï&ýàýä—X >™-ý¾´­ö¦\—$ù¢œ{,€�ß–¹æÁ—Cš6c-C”/ØÅùð~@<š)ìý£žª=@·¿º†Q–¡9ý6„Jû±v B8Ê÷SÑVÇÚñr± 7/°Ú1âyC0€À¹ó<4@F`Q_® ÇíŒèl§”×üsû?Kß/‚@›Ò«Ó,‚G š#N†¬î”ä,$Â:Ó2•Æ ák6ŒÙtá­`+R7ÿ‘³óÁ4”½®Ó‚„Š@PM…ÇB�)‡4!Â?‡Q¨Ø/ÓËNy+0ª`ïä0Õy$Rä ¥�n9ú º!û5No�]/"259$€#9¾­ CõÓ$qgŒê<©­%qøÄ_ðS2%P¯|;˜Ä)-—!°#r)‚ê0-£›†H¨·1ùKE¼ +4ÇåR‘·ÍV^5û÷»©†.�6‹bØ é[OI6/)¸M™o8ÓýÌ®ˆVvÎ9g‘¤$ËŠï< Ý8ì¸s´<�ì€&€<�x?õ³ÓLÊ?3K›ï –å@ù¶°IY÷Îz>ùú—ÝÝ=;ØÖ�ŽÝ3Ceã²×®€E±je�át‡RO�ŽÞdþS›ÇQ•þÝÅÚ8 cQG½nþé ÜàQ=FÑêzº=T¯zëÒ©4PnU÷XøÑËã ¬V™Ñëg NXGaùh S‰ï['þ‡4H\õÑ’mR¢§?\{õ"è� ;¡^‡0Êëú _Q7H7ZILÕ]³|?Q Çc›B‰b$1®cY»h ê_Ðe½ÍÈFf²}f—±Lj*ê†õf‰aªÅ!z™j·’¸Ñ²æk½È ¦ÙÌzmýدw�iŠRok—; f\÷ ri¦˜H�ˆv—-*«4ì®wSž ž¢Èæix[N1Ûú¦(vO�öº6¢Æz£Îú©Bh&…}òNƒ¬Y5åIš!óÝ =��ëHjÞD‚OF©kô»ƒû^“$pɘȄcmËÖäÑB„Á¿ú4?‹¶†—š¹�‡CH.‡G´ ßéX” ‚!í“#6B�[‰­h8“†Ë58‰ëÏø‚z®ÌŒï-ŸîÎ×��N5ûJû ”Ž=ó±xò”S ƒ93Ki•[0•A茇7™‘v-®E8šÏœªYVe™#¨€D1œoœÙê ›gžÑây¡w²K ‡žm¬8< A•Jšé6bà£ÆpQõ¨K£}-6Hpt:á§ÏÊàHM_Á ¨l�š Èj¨•Qáštˆ¡ª#±¾÷~Zš©)*0$»Sè�©¡=¼%"Ì1Þ­#P|^%#¬ Í61‰¸Ç°›-Ñ&ŽH£�±±qÉz,¥²Å€µ ú§ÿ/°Ý•`æªÕm´¹Ì }Ö°9'<X,"‘¹Ã˜&zX‘?À'ò… Ù‹Ó�Á%Uò;àçxÅÂQ°è}àçÖÂ-ýÙpà Æ5üâÛ(iʹéóSæÿÂË‹½ê>²{�ÂÌÙ"³r;[mÍ%_î@jÝÎIìw„$h.FÍ™¹Lø7Î[–ÿ–YÒÒéÈ›(�&ÓÙS‚L¯'Ôº¨Äym‰¼ÕwØIgA·§ÚK¬Ñ’«(fÁÜÍ_¶¨ �Ìݽ-p«•2Þs(›Ó’2zßäØ  ¯ÜÑfA��WÏÜg-µ¢Êõ& Ý­”¥ åã ²J×Î(g¹ä‡I€§£ç^Ýc>ø(Å:fàM±lJäRþ:èmι…[ŸWÕéãÊŸ\œ÷þZêá5KØé‡›5ë¿è·¨èëŸì©ö³ÆçUÖê]ÑçOS)¤í‡ S8”>€rðuÉ¢™åšÃ9ò¥h×ÇÿUõÇó¿‹[Ê딦òÙH7î\q׈õ DTt¼/ÞöK­ÞiºÌ“?ùC„\Ïì5s:ûBS çÈÆtûݲòœ’ìõþó›*Ë™q¾ÿ§ÄÅâÿjÿÿ ÿÿC?ÿujÿÿÿ<ÿÿÿÿ;ÿn!xkR ÿ[Mÿÿ#ÿÿ@5ÿ%ÿÿÿÿÿÿ>AB( "ÿWÿÿÿcÿtÿK;-WCs 'Znp02d1.GÿÿÿNÿ]nYÿÿÿ,ÿÿ[ÿqÿÿ Jÿÿÿÿÿÿÿÿ^-MPÿÿÿÿÿ?^>ÿ8ÿÿÿx~m&;ÿ%kNÿÿ;ÿÿ(>ÿÿÿÿÿÿÿ'ÿÿÿ8ÿÿÿ )=F?#(a:*ÿ(lÿq ÿÿÿÿl^#)sKUu `Ti ÿÿÿ?E@_i^9&UFR;H2 q E@*Ew,V=`!x~];h< ÿÿvÿ9AACÿap0`BÿÿÿF(<7_FbWÿÿÿÿÿÿXÿÿQ%ÿÿ) l\fÿÿnMXkÿ2ÿÿÿÿÿÿÿÿÿoÿn7hu|hÿ|ÿÿCI $>ÿÿ?4f&0ÿÿIÿWÿÿÿLÿÿÿ{}ÿÿ'ÿMÿ$TI6}\IgÿyÿÿÿÿÿAJÿÿÿU@lÿqÿ6%ÿ8ÿÿp(_^ÿh Z0ÿÿÿÿÿÿÿÿÿByt~ÿÿÿÿÿyuYw;LÿMTÿÿÿÿhÿ[Ml ZJ%@|6ÿ\O%th)ÿQÿk-*oÿÿ.ÿ)Yÿbÿjÿÿ ÿÿC?ÿujÿÿÿ<R/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/subtle-2.6.1/src/lib.rsÁG/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/subtle-2.6.1ÁR/root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/subtle-2.6.1/src/lib.rsÁ B´«kcøºAõ·è¬W¹À¾ñýñýðH<* 71 L8§XNT= KA=OPQ"PQKOPRVRLQPP-&p RPOK)SGSMSQ%#a [(OQRRMRP QFKCKDV$I0Q2GPQH&>- /, .- /!PHKN(QTK-' 8.1)#8]K!E ,,LF*>,, -.>,,.1FHIS & ,,""++ ,C$ GC.7+ !.EG(&-'67,DFJP1 '6E9 $'''*LL(.-AD&LF*1((7 - ::  GG7 - ,, E?K'7 - 88 F**          3.P<<N%M<<N2N<<N* 11111'NA1H:NMA*H;#; H.E70 @ EELF#D7 6% $70)4GAC4DF?CEDDDEB?*TMVVVE01' GDDE; AL*<;1:)( $?:AE. $?9&9&BJE<E0 .% BCAGE5 .%/ % SA1 $$&5TMVVVER',KH?H 9A03 ;P# *Q&7J )"+"+"+ -1&,SND6z{!\)V I!)d SO. +---/-.B#$$M#C*Q&N7J &"+"+"+ .0 !!!"*.?#$$L!U^#J˜ ¦ ¹ñ>�?oe3rÙ-˜Ñá&¤Ì ŠÁx86_64-unknown-linux-gnuÁ5±îv4¥Cº'é“£¸¦subtleÁ-55f702608e37091dÁ�ŽÝ3Ceãþ”RóŽ ûÝbbuÎuðeeùùÂÊÍÍÍÅÍfÅÍfe�ËùÎ÷ÍÎÎçÎêêÍÍçÍçÍçÍ�ÍçËç–ÌÍäچ͚͚ÃÉÍ�e˯áÂÂÆÎÆœÂÍÆbç¦Ëá?¶>½>ººÒFrust-end-file