Ë
    Î£jù   ã                   ó�   — d dl mZmZmZ d dlmZmZ defd„Zdefd„Zdefd„Z	defd„Z
defd	„Zded
efd„Zdefd„Zdedefd„Zy)é    )Ú
PCFElementÚPCFFileÚAttributeType)ÚATTRIBUTE_DEFAULTSÚELEMENT_DEFAULTSÚelementc                 ó~   — t        d„ t        | j                  j                  «       «      D «       «      }t	        |«      S )Nc              3   óh   K  — | ]*  \  }\  }}||t        |t        «      s|n
t        |«      f–— Œ, y ­w©N)Ú
isinstanceÚlistÚtuple)Ú.0ÚnameÚ	attr_typeÚvalues       úOC:\Users\pivot\Documents\cueki\casual-preloader\core\operations\pcf_compress.pyÚ	<genexpr>z#get_element_hash.<locals>.<genexpr>   s8   è ø€ ð á(JÑ$ˆDÑ$�9˜eð 
ˆy¤z°%¼Ô'>™%ÄEÈ%ÃLÔQÙ(Jùs   ‚02)r   ÚsortedÚ
attributesÚitemsÚhash)r   Úsorted_attrss     r   Úget_element_hashr      s:   € Üñ ä(.¨w×/AÑ/A×/GÑ/GÓ/IÔ(Jóó €Lô �ÓÐó    Úpcfc                 ó  — i }| j                   D ]¿  }|j                  j                  «       D ]   \  }\  }}|t        j                  k(  sŒ|D ]  }|t        | j                   «      k  sŒ| j                   |   }| j                  |j                     j                  d«      }|dvsŒXt        |«      }	|	|vrg ||	<   ||	   j                  |«       Œ� Œ¢ ŒÁ |j                  «       D �
�ci c]  \  }
}t        |«      dkD  sŒ|
|“Œ c}}
S c c}}
w )NÚascii)Ú
DmeElementÚ	DmElementÚDmeParticleSystemDefinitioné   )Úelementsr   r   r   ÚELEMENT_ARRAYÚlenÚstring_dictionaryÚtype_name_indexÚdecoder   Úappend)r   Úhash_to_indicesr   Ú	attr_namer   r   ÚidxÚreferenced_elementÚref_type_nameÚelement_hashÚhash_Úindicess               r   Úfind_duplicate_array_elementsr2      s  € à€Oà—<”<ˆØ-4×-?Ñ-?×-EÑ-EÖ-GÑ)ˆIÑ)˜	 5ØœM×7Ñ7Ó7Û �CØœS §¡Ó.Ó.Ø-0¯\©\¸#Ñ->Ð*Ø(+×(=Ñ(=Ð>P×>`Ñ>`Ñ(a×(hÑ(hÐipÓ(q˜Ø(Ð0iÒiÜ+;Ð<NÓ+O˜LØ+°?ÑBØ@B °Ñ =Ø+¨LÑ9×@Ñ@ÀÕEñ !ñ .Hð  ð 2A×1FÑ1FÔ1HÔ]Ñ1H™~˜u gÌCÐPWËLÐ[\ÓL\ˆE�7‰NÐ1HÒ]Ð]ùÓ]s   Ã$DÃ;Dc           	      ó”  — i }|j                  «       D ]4  }t        t        j                  |«      «      }|d   }|dd  D ]  }|||<   Œ	 Œ6 | j                  D ]k  }|j
                  j                  «       D ]L  \  }\  }	}
|	t        j                  k(  sŒ|
D �cg c]  }|j                  ||«      ‘Œ }}|	|f|j
                  |<   ŒN Œm y c c}w ©Nr   r"   )
Úvaluesr   ÚdictÚfromkeysr#   r   r   r   r$   Úget)r   Ú
duplicatesÚ	index_mapr1   Úunique_indicesÚfirst_indexr,   r   r+   r   r   Ú	new_values               r   Úupdate_array_indicesr>   #   sÏ   € ð €IØ×$Ñ$Ö&ˆäœdŸm™m¨GÓ4Ó5ˆØ$ QÑ'ˆØ! ! "Ó%ˆCØ(ˆI�cŠNñ &ð	 'ð —<”<ˆØ-4×-?Ñ-?×-EÑ-EÖ-GÑ)ˆIÑ)˜	 5ØœM×7Ñ7Ó7á@EÓFÁ¸˜YŸ]™]¨3°Õ4À�	ÐFØ1:¸IÐ0F�×"Ñ" 9Ò-ñ	 .Hñ  ùò Gs   ÂCc                 óÄ  — t        «       }i }|j                  «       D ]E  }t        t        j	                  |«      «      }|d   }|dd  D ]  }|j                  |«       |||<   Œ ŒG g }i }	d}
t        | j                  «      D ]%  \  }}||vsŒ|
|	|<   |j                  |«       |
dz  }
Œ' |D ]­  }|j                  j                  «       D ]Ž  \  }\  }}|t        j                  k(  r=g }|D ]$  }||v r||   }||	v sŒ|j                  |	|   «       Œ& ||f|j                  |<   ŒY|t        j                  k(  sŒm||v r||   }||	v sŒ{||	|   f|j                  |<   Œ� Œ¯ || _        y r4   )Úsetr5   r   r6   r7   ÚaddÚ	enumerater#   r)   r   r   r   r$   ÚELEMENT)r   r9   Úduplicate_indicesÚduplicate_to_firstr1   r;   Ú	first_idxÚdup_idxÚnew_elementsÚ
old_to_newÚ	new_indexÚ	old_indexr   r+   r   r   r=   r,   s                     r   Úreorder_elementsrL   7   sœ  € ô ›ÐØÐà×$Ñ$Ö&ˆÜœdŸm™m¨GÓ4Ó5ˆØ" 1Ñ%ˆ	Ø% a bÓ)ˆGØ×!Ñ! 'Ô*Ø*3Ð˜wÒ'ñ *ð 'ð €LØ€JØ€Iä'¨¯©Ö5Ñˆ	�7ØÐ-Ò-Ø$-ˆJ�yÑ!Ø×Ñ Ô(Ø˜‰N‰Ið	 6ó  ˆØ-4×-?Ñ-?×-EÑ-EÖ-GÑ)ˆIÑ)˜	 5ØœM×7Ñ7Ò7à�	Û �CàÐ0Ñ0Ø0°Ñ5˜à˜jÒ(Ø!×(Ñ(¨°C©Õ9ð !ð 2;¸IÐ0F�×"Ñ" 9Ò-Øœm×3Ñ3Ó3àÐ.Ñ.Ø.¨uÑ5�Eà˜JÒ&Ø5>À
È5Ñ@QÐ4R�G×&Ñ& yÒ1ñ% .Hð  ð,  €C…Lr   c                 óÄ  — t        «       }| j                  D ]S  }|j                  | j                  |j                     «       |j                  |j                  j                  «       «       ŒU t        t        |«      «      }t        |«      D ��ci c]  \  }}||“Œ
 }}}| j                  D ]%  }| j                  |j                     }||   |_        Œ' || _        | S c c}}w r   )r@   r#   rA   r&   r'   Úupdater   Úkeysr   r   rB   )r   Úused_stringsr   Únew_dictionaryÚiÚold_strrI   Úold_types           r   Úoptimize_string_dictionaryrU   i   sÏ   € ä“5€LØ—<”<ˆà×Ñ˜×.Ñ.¨w×/FÑ/FÑGÔHà×Ñ˜G×.Ñ.×3Ñ3Ó5Õ6ð	  ô œD Ó.Ó/€NÜ/8¸Ô/HÔIÑ/H¡  G�'˜1‘*Ð/H€JÑIð —<”<ˆØ×(Ñ(¨×)@Ñ)@ÑAˆØ",¨XÑ"6ˆÕð  ð
 +€CÔà€Jùó Js   ÂCÚdefaults_dictc                 óŽ  — g }| j                   j                  «       D ]’  \  }\  }}|j                  d«      }||v sŒ||   }d}t        |t        t
        t        f«      r||k(  }n8t        |t        «      rt        |«      dv r||k(  }nt        |t        «      r||k(  }|sŒ‚|j                  |«       Œ” |D ]  }| j                   |= Œ y )Nr   F)é   é   )r   r   r(   r   ÚintÚfloatÚboolr   r%   Úbytesr)   )	r   rV   Úattributes_to_remover+   r   r   Úattr_name_strÚdefault_valueÚmatches_defaults	            r   Ú_remove_default_attributesrb   �   sÍ   € àÐØ)0×);Ñ);×)AÑ)AÖ)CÑ%ˆ	Ñ%�I˜uØ!×(Ñ(¨Ó1ˆØ˜MÒ)Ø)¨-Ñ8ˆMØ#ˆOÜ˜-¬#¬u´dÐ);Ô<Ø"'¨=Ñ"8‘Ü˜M¬5Ô1´c¸-Ó6HÈFÑ6RØ"'¨=Ñ"8‘Ü˜M¬5Ô1Ø"'¨=Ñ"8�ÚØ$×+Ñ+¨IÕ6ð *Dó *ˆ	Ø×Ñ˜yÑ)ñ *r   c                 óÆ  — t         D ��ci c]  \  }}||“Œ
 }}}t        D ��ci c]  \  }}||“Œ
 }}}i }| j                  d«      }|D ];  }|j                  j	                  d«      }| j
                  j                  |«      ||<   Œ= | j
                  D �]@  }| j                  |j                     j	                  d«      }|dk(  r_| j                  |d«      }	|	dk(  sŒI|j                  j	                  d«      }||v sŒi|j                  d   \  }
}|
||   f|j                  d<   Œ�|dk(  rz| j                  |d«      }|�Xt        t        j                  |«      «      }t        |«      t        |«      k7  r#|j                  d   \  }
}|
|f|j                  d<   t        ||«       �Œ|d	k(  s�Œt!        d
«      j#                  d«      |_        t        ||«       �ŒC y c c}}w c c}}w )Nr!   r   ÚDmeParticleChildÚchildl   ÿÿ s   childÚchildrens   childrenÚDmeParticleOperatorÚ )r   r   Úget_elements_by_typeÚelement_namer(   r#   Úindexr&   r'   Úget_attribute_valuer   r   r6   r7   r%   rb   ÚstrÚencode)r   r   r   Úattribute_defaults_dictÚelement_defaults_dictÚsystem_indicesÚsystem_defsr   Ú	type_nameÚchild_valuer   Ú_Úchildren_valuer;   s                 r   Úcombined_cleanup_passrw   –   sã  € å>PÔQÑ>P©{¨t°U˜t U™{Ð>PÐÑQÝ<LÔMÑ<L©[¨T°5˜T 5™[Ð<LÐÑMð €NØ×*Ñ*Ð+HÓI€KÛˆØ×#Ñ#×*Ñ*¨7Ó3ˆØ"Ÿ|™|×1Ñ1°'Ó:ˆ�tÒð ð
 —<•<ˆØ×)Ñ)¨'×*AÑ*AÑB×IÑIÈ'ÓRˆ	ð Ð*Ò*Ø×1Ñ1°'¸7ÓCˆKØ˜jÓ(Ø×+Ñ+×2Ñ2°7Ó;�Ø˜>Ò)Ø#*×#5Ñ#5°hÑ#?‘L�I˜qØ4=¸~ÈdÑ?SÐ3T�G×&Ñ& xÒ0ð Ð7Ò7Ø ×4Ñ4°W¸jÓIˆNØÐ)Ü!%¤d§m¡m°NÓ&CÓ!D�Ü�~Ó&¬#¨nÓ*=Ò=Ø#*×#5Ñ#5°kÑ#B‘L�I˜qØ7@À.Ð6Q�G×&Ñ& {Ñ3ä& wÐ0EÖFð Ð/Ô/Ü#& r£7§>¡>°'Ó#:ˆGÔ Ü& wÐ0GÖHñ5  ùó RùÛMs
   ŠG£GÚreturnc                 ó|   — t        | «       t        | «      }|rt        | |«       t        | |«       t	        | «      }|S r   )rw   r2   r>   rL   rU   )r   r9   Úfinal_results      r   Úremove_duplicate_elementsr{   À   s=   € Ü˜#Ôô /¨sÓ3€JáÜ˜S *Ô-Ü˜˜jÔ)ä-¨cÓ2€LàÐr   N)Úvalve_parsersr   r   r   Úcore.constantsr   r   r   r2   r>   rL   rU   r6   rb   rw   r{   © r   r   Ú<module>r      s„   ðß <Ñ <ç ?ð˜jó ð^ wó ^ð(G˜gó Gð(/ ˜'ó / ðd Gó ð0*¨
ð *À4ó *ð*'I˜wó 'IðT 7ð ¨wô r   