Êþº¾1l ^Ö ×Ø ×Ù ]Ú ]ÛÜÝ ×Þ ß à ]á ]â ãä} åæ ç ×è @€@@ éê éë ìí îï ðñò 1óô 3õö 5Ö ÷ø ùú ûü ÷ý þÿ þ þ @ ÷    3Ö    JÖ    ÷  ù ] ]  X Xü Å Å !"MERKLE_IH_PREFIXB ConstantValueTHEX_BLOCK_SIZEI HASH_SIZE()VCodeLineNumberTableLocalVariableTablethisLphex/thex/TTHashCalcUtils;calculateShareFileThexData(Lphex/share/ShareFile;)V shareFileLphex/share/ShareFile;fileSizeJlevelsnodeSizeinStreamLjava/io/BufferedInputStream;lowestLevelNodesLjava/util/List;merkleTreeNodesrootHash[BdepthdataLphex/thex/ShareFileThexData;LocalVariableTypeTableLjava/util/List<[B>;&Ljava/util/List;>; Exceptions getTreeLevels(J)IgetTreeNodeSize(JI)Inodes fileNodeSizepowcalculateTigerTreeNodes)(IJLjava/io/InputStream;)Ljava/util/List;endie Ljava/lang/InterruptedException;nodePosstartLjava/io/InputStream;thexCalculationMode nodeCountnodeListtigerTreeDigestLjava/security/MessageDigest; totalRead readCountbuffer Signature-(IJLjava/io/InputStream;)Ljava/util/List<[B>;calculateMerkleParentNodes"(Ljava/util/List;)Ljava/util/List;rightresultleftmdsize parentNodesiteratorLjava/util/Iterator; childNodestmpNodes<(Ljava/util/List<[B>;)Ljava/util/List;>;resolveMerkleNodes([BJ)Ljava/util/List;hashihashList parentRow currentRowhashListIteratorrootrowIndexverifiedZLjava/util/Iterator<[B>;+([BJ)Ljava/util/List;>;verifyMerkleChildToParent#(Ljava/util/List;Ljava/util/List;)Z expectedNodesexpectedParentNodesparentNodeListOfChilds+(Ljava/util/List<[B>;Ljava/util/List<[B>;)ZcalculateMerkleParentRowleftNode rightNodechildNodesIterator*(Ljava/util/List<[B>;)Ljava/util/List<[B>;verifyTigerTreeHash$ThexData InnerClassesP(Lphex/download/ThexVerificationData$ThexData;Lphex/common/file/ManagedFile;JJ)ZexpLjava/io/IOException;thexData-Lphex/download/ThexVerificationData$ThexData; managedFileLphex/common/file/ManagedFile;offsetlength)Lphex/common/file/ManagedFileInputStream;expectedverifyed SourceFileTTHashCalcUtils.java hi% &' () …† ‡ˆjava/io/BufferedInputStreamjava/io/FileInputStream *+ h, h- Œ žŸ ./java/util/List ¤0phex/thex/ShareFileThexData h1 234 ‹5 678 9:; <=> .?java/lang/Integer @0java/util/ArrayList hAcom/bitzi/util/TigerTreeB CiD E)F GH IJK LMjava/lang/InterruptedException NO Pijava/io/IOExceptionHashing file interrupted. hQ RS TUphex/thex/ThexCalculationWorkerHashing file failed.V WXY ZŸcom/bitzi/util/Tiger ¦[\ ]^ _? I` Tainvalid hash tree size. bcmissing root hash.hash tree is corrupt. ¹º ¿Ÿd ef'phex/common/file/ManagedFileInputStream hg h0 ijphex/thex/TTHashCalcUtilsjava/lang/Objectk+phex/download/ThexVerificationData$ThexDataphex/share/ShareFile getThexDataE(Lphex/thex/FileHashCalculationHandler;)Lphex/thex/ShareFileThexData; getFileSize()J getSystemFile()Ljava/io/File;(Ljava/io/File;)V(Ljava/io/InputStream;)Vget(I)Ljava/lang/Object;()I([BLjava/util/List;I)V setThexData (Lphex/thex/ShareFileThexData;)Vjava/lang/Math(DD)Dceil(D)Dphex/utils/IOUtilcalculateCeilLog2(I)Bphex/prefs/core/LibraryPrefsThexCalculationModeLphex/prefs/api/Setting;phex/prefs/api/Setting()Ljava/lang/Object;intValue(I)Vjava/security/MessageDigestresetjava/lang/SystemcurrentTimeMillisjava/io/InputStreamread([B)Iupdate([BII)Vjava/lang/Threadsleep(J)V currentThread()Ljava/lang/Thread; interrupt(Ljava/lang/String;)Vdigest()[Badd(Ljava/lang/Object;)Zphex/common/log/NLoggererror&(Ljava/lang/Class;Ljava/lang/Object;)Vjava/util/CollectionsunmodifiableList()Ljava/util/Iterator;java/util/IteratorhasNext()Znext(B)V(ILjava/lang/Object;)V arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)Vjava/util/Arraysequals([B[B)Z"(Lphex/common/file/ManagedFile;J)V getNodeSize getNodeHash(I)[B"phex/download/ThexVerificationData!]^š_`abcdaefdag hij/*·±k3l mn opjF v*¶Æ±*¶@¸>¸6»Y»Y*¶· · :¸ :¸ :¹ À¹ À:¹d6 »Y ·: * ¶±k6 ?A DEFH.J8M?NUO`QoSuTlf vqrhstcud\vd.Hwx8>yz?7{zU!|}`~d o€ 8>y‚?7{ƒ„@ …†jøv”œ¬”œ¬”œ¬”œ¬”œ¬”œ¬ ”œ¬"”œ¬$”œ¬&”œ ¬(”œ ¬ ¬k^^_ `abcd&e(f0g2h:i<jDkGlOmRnZo]peqhrpssul vst ‡ˆj—+*‡¸,Ž>Їo¸-Ž6¸.6*‡¸,Ž6¬k ‚…†(‡l>+st+~d !‰dŠd‹d(vd Œjß²/¶0À1¶26Їo¸-Ž6»3Y·4:»5Y·6: 76 7¼: ”œŸ Ÿ™¶86 ¸97  ¢W- ¶:Y6 ŸJ  ¶;  `6  …a7¸97 e…i¸<§:¸>¶?»@YA·B¿¸97 §ÿ©¶C¹DW  ”™EF¸G»@YF·B¿§ÿ`°“=kv“”•$—-˜0™3š9›FKžN S¢f¤p¥w¦©„ª±“¬•¯›°¥²ª³­´º¶Ç¸Ï¹Ù»Ü¼lŽ„ Žt•N‹‘d S†’t ßvdßstßw“Ñ”dÆ•d$»–z-²—˜0¯™t3¬šd 9¦›} $»–‚„@œ žŸjÕ Ë»3Y·HL+*¸I¹DW*M,¹¤­»JY·KN,¹‡*o¸-Ž6»3Y·4:,¹L:¹M™h¹NÀÀ:¹M™B¹NÀÀ:-¶8-¶O-¾¶;-¾¶;-¶C:  ¹DW§ ¹DW§ÿ”+¹PM§ÿO+°kfÈÉËÌÏ'Ð8ÑCÒKÓUÕdÖnØ}ÙÚ†Ûܚݠު߭â·äºåÃæÆçÉèlf }- }  ¡} dS¢}'Ÿ£˜8ޤdCƒ¥zK{¦§˨zÃ{z¶©z Cƒ¥‚˨‚Ã{ƒœª «¬j €¸>»3Y·H:*¾p™ »@YQ·B¿6`*¾£$¼:*¸R¹DW„§ÿØ»3Y`·4:::¹L:¹Mš »@YS·B¿¹NÀ: »3Y·4: ¹DW¸I¹DW»3Y·4:6 6  £±¹M™§6 ¹NÀ:  ¹DW¹¹h¤ »@YT·B¿¹¹hdŸ¹¹h F¸U™<:¸I¹DW„  £¹M™»3Y¹h·4:6 §ÿO š »@YT·B¿°k¢(ïðòô ø-ú3û>üHøNÿZ]`is} ‰ “  ª´·ºÊÍÙãö(2"6#C$F&V(h*k-n.s0}2lŽ3­}#+®dÙ’­} €}€st{udr¯zZ&{z]#°z` ±zi²§‰÷³} ·É´d ºÆµ¶ 4r¯‚Z&{ƒ]#°‚` ±‚i²·„@œ¸ ¹ºjT*¸VM,¹+¹Ÿ¬+¹>6¢/,¹ À:+¹ À:¸W𬄧ÿѬk. 78:=>&@3A@BJDL>RGlH3‰}@ »} 2®dT¨zT¼zO½z7¤d T¨‚T¼‚O½‚œ¾ ¿Ÿjl’»JY·KL*¹=»3Y‡*o¸-Ž·4N*¹L:¹M™`¹NÀ:¹Mš-¹DW§ÿ×¹NÀ:+¶8+¶O+¾¶;+¾¶;+¶C:-¹DW§ÿœ-°kJPQR!S)T3V?WIYRZU\a]e^j_t`~a„bcdlR?NÀ}a,Á}„ ¡}’¨zŠ£˜ƒ¤d!q°z)i§ ’¨‚!q°‚)i·œà ÄÈj⬻XY+ ·Y:²/¶0À1¶26»5Y·6: 7 6 7¼:  ”œQ ¶ZY6 ŸC¸97   ¶;  …a7 ¸97 e…i¸<§:¸>¶?»@YA·B¿§ÿ­§: ¬¶C: * *¶[…mˆ¶\: ¸W6¬[lo=.„‡@kbm op"q%r(s.vDxIySz[}`~l…o€qƒw„†„‹‡ˆ‰Š‹Œ’ ©l¬` ŽtqI8’t ‰ÉÊ ¬Ë̬ÍάÏt¬Ðt ¡wÑ“”d"Š—˜%‡™t („šd .~›} ’­}   Ò}©Ó¶ÔÕÇ Å#Æ