§
    ú ¢jŸ  ã                  óæ   — d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	  ed¬	¦  «         G d
„ d¦  «        ¦   «         Z
 ed¬	¦  «         G d„ d¦  «        ¦   «         Zdd„Zdd„Zdd„Zd d„Zd!d„ZdS )"z=Parse decompressed Bundles2/_.index.bin (PoE 3.21.2+ / PoE2).é    )ÚannotationsN)Ú	dataclassé   )Údecompress_bundle)Úhash_bundle_pathT)Úfrozenc                  ó$   — e Zd ZU ded<   ded<   dS )Ú
BundleInfoÚstrÚnameÚintÚuncompressed_sizeN©Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úAC:\Projects\AutoPOE2\src\assistant_tool\ggpk_extract\index_bin.pyr
   r
      s'   € € € € € € à€I€I�IØÐÐÑÐÐr   r
   c                  óL   — e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   d	S )
ÚLogicalFiler   Úpathr   ÚhashÚbundle_indexÚoffsetÚsizeÚbundle_nameNr   r   r   r   r   r      sN   € € € € € € à€I€I�IØ€I€I�IØÐÐÑØ€K€K�KØ€I€I�IØÐÐÑÐÐr   r   ÚdataÚbytesÚposr   Úreturnútuple[int, int]c                óD   — t          j        d| |¦  «        d         |dz   fS )Nú<Ir   é   ©ÚstructÚunpack_from©r   r!   s     r   Ú	_read_u32r+      ó%   € ÝÔ˜d D¨#Ñ.Ô.¨qÔ1°3¸±7Ð:Ð:r   c                óD   — t          j        d| |¦  «        d         |dz   fS )Nz<Qr   é   r'   r*   s     r   Ú	_read_u64r/      r,   r   Úsectionú	list[str]c                ó$  ‡ ‡‡	— dŠ	t          ‰ ¦  «        Šg }g }d}d
ˆˆ	ˆ fd„}dˆ	ˆ fd„}‰	dz   ‰k    rÝ |¦   «         }|dk    r| }|sg }Œ!‰	‰k    rn¾ |¦   «         }|rUd	|cxk    rt          |¦  «        k    r%n n"|                     ||d	z
           |z   ¦  «         nj|                     |¦  «         nTd	|cxk    rt          |¦  «        k    r%n n"|                     ||d	z
           |z   ¦  «         n|                     |¦  «         ‰	dz   ‰k    °Ý|S )z1Path-spec decoder (poedb Bundle schema, 3.21.2+).r   Tr"   r   c                 óz   •— ‰dz   ‰k    rt          d¦  «        ‚t          j        d‰‰¦  «        d         } ‰dz  Š| S )Nr&   zpath spec truncated (u32)r%   r   )Ú
ValueErrorr(   r)   )ÚvÚnr!   r0   s    €€€r   Úread_u32z generate_paths.<locals>.read_u32+   sF   ø€ à�‰7�QŠ;ˆ;ÝÐ8Ñ9Ô9Ð9ÝÔ˜t W¨cÑ2Ô2°1Ô5ˆØˆq‰ˆØˆr   r   c                 óÂ   •— 	 ‰                      d‰¦  «        } n"# t          $ r}t          d¦  «        |‚d }~ww xY w‰‰| …                              dd¦  «        }| dz   Š|S )Nr   zpath spec truncated (string)ÚasciiÚreplacer   )Úindexr4   Údecode)ÚendÚexcÚsr!   r0   s      €€r   Úread_strz generate_paths.<locals>.read_str3   s~   ø€ ð	FØ—-’-  3Ñ'Ô'ˆCˆCøÝð 	Fð 	Fð 	FÝÐ;Ñ<Ô<À#ÐEøøøøð	Føøøà�C˜�GÔ×#Ò# G¨YÑ7Ô7ˆØ�A‰gˆØˆs   ƒ š
9¤4´9r&   r   )r"   r   )r"   r   )ÚlenÚappend)
r0   ÚbasesÚoutputsÚ
generatingr7   r@   Úwordr?   r6   r!   s
   `       @@r   Úgenerate_pathsrG   #   s–  øøø€ à
€CÝˆG‰Œ€AØ€EØ€GØ€Jðð ð ð ð ð ð ð ðð ð ð ð ð ð ð �‰'�QŠ,ˆ,Øˆx‰zŒzˆØ�1Š9ˆ9Ø'˜ˆJØð Ø�ØØ�!Š8ˆ8ØØˆH‰JŒJˆØð 		 Ø�DÐ&Ð&Ò&Ð&�C ™JœJÒ&Ð&Ð&Ð&Ð&Ø—’˜u T¨A¡Xœ°Ñ2Ñ3Ô3Ð3Ð3à—’˜qÑ!Ô!Ð!Ð!à�DÐ&Ð&Ò&Ð&�C ™JœJÒ&Ð&Ð&Ð&Ð&Ø—’˜U 4¨!¡8œ_¨qÑ0Ñ1Ô1Ð1Ð1à—’˜Q‘”�ð' �‰'�QŠ,ˆ,ð( €Nr   Úuncompressedú*tuple[list[BundleInfo], list[LogicalFile]]c                ób  — d}t          | |¦  «        \  }}g }t          |¦  «        D ]r}t          | |¦  «        \  }}| |||z   …                              dd¦  «        }||z  }t          | |¦  «        \  }}|                     t	          ||¬¦  «        ¦  «         Œst          | |¦  «        \  }}g }	t          |¦  «        D ]g}t          | |¦  «        \  }
}t          | |¦  «        \  }}t          | |¦  «        \  }}t          | |¦  «        \  }}|	                     |
|||f¦  «         Œht          | |¦  «        \  }}g }t          |¦  «        D ]g}t          | |¦  «        \  }
}t          | |¦  «        \  }}t          | |¦  «        \  }}t          | |¦  «        \  }}|                     |
|||f¦  «         Œht          | |d …         ¦  «        }i }|D ]e\  }}}}|dk    rŒt          ||||z   …         ¦  «        D ]<}|                     dd¦  «         	                    ¦   «         }||t          |¦  «        <   Œ=Œfg }|	D ]u\  }
}}}|                     |
d|
d›�¦  «        }d|cxk    rt          |¦  «        k     rn n||         j        nd	}|                     t          ||
||||¬
¦  «        ¦  «         Œv||fS )Nr   r9   r:   )r   r   ú\ú/zhash:Ú016xÚ )r   r   r   r   r   r   )r+   Úranger<   rB   r
   r/   r   rG   r:   Úlowerr   ÚgetrA   r   r   )rH   r!   Úbundle_countÚbundlesÚ_Úname_lenr   ÚusizeÚ
file_countÚ	raw_filesÚhÚbidxÚoffr   Úpath_rep_countÚrepsÚpoffÚpsizeÚrecÚnestedÚhash_to_pathÚ_hÚ_recr   ÚloweredÚlogicalÚbnames                              r   Úparse_indexrh   T   sD  € Ø
€CÝ! ,°Ñ4Ô4Ñ€L�#Ø "€GÝ�<Ñ Ô ð Gð GˆÝ! ,°Ñ4Ô4‰ˆ�#Ø˜C #¨¡.Ð0Ô1×8Ò8¸À)ÑLÔLˆØˆx‰ˆÝ˜|¨SÑ1Ô1‰
ˆˆsØ�Š•z t¸uÐEÑEÔEÑFÔFÐFÐFå ¨cÑ2Ô2�O€J�Ø13€IÝ�:ÑÔð /ð /ˆÝ˜<¨Ñ-Ô-‰ˆˆ3Ý˜l¨CÑ0Ô0‰	ˆˆcÝ˜\¨3Ñ/Ô/‰ˆˆSÝ˜l¨CÑ0Ô0‰	ˆˆcØ×Ò˜!˜T 3¨Ð-Ñ.Ô.Ð.Ð.å# L°#Ñ6Ô6Ñ€N�CØ,.€DÝ�>Ñ"Ô"ð +ð +ˆÝ˜<¨Ñ-Ô-‰ˆˆ3Ý˜l¨CÑ0Ô0‰	ˆˆcÝ˜|¨SÑ1Ô1‰
ˆˆsÝ˜\¨3Ñ/Ô/‰ˆˆSØ�Š�Q˜˜e SÐ)Ñ*Ô*Ð*Ð*å˜|¨C¨D¨DÔ1Ñ2Ô2€FØ#%€LØ!%ð >ð >ÑˆˆD�%˜Ø�AŠ:ˆ:ØÝ" 6¨$°¸±Ð*=Ô#>Ñ?Ô?ð 	>ð 	>ˆDØ—l’l 4¨Ñ-Ô-×3Ò3Ñ5Ô5ˆGØ6=ˆLÕ)¨'Ñ2Ô2Ñ3Ð3ð	>ð "$€GØ'ð 
ð 
Ñˆˆ4��dØ×Ò Ð#3¨1Ð#3Ð#3Ð#3Ñ4Ô4ˆØ&'¨4Ð&>Ð&>Ò&>Ð&>µ#°g±,´,Ò&>Ð&>Ð&>Ð&>Ð&>�˜”Ô"Ð"ÀBˆØ�ŠÝØØØ!ØØØ!ðñ ô ñ		
ô 		
ð 		
ð 		
ð �GÐÐr   Ú
compressedc                ó:   — t          t          | ¦  «        ¦  «        S )N)rh   r   )ri   s    r   Údecompress_index_blobrk   ‹   s   € ÝÕ(¨Ñ4Ô4Ñ5Ô5Ð5r   )r   r    r!   r   r"   r#   )r0   r    r"   r1   )rH   r    r"   rI   )ri   r    r"   rI   )Ú__doc__Ú
__future__r   r(   Údataclassesr   Úbundler   Úmurmurr   r
   r   r+   r/   rG   rh   rk   r   r   r   ú<module>rq      sP  ðØ CÐ CØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø !Ð !Ð !Ð !Ð !Ð !à %Ð %Ð %Ð %Ð %Ð %Ø $Ð $Ð $Ð $Ð $Ð $ð €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð
 €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð;ð ;ð ;ð ;ð;ð ;ð ;ð ;ð.ð .ð .ð .ðb4ð 4ð 4ð 4ðn6ð 6ð 6ð 6ð 6ð 6r   