ó
    Â ƒjL]  ã                   óö  • S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJr  S SK	r
S SKrS SKJrJrJrJrJrJrJrJrJr  SrSrSrSrSrS	rS
rS	rSrSrSr Sr!Sr"Sr#Sr$\
RJ                  " S5      r&\
RJ                  " S5      r'\" SS9 " S S5      5       r(\ " S S5      5       r) " S S5      r* " S S5      r+S\,S\
RZ                  4S  jr.S!\/S\0\/   4S" jr1S#\2S\/4S$ jr3S#\2S\44S% jr5S&\/S\0\4   4S' jr6S(\/S)\/S\7\/\/4   4S* jr8S+ r9S,\/S-\/4S. jr:\Rv                  " \Rx                  R{                  S/5      =(       d    S5      r>S0 H/  r?\@" \>\?5      rA\R„                  /\AlC        \R„                  \AlD        M1     S\
RJ                  4S1 jrES,\/S-\/S\
RJ                  4S2 jrFS,\/S3\/S4\/S\
RZ                  4S5 jrGS6\4S7\44S8 jrH\R’                  " 5       S9 5       rJSBS: jrKS; rLS< rMS= rN " S> S?5      rO " S@ SA5      rPg)Cé    N)Ú	dataclass)	ÚAC_NÚCKPTÚDEVICEÚDTYPEÚSEM_NÚSEM_OFFÚ
prompt_idsÚread_wav_leftÚwav_stft_cossiméÈ   éd   é¬   éV   i  i   i   é   g333333û?l   S¢$ l   W= l   ¹yn< l   ….Ïv l   ÿÿ g      ð=g-DTû!>T)Úfrozenc                   ó`   • \ rS rSr% \\S'   \\S'   \\S'   \\S'   \\S'   \\S'   S\4S	 jrS
r	g)ÚMoveé*   ÚframeÚcodebookÚoldÚnewÚkindÚlocal_scoreÚreturnc                 ót   • SU R                   S-    SU R                   SU R                   SU R                   3$ )Nr   é   z/cbÚ:ú->)r   r   r   r   )Úselfs    Útraining/refine.pyÚlabelÚ
Move.label3   s6   € Ø�t—z‘z A‘~Ð& c¨$¯-©-¨¸¸$¿(¹(¸À2ÀdÇhÁhÀZÐPÐPó    © N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚintÚ__annotations__ÚstrÚfloatr#   Ú__static_attributes__r&   r%   r"   r   r   *   s/   ‡ àƒJØƒMØ	ƒHØ	ƒHØ
ƒIØÓðQ�s÷ Qr%   r   c                   óD   • \ rS rSr% \\S'   \\S'   \S-  \S'   \\S'   Srg)ÚRenderResulté7   Úrequest_pathÚwav_pathNÚdump_dirÚscorer&   )r'   r(   r)   r*   r-   r,   r.   r/   r&   r%   r"   r1   r1   7   s   ‡ àÓØƒMØ�D‰jÓØ†Lr%   r1   c                   ó   • \ rS rSrS rSrg)ÚPublishedStacké?   c                 óî  • SSK JnJn  SSKJn  SSKJn  SSKJn  SSK	J
n  [        SSS	9  UR                  [        S
-   5      U l        UR                  [        S-   [        S9R!                  ["        5      R%                  5       R'                  S5      U l        UR                  [        S-   [        S9R!                  ["        5      R%                  5       R'                  S5      U l        UR                  [        S-   [,        R.                  S9R!                  ["        5      R%                  5       R'                  S5      U l        UR                  [        S-   [,        R.                  S9R!                  ["        5      R%                  5       R'                  S5      U l        UR                  [        S-   [,        R.                  S9R!                  ["        5      R%                  5       R'                  S5      U l        g )Nr   )ÚQwen2TokenizerÚQwen3ForCausalLM)ÚMiniMaxMusic3Vocoder)ÚMiniMaxMusic3ConditionEncoder)ÚMiniMaxMusic3RVQDepthDecoder)ÚMiniMaxMusic3Transformer1DModelz/[Load] published LM/depth/condition/DiT/vocoderT©Úflushz
/tokenizerz/language_model)Útorch_dtypeFz/rvq_depth_decoderz/condition_encoderz/transformerz/vocoder)Útransformersr;   r<   Ú4diffusers.models.autoencoders.minimax_music3_vocoderr=   ÚFdiffusers.models.condition_embedders.condition_embedder_minimax_music3r>   Ú>diffusers.models.transformers.minimax_music3_rvq_depth_decoderr?   Ú8diffusers.models.transformers.transformer_minimax_music3r@   ÚprintÚfrom_pretrainedr   Ú	tokenizerr   Útor   ÚevalÚrequires_grad_ÚlmÚdepthÚtorchÚfloat32ÚcondÚditÚvocoder)r!   r;   r<   r=   r>   r?   r@   s          r"   Ú__init__ÚPublishedStack.__init__@   sƒ  € ßAÝ]õ	
õ	
õ	
ô 	Ð?ÀtÒLØ'×7Ñ7¼¸|Ñ8KÓLˆŒØ"×2Ñ2ÜÐ$Ñ$´%ð 3ð 9ß9;¹¼F»ÇDÁDÃFÏ>É>ÐZ_ÓK`ð 	Œà1×AÑAÜÐ'Ñ'´Uð Bð <ß<>¹B¼v»JÇtÁtÃvÏnÉnÐ]bÓNcð 	Œ
à1×AÑAÜÐ'Ñ'´U·]±]ð Bð DßDFÁBÄvÃJÏtÉtËv×VdÑVdÐejÓVkð 	Œ	à2×BÑBÜ�>Ñ!¬u¯}©}ð Cð >ß>@¹bÄ»jÏÉË×P^ÑP^Ð_dÓPeð 	Œà+×;Ñ;Ü�:Ñ¬5¯=©=ð <ð :ß:<¹"¼V»*ÇTÁTÃVÏNÉNÐ[`ÓLað 	�r%   )rS   rP   rT   rO   rK   rU   N)r'   r(   r)   r*   rV   r/   r&   r%   r"   r8   r8   ?   s   † õbr%   r8   c                   óB   • \ rS rSrS\S\4S jrSS jrS rS r	S r
S	rg
)ÚRawConditionGraphé[   ÚstackÚrequestc                 ó,  • UR                   U l         UR                  U l        UR                  U l        [        UR                  US   US   5      nU R                   R                  5       " U5      R                  5       U l        U R                   R                  5       R                  [        [        [        -    R                  5       U l        U R                  R                  R                  R                  S[        S5      R                  5       U l        g )NÚcaptionÚlyricsé   éÿÿÿÿ)rO   rP   rS   r
   rK   Úget_input_embeddingsÚdetachÚpromptÚweightr	   r   Ú	sem_tableÚaudio_embeddingsÚviewr   Úac_table)r!   r[   r\   Úidss       r"   rV   ÚRawConditionGraph.__init__\   sÂ   € Ø—(‘(ˆŒØ—[‘[ˆŒ
Ø—J‘JˆŒ	Ü˜Ÿ™¨'°)Ñ*<¸gÀhÑ>OÓPˆØ—g‘g×2Ñ2Ô4°SÓ9×@Ñ@ÓBˆŒØŸ™×5Ñ5Ó7×>Ñ>Ü”g¤‘oð'ß'-¡v£xð 	ŒàŸ
™
×3Ñ3×:Ñ:×?Ñ?ÀÄ4ÈÓL×SÑSÓUˆ�r%   c                 óÊ  • USUS-   2S4   nUSUS-   2SS 24   R                   R                  5       nU R                  U   R                  5       R	                  5       n[
        R                  " [        S5       Vs/ s H  o€R                  U   Xh      PM     sn5      R                  5       R	                  5       n	UR                  U5        U	R                  U5        Xy4$ s  snf )Nr   r   r`   )
ÚTÚ
contiguousrf   r.   rc   rQ   r[   Úrangeri   rN   )
r!   ÚcodesÚprefixÚgrad_semÚgrad_acÚ	sem_codesÚac_codesÚsemÚkÚacs
             r"   Úcode_embeddingsÚ!RawConditionGraph.code_embeddingsf   sË   € Ø˜!˜f q™j˜.¨!Ð+Ñ,ˆ	Ø˜˜V a™Z˜¨©Ð+Ñ,×.Ñ.×9Ñ9Ó;ˆØ�n‰n˜YÑ'×-Ñ-Ó/×6Ñ6Ó8ˆÜ�[Š[ÄÀqÄÓJÂ¸AŸ-™-¨Ñ*¨8©;Ô7ÁÑJÓK×QÑQÓS×ZÑZÓ\ˆØ×Ñ˜8Ô$Ø
×Ñ˜'Ô"Øˆwˆùò Ks   Á;C c           
      óü  • U R                   US   R                  S5         R                  [        5      n[        R
                  " [        S5       Vs/ s H+  o€R                  U   USUS-   4   R                  S5         PM-     sn5      R                  [        5      n	[        R                  " XrR                  [        5      /5      n
[        R                  " X“R                  [        5      /SS9nX«R                  S5      -   S-  n[        R                  " U R                  US U R                  S5      /SS9nU R                  R                  S   nU R                  R                  US9R                  SXîU-   24   nXôXE-    nX$XE-    R                  [        5      nUS S 2XDU-   24   R                  [        5      n[        R                  " US S 2S 4   US S 2S 4   US S R!                  SSS	5      /SS9nU R#                  U R"                  R%                  U5      5      n[        R                  " US S 2S 4   US S 2SS 24   /SS9nU R'                  UR)                  SUS
5      R+                  5       5      $ s  snf )N©r   r   r   r`   r   ©ÚdimçÍ;fž @©Úinputs_embedsé   é   ra   )rf   rh   rL   r   rQ   r[   ro   ri   ÚcatÚsumrd   Ú	unsqueezeÚshaperO   ÚmodelÚlast_hidden_stateÚpermuterP   Ú
projectionrS   Úreshaper.   )r!   rp   rv   rx   ÚstartÚframesrq   Úwarm_semrw   Úwarm_acÚall_semÚall_acÚfeedbackÚembedsÚpÚhÚsem_winÚac_winÚseqÚdepth_hÚframe_hs                        r"   Úcondition_from_embeddingsÚ+RawConditionGraph.condition_from_embeddingso   s-  € Ø—>‘> %¨¡+×"2Ñ"2°1Ó"5Ñ6×9Ñ9¼%Ó@ˆÜ—+’+Ü?DÀQ¼xó
Ú?G¸!�M‰M˜!Ñ˜U 1 a¨!¡e 8™_×1Ñ1°!Ó4Ô5¹xñ
ó ç‰2Œe‹9ð 	ô —)’)˜X§v¡v¬e£}Ð5Ó6ˆÜ—’˜G§U¡U¬5£\Ð2¸Ñ:ˆØŸj™j¨›mÑ+°
Ñ;ˆÜ—’˜DŸK™K¨°'°6Ð):×)DÑ)DÀQÓ)GÐHÈaÑPˆØ�K‰K×Ñ˜aÑ ˆØ�G‰G�M‰M¨ˆMÐ/×AÑAÀ!ÀQÈVÉÀ^ÐBSÑTˆØ�e‘nÐ%ˆØ˜e™nÐ-×0Ñ0´Ó7ˆØ’A�u v™~Ð-Ð-Ñ.×1Ñ1´%Ó8ˆÜ�iŠiØŠa�ˆg‰J˜¢ 4 Ñ(¨&°°!¨*×*<Ñ*<¸QÀÀ1Ó*Eð
àñˆð —*‘*˜TŸZ™Z×2Ñ2°3Ó7Ó8ˆÜ—)’)˜Qšq $˜w™Z¨²°A±B°©Ð8¸aÑ@ˆØ�y‰y˜Ÿ™¨¨F°BÓ7×=Ñ=Ó?Ó@Ð@ùò#
s   Á2I9c                 óV   • X#-   nU R                  X5      u  pVU R                  XXbX45      $ ©N)ry   rœ   )r!   rp   r�   rŽ   rq   rv   rx   s          r"   Ú	conditionÚRawConditionGraph.condition„   s0   € Ø‘ˆØ×&Ñ& uÓ5‰ˆØ×-Ñ-¨e¸"ÀVÓTÐTr%   c           
      ó2  • X#-   nU R                  X5      u  pgU R                  US   R                  S5         R                  [        5      n[
        R                  " [        S5       V	s/ s H+  o�R                  U	   USU	S-   4   R                  S5         PM-     sn	5      R                  [        5      n
[
        R                  " X†R                  [        5      /5      n[
        R                  " X§R                  [        5      /SS9nX¼R                  S5      -   S-  nU R                  R                  S   nU R                  R                  [
        R                  " U R                  US U R                  S5      /SS9S9R                   SXîU-   24   nXòX#-    nU R                  R"                  R$                  [&        [&        [(        -    nUR+                  5       UR+                  5       R,                  -  n[
        R.                  " UUSS9u  nnUU4$ s  sn	f )	Nr|   r   r`   r   r}   r   r€   ra   )ry   rf   rh   rL   r   rQ   r[   ro   ri   r„   r…   rd   r‡   rO   rˆ   r†   r‰   Úlm_headre   r	   r   r.   rm   Útopk)r!   rp   r�   rŽ   Útop_krq   rv   rx   r�   rw   r�   r‘   r’   r“   r•   r–   ÚheadÚlogitsÚ_rj   s                       r"   Úsemantic_priorÚ RawConditionGraph.semantic_prior‰   s¾  € Ø‘ˆØ×&Ñ& uÓ5‰ˆØ—>‘> %¨¡+×"2Ñ"2°1Ó"5Ñ6×9Ñ9¼%Ó@ˆÜ—+’+Ü?DÀQ¼xó
Ú?G¸!�M‰M˜!Ñ˜U 1 a¨!¡e 8™_×1Ñ1°!Ó4Ô5¹xñ
ó ç‰2Œe‹9ð 	ô —)’)˜X§v¡v¬e£}Ð5Ó6ˆÜ—’˜G§U¡U¬5£\Ð2¸Ñ:ˆØŸj™j¨›mÑ+°
Ñ;ˆØ�K‰K×Ñ˜aÑ ˆØ�G‰G�M‰MÜŸ)š) T§[¡[°(¸7¸FÐ2C×2MÑ2MÈaÓ2PÐ$QÐWXÑYð ð 
ç
Ñ
˜A˜q v¡:˜~Ð-ñ/ˆð �e‘nÐ%ˆØ�w‰w�‰×%Ñ%¤g´¼%±Ð@ˆØ—‘“˜TŸZ™Z›\Ÿ^™^Ñ+ˆÜ—’˜F E¨rÑ2‰ˆˆ3Ø�sˆ{Ðùò
s   Á)2H)ri   rS   rP   rO   rd   rf   N)FF)r'   r(   r)   r*   r8   ÚdictrV   ry   rœ   r    r©   r/   r&   r%   r"   rY   rY   [   s.   † ðV˜nð V°tô VôòAò*Uõ
r%   rY   Úpathr   c           
      ó~  • [        U S5       n[        [        R                  " U[        R                  SS9S   5      n[        S [        R                  " U[        R                  US9 5       5      n[        R                  " U[        R                  S9nS S S 5        WR                  W5      $ ! , (       d  f       N= f)NÚrbr   )ÚdtypeÚcountr   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7frŸ   )r+   ©Ú.0Úvs     r"   Ú	<genexpr>Úload_dump.<locals>.<genexpr>¡   s   é € ÐQÒ&P ”c˜!—f�fÒ&Pùs   ‚©r¯   )Úopenr+   ÚnpÚfromfileÚint32ÚtuplerR   rŒ   )r¬   ÚfÚndimr‡   Údatas        r"   Ú	load_dumprÀ   ž   s‚   € Ü	ˆd�DÔ	˜QÜ”2—;’;˜q¬¯©¸Ñ:¸1Ñ=Ó>ˆÜÑQ¤b§k¢k°!¼2¿8¹8È4Ò&PÓQÓQˆÜ�{Š{˜1¤B§J¡JÑ/ˆ÷ 
ð �<‰<˜ÓÐ÷	 
Õ	ús   �BB.Â.
B<Ún_framesc                 ó^   • U [         ::  a  S/$ [        [        SU [        -
  [        5      5      $ ©Nr   )ÚCHUNK_FRAMESÚlistro   Ú	CHUNK_HOP)rÁ   s    r"   Úchunk_startsrÇ   ¦   s*   € Ø”<ÓØˆsˆ
Ü”�a˜¤IÑ-¬yÓ9Ó:Ð:r%   r\   c                 óP   • [        U R                  S5      =(       d    [        5      $ )NÚsteps)r+   ÚgetÚDEFAULT_STEPS)r\   s    r"   Úrequest_stepsrÌ   ¬   s   € Üˆw�{‰{˜7Ó#×4¤}Ó5Ð5r%   c                 óL   • U R                  S5      nUc  [        $ [        U5      $ )NÚdit_cfg)rÊ   ÚDEFAULT_CFGr.   )r\   Úvalues     r"   Úrequest_cfgrÑ   °   s#   € Ø�K‰K˜	Ó"€EØ™-Œ;Ð9¬U°5«\Ð9r%   rÉ   c           	      óò  • / n[        U 5       HÔ  n[        R                  " S5      [        R                  " [        R                  " S5      [        R                  " U 5      -  [        R                  " S5      -
  [        R                  " U5      -  [        R                  " U S-
  5      -  5      -   nUR                  [	        [        R                  " S5      U-
  5      5        MÖ     UR                  S5        U$ )Nç      ð?r   )ro   r¹   rR   Úappendr.   )rÉ   ÚoutÚiÚlins       r"   Úsigma_schedulerØ   µ   s¯   € Ø
€CÜ�5Ž\ˆÜ�jŠj˜‹o¤§
¢
Ü�ZŠZ˜‹_œrŸzšz¨%Ó0Ñ0´2·:²:¸c³?ÑBÜ�jŠj˜‹mñÜ Ÿjšj¨°©Ó3ñ4ó!5ñ 5ˆð 	�
‰
”5œŸš C›¨3Ñ.Ó/Ö0ñ	 ð
 ‡J�Jˆs„OØ€Jr%   ÚaÚbc                 óR   • U [         -  U[         -  -  nUS-	  [         -  U[         -  4$ )Né    )ÚU32_MASK)rÙ   rÚ   Úprods      r"   Ú_mulhilorß   À   s,   € Ø”‰L˜Q¤™\Ñ*€DØ�B‰Jœ(Ñ" D¬8¡OÐ3Ð3r%   c                 óž   • [        [        U S   5      u  p4[        [        U S   5      u  pVXPS   -  U-  [        -  UX0S   -  U-  [        -  U4$ )Nr   rƒ   r   é   )rß   Ú	PHILOX_M0Ú	PHILOX_M1rÝ   )ÚctrÚk0Úk1Úhi0Úlo0Úhi1Úlo1s          r"   Ú_philox_roundrë   Å   sZ   € Üœ	 3 q¡6Ó*�H€CÜœ	 3 q¡6Ó*�H€CØ�q‘6‰\˜BÑ¤(Ñ*¨CØ�q‘6‰\˜BÑ¤(Ñ*¨Cð1ð 1r%   ÚseedÚsubsequencec                 óè   • SSU[         -  US-	  [         -  4nU [         -  U S-	  [         -  pC[        S5       H7  n[        X#U5      nUS:w  d  M  U[        -   [         -  nU[        -   [         -  nM9     U$ )Nr   rÜ   é
   é	   )rÝ   ro   rë   Ú	PHILOX_W0Ú	PHILOX_W1)rì   rí   rä   rå   ræ   Úrs         r"   Ú_philox4rô   Ì   sw   € Øˆa�œxÑ'¨+¸Ñ*;¼xÑ)GÐ
H€CØ”H‰_˜t r™z¬XÑ5ˆÜ�2ŽYˆÜ˜C RÓ(ˆØ��6Ø”y‘.¤HÑ,ˆBØ”y‘.¤HÑ,ŠBñ	 ð
 €Jr%   Úm)ÚsqrtfÚlogfÚsinfc                 ó.   • [         R                  " U 5      $ rŸ   )r¹   rR   ©Úxs    r"   Ú_f32rü   Þ   s   € Ü�:Š:�a‹=Ðr%   c                 ó”  • [        X5      n[        [        US   5      [        -  [        [        [        S5      -  5      -   5      n[        [        US   5      [        -  [        [        [        S5      -  5      -   5      n[        [        R                  [        R                  " [        U5      5      5      5      n[        [        R                  [        R                  " [        [        S5      U-  5      5      5      5      n[        [        R                  [        R                  " [        U5      5      5      5      n[        Xg-  5      $ )Nr   g      à?r   ç       À)rô   rü   ÚINV_U32ÚINV_2PIÚ_libmr÷   ÚctypesÚc_floatr.   rö   rø   )rì   rí   ró   Úur´   Úlog_uÚscaleÚsines           r"   Ú_normal_firstr  â   s×   € Ü�Ó#€AÜŒT�!�A‘$‹Zœ'Ñ!¤D¬´4¸³9Ñ)<Ó$=Ñ=Ó>€AÜŒT�!�A‘$‹Zœ'Ñ!¤D¬´4¸³9Ñ)<Ó$=Ñ=Ó>€AÜ”—‘œFŸNšN¬5°«8Ó4Ó5Ó6€EÜ”—‘œVŸ^š^¬E´$°t³*¸uÑ2DÓ,EÓFÓGÓH€EÜ”—
‘
œ6Ÿ>š>¬%°«(Ó3Ó4Ó5€DÜ�‘ÓÐr%   Úoffsetr°   c                 ó²   • U S:  a  [        S5      e[        R                  " U[        R                  S9n[	        U5       H  n[        XU-   5      X4'   M     U$ )Nr   z:request seed must be resolved for deterministic refinementr·   )Ú
ValueErrorr¹   ÚemptyrR   ro   r  )rì   r	  r°   rÕ   rÖ   s        r"   Úphilox_noiser  ì   sL   € ØˆaƒxÜÐUÓVÐVÜ
�(Š(�5¤§
¡
Ñ
+€CÜ�5Ž\ˆÜ˜t¨a¡ZÓ0ˆ‹ñ à€Jr%   ÚtÚcfgc                 ó  • [         R                  " X/SS9n[         R                  " U[         R                  " U5      /SS9n[         R                  " X"/[        [         R
                  S9nU " XWUSS9S   nUSS  US S USS  -
  U-  -   $ )Nr   r}   )Údevicer¯   F)Úreturn_dictr   )rQ   r„   Ú
zeros_likeÚtensorr   rR   )	rT   rû   r  rS   r  Úx2Úc2ÚtvÚys	            r"   Úvelocityr  õ   s…   € Ü	�Š�A�6˜qÑ	!€BÜ	�Š�Dœ%×*Ò*¨4Ó0Ð1°qÑ	9€BÜ	�Š�q�f¤V´5·=±=Ñ	A€BÙˆB�B EÑ*¨1Ñ-€AØˆQˆRˆ5�A�b�q�E˜A˜a˜b˜E‘M SÑ(Ñ(Ð(r%   c           
      ó¨  • UR                  5       nUS S 2S S 2S U24   R                  5       n[        U5      n	/ n
[        U5       Ht  nX›   nUR                  5       nU(       a  SSU-  -
  U-  XÃ-  -   US S 2S S 2S U24'   U
R                  UR                  5       5        XÙUS-      U-
  [	        XXÂU5      -  -   nMv     U(       a  X7S S 2S S 2S U24'   X§4$ )NrÓ   gé!çýÿï?r   )ÚclonerØ   ro   rÔ   r  )rT   ÚnoiserS   ÚprevÚoverlaprÉ   r  rû   rd   ÚsigmasÚstatesrÖ   r  r  s                 r"   Úforward_statesr!  ý   sÚ   € à�‰‹€AØ’1’a˜˜'˜�>Ñ"×(Ñ(Ó*€FÜ˜EÓ"€FØ€FÜ�5Ž\ˆØ‰IˆØ�G‰G‹IˆÞØ!$¨
°aÑ'7Ñ!7¸6Ñ AÀAÁHÑ LˆAŠa’�H�W�HˆnÑØ�‰�a—g‘g“iÔ Ø˜˜A™‘ Ñ"¤h¨s°qÀÓ&DÑDÑDŠñ ö Ø Š!ŠQ���ˆ.ÑØˆ9Ðr%   c           
      óì  • UR                  5       R                  U5      nU " U5      S S 2S4   nU(       a  UR                  S   U-
  OUR                  S   n	US S 2XI24   n[        UR                  S   UR                  S   5      n
US S 2S U
24   US S 2S U
24   p([        R
                  " U[        [        [        USSS9R                  5       n[        R
                  " U[        [        [        USSS9R                  5       nUR                  S5      UR                  S5      píXÞ-  R                  S5      [        R                  R                  USS9[        R                  R                  USS9-  S-   -  nS	U-
  R                  5       nU(       aJ  [        UR                  5       5      [        R                  R!                  UU5      S   R                  5       4$ [        UR                  5       5      $ )
Nr   ra   FT)Ún_fftÚ
hop_lengthÚ
win_lengthÚwindowÚcenterÚreturn_complexr   r}   g#B’¡œÇ;rÓ   )rc   rN   r‡   ÚminrQ   ÚstftÚSTFT_WINDOWÚSTFT_HOPÚabsÚflattenr…   ÚlinalgÚvector_normÚmeanr.   ÚautogradÚgrad)rU   ÚlatentÚtargetr&  ÚleftÚrightr3  ÚzÚwavÚhiÚnrÙ   rÚ   ÚafÚbfÚcosineÚlosss                    r"   Úlocal_audio_lossr@    s¥  € Ø�‰‹×&Ñ& tÓ,€AÙ
�!‹*’Q˜�TÑ
€CÞ"'ˆ�‰�2‰˜Ò	¨S¯Y©Y°r©]€BØ
Ša��ˆj‰/€CÜˆC�I‰I�b‰M˜6Ÿ<™<¨Ñ+Ó,€AØ’a˜˜!˜�e‘*˜f¢Q¨¨¨ U™mˆÜ�
Š
�3œk´hÜ)°&ÀØ"&ñ	(ç(+©«ð ô 	�
Š
�6¤¼Ü)°&ÀØ"&ñ	(ç(+©«ð ð �Y‰Y�q‹\˜1Ÿ9™9 Q›<ˆØ‰g�]‰]˜1ÓÜ�‰× Ñ  ¨Ð Ð+¬e¯l©l×.FÑ.FÀrÈqÐ.FÐ.QÑQÐTYÑYñ[€Fà�&‰L×ÑÓ €DÞÜ�T—[‘[“]Ó#¤U§^¡^×%8Ñ%8¸¸qÓ%AÀ!Ñ%D×%KÑ%KÓ%MÐMÐMÜ�—‘“ÓÐr%   c                 óP  • [        U5      n[        R                  " U5      nUR                  5       R	                  5       n	U(       a  SU	S S 2S S 2S U24'   [        US-
  SS5       H½  n
X   R                  5       R                  S5      nUR                  5       R                  S5      nXzS-      Xz   -
  n[        XXz   XÆ5      n[        R                  R                  XëU4X�-  S9u  nnXŸR                  5       -   n	U(       a  SU	S S 2S S 2S U24'   UUR                  5       -  nM¿     U$ )Nr   r   ra   T©Úgrad_outputs)rØ   rQ   r  r.   r  ro   rc   rN   r  r2  r3  )rT   r   rS   Úlamr  rÉ   r  r  ÚgcÚlrÖ   r  ÚcÚdtr½   ÚgyÚgcis                    r"   Úadjoint_conditionrK  %  s  € Ü˜EÓ"€FÜ	×	Ò	˜$Ó	€BØ�	‰	‹×ÑÓ€AÞØˆŠ!ŠQ���ˆ.ÑÜ�5˜1‘9˜b "Ö%ˆØ‰I×ÑÓ×-Ñ-¨dÓ3ˆØ�K‰K‹M×(Ñ(¨Ó.ˆØ˜‘E‰]˜V™YÑ&ˆÜ�S˜V™Y¨Ó/ˆÜ—.‘.×%Ñ% a¨Q¨¸a¹fÐ%ÐE‰ˆˆCØ—‘“
‰NˆÞØ !ˆAŠa’�H�W�HˆnÑØ
ˆc�i‰i‹kÑŠñ &ð €Ir%   c                 óÊ  • / n[        S5       GH<  nX   R                  5       nX   R                  5       nX$   nXeR                  -  nUR                  SUS S 2S 4   5      R	                  S5      n	X‰S S 2S 4   -
  n
XU-  R                  S5      nXW   nUS S S 24   XÌ-  R                  S5      S S 2S 4   -   SXÅR                  -  -  -
  n[        R                  " U
S:  USU
-  R                  S5      -  [        R                  " U
[        S5      5      5      nUR                  SUS S 2S 4   [        S5      5        UR                  U5        GM?     [        R                  " U5      $ )	Nr`   r   ra   g       @r   rþ   ç ÂëþKH´9Úinf)ro   r.   rm   ÚgatherÚsqueezer…   rQ   ÚwhereÚ	clamp_minÚ	full_likeÚscatter_rÔ   r[   )r3  ÚtableÚcurrentrÕ   rw   ÚeÚgÚcurÚdotsÚbaseÚpredÚnormÚceÚd2Úalphas                  r"   Úacoustic_alphara  8  s9  € Ø
€CÜ�1�XˆØ‰H�N‰NÓˆØ‰G�M‰M‹OˆØ‰jˆØ—3‘3‰wˆØ�{‰{˜1˜c¢! T '™lÓ+×3Ñ3°AÓ6ˆØš1˜d˜7‘mÑ#ˆØ‘�{‰{˜2‹ˆØ‰VˆØ�$š�'‰]˜b™gŸ]™]¨2Ó.ªq°$¨wÑ7Ñ7¸#ÀÇcÁcÁÑ:JÑJˆÜ—’Ø�1‰H�b˜D 4™K×2Ñ2°5Ó9Ñ9Ü�OŠO˜D¤%¨£,Ó/ó1ˆð 	�‰�q˜#ša ˜g™,¬¨e«Ô5Ø�
‰
�5×ñ ô �;Š;�sÓÐr%   c           
      óð  • X   R                  5       nX   R                  5       nXTS S 2S 4   -
  nX`S S 2S 4   R                  5       -  R                  S5      nXf-  R                  S5      n[        R                  " US:  USU-  R	                  S5      -  [        R
                  " U[        S5      5      5      n	[        R                  " X2S S 2S 4   :H  [        R
                  " U	[        S5      5      U	5      $ )Nra   r   rþ   rM  rN  )r.   r…   rQ   rQ  rR  rS  )
r3  rU  rV  Úcandidate_idsÚ	current_eÚcandidate_eÚdeltar\  r_  r`  s
             r"   Úsemantic_alpharg  L  sÞ   € Ø‘×$Ñ$Ó&€IØÑ&×,Ñ,Ó.€KØ¢A t GÑ,Ñ,€EØš˜D˜‘M×'Ñ'Ó)Ñ)×.Ñ.¨rÓ2€DØ
‰-×	Ñ	˜RÓ	 €BÜ�KŠKØˆq‰�"˜˜t™×.Ñ.¨uÓ5Ñ5Ü�Š˜œe E›lÓ+ó-€Eô �;Š;�}²°4°Ñ(8Ñ8Ü—’ u¬e°E«lÓ;¸UóDð Dr%   c                   óN   • \ rS rSrS\S\S\4S jrSS\S\S\4S	 jjrSS
 jr	Sr
g)Ú	CppOracleiY  ÚrootÚref_pathÚwork_dirc                 óæ   • Xl         X l        X0l        [        R                  R                  US5      U l        [        R                  R                  US5      U l        [        R                  " USS9  g )Nzbuild/mm-synthÚmodelsT©Úexist_ok)	rj  rk  rl  Úosr¬   ÚjoinÚmm_synthrn  Úmakedirs)r!   rj  rk  rl  s       r"   rV   ÚCppOracle.__init__Z  sL   € ØŒ	Ø ŒØ ŒÜŸ™Ÿ™ TÐ+;Ó<ˆŒÜ—g‘g—l‘l 4¨Ó2ˆŒÜ
�Š�H tÓ,r%   r\   Útagr   c                 óÞ  • [         R                  R                  U R                  US-   5      n[         R                  R                  U R                  US-   5      nU(       a-  [         R                  R                  U R                  US-   5      OS n[	        US5       n[
        R                  " X5        S S S 5        U R                  SU R                  SUSU/nU(       a=  [        R                  " USS	9  [         R                  " USS
9  UR                  SU/5        [        R                  " X€R                  SS9  [!        U R"                  U5      n	[%        XEXi5      $ ! , (       d  f       N°= f)Nz.jsonz.wavz-dumpÚwz--modelsz	--requestz--outT)Úignore_errorsro  z--dump)ÚcwdÚcheck)rq  r¬   rr  rl  r¸   ÚjsonÚdumprs  rn  ÚshutilÚrmtreert  ÚextendÚ
subprocessÚrunrj  r   rk  r1   )
r!   r\   rv  r}  Úreq_pathr4   r5   r½   Úcmdr6   s
             r"   ÚrenderÚCppOracle.renderb  sü   € Ü—7‘7—<‘< §¡¨s°W©}Ó=ˆÜ—7‘7—<‘< §¡¨s°V©|Ó<ˆÞAE”2—7‘7—<‘< §¡¨s°W©}Ô=È4ˆÜ�(˜CÔ  AÜ�IŠI�gÔ!÷ !à�}‰}˜j¨$¯+©+°{ÀHÈgÐW_Ð`ˆÞÜ�MŠM˜(°$Ò7Ü�KŠK˜¨4Ò0Ø�J‰J˜ (Ð+Ô,Ü�Š�s§	¡	°Ò6Ü §¡¨xÓ8ˆÜ˜H°Ó@Ð@÷ !Õ ús   ÂEÅ
E,c           	      ó"  • U(       d  XU/ S4$ XBSp˜n[        SS[        U5      -  5       GH;  n
UR                  5       n/ n[        U5       HL  u  pÞU
SU-  -  (       d  M  UR                  X¾R
                  S-   UR                  4'   UR                  U5        MN     [        R                  " U5      nSR                  S UR                  5       R                  5       R                  5        5       5      US'   U R                  Xõ SU
 35      nSR                  S	 U 5       5      n[        S
UR                   S SU
 SU 3SS9  UR                   Xv-   :”  d  GM-  UR                   Xºp˜nGM>     U	(       d  XU/ S4$ [        [        U5      5       Vs/ s H  oÙSU-  -  (       d  M  X=   PM     nn[        R                  " U5      nSR                  S UR                  5       R                  5       R                  5        5       5      US'   UX‡US4$ s  snf )NFr   r   Ú,c              3   óJ   #   • U  H  n[        [        U5      5      v •  M     g 7frŸ   ©r-   r+   r²   s     r"   rµ   Ú*CppOracle.subset_search.<locals>.<genexpr>}  s   é € Ð)aÒ?`¸!¬#¬c°!«f¯+¨+Ò?`ùó   ‚!#Úaudio_codesz-maskz, c              3   ó@   #   • U  H  oR                  5       v •  M     g 7frŸ   )r#   )r³   rõ   s     r"   rµ   r‹    s   é € Ð9²&¨QŸw™wŸy˜y²&ùs   ‚z	[Oracle] ú.9fz mask z: TrA   c              3   óJ   #   • U  H  n[        [        U5      5      v •  M     g 7frŸ   rŠ  r²   s     r"   rµ   r‹  ‡  s   é € Ð%^Ò;]°a¤c¬#¨a«&§k kÒ;]ùrŒ  )ro   Úlenr  Ú	enumerater   r   r   rÔ   ÚcopyÚdeepcopyrr  ÚcpuÚnumpyr.  r…  rI   r6   )r!   r\   rp   ÚmovesÚ
base_scorerv  Úmin_gainÚ
best_scoreÚ
best_codesÚ	best_maskÚmaskÚ	candidateÚactiverÖ   ÚmoveÚreqÚresultÚlabelsÚacceptedrÕ   s                       r"   Úsubset_searchÚCppOracle.subset_searchq  sÒ  € ÞØ :¨r°5Ð8Ð8Ø,6¸q 	ˆ
Ü˜!˜Q¤# e£*™_×-ˆDØŸ™›ˆIØˆFÜ$ UÖ+‘�Ø˜1 ™6—?‘?Ø?C¿x¹x�IŸj™j¨1™n¨d¯m©mÐ;Ñ<Ø—M‘M $Ö'ñ ,ô —-’- Ó(ˆCØ!$§¡Ñ)a¸y¿}¹}»×?TÑ?TÓ?V×?^Ñ?^Ô?`Ó)aÓ!aˆC�ÑØ—[‘[ ¨¨U°4°&Ð&9Ó:ˆFØ—Y‘YÑ9±&Ó9Ó9ˆFÜ�I˜fŸl™l¨3Ð/¨v°d°V¸2¸f¸XÐFÈdÒSØ�|‰|˜jÑ3Ö3Ø4:·L±LÀ)¨	�
ª	ñ .ö Ø :¨r°5Ð8Ð8Ü&+¬C°«JÔ&7ÓPÒ&7 ÈÈQÉÕ;O“H�E”HÑ&7ˆÐPÜ�mŠm˜GÓ$ˆØ ŸX™XÑ%^¸:¿>¹>Ó;K×;QÑ;QÓ;S×;[Ñ;[Ô;]Ó%^Ó^ˆˆMÑØ�J¨H°dÐ:Ð:ùò Qs   ÆHÆ!H)rs  rn  rk  rj  rl  N©F)g        )r'   r(   r)   r*   r-   rV   r«   r1   r…  r¥  r/   r&   r%   r"   ri  ri  Y  s?   † ð-˜Sð -¨Cð -¸3ô -ñA˜dð A¨ð A¸\õ A÷;r%   ri  c                   ól   • \ rS rSrS
S jrS rS r\R                  " 5       S 5       r	SS jr
SS jrSrg	)ÚLocalSearcheri‹  c                 ó  • Xl         X l        X0l        X@l        XPl        [        X5      U l        [        U5      U l        [        R                  " [        [        S9U l        [        U5      U l        [!        U5      U l        g )N©r  )r[   r\   rk  r5   Ú
parity_minrY   Úrawr   Ú	referencerQ   Úhann_windowr+  r   r&  rÌ   rÉ   rÑ   r  )r!   r[   r\   rk  r5   r¬  s         r"   rV   ÚLocalSearcher.__init__Œ  s_   € ØŒ
ØŒØ ŒØ ŒØ$ŒÜ$ UÓ4ˆŒÜ& xÓ0ˆŒÜ×'Ò'¬¼FÑCˆŒÜ" 7Ó+ˆŒ
Ü˜wÓ'ˆ�r%   c                 óÔ  • UR                   S   S-
  n[        U5      nXB   n[        [        X5-
  5      n[	        [        U5      5       Vs/ s H:  n[        [        R                  R                  U R                  SU S35      5      PM<     nnX‚   R                   S   n	US:X  a  SO[        n
US-   [        U5      :X  a  SO[        nSnSn[	        U5       H<  nX‡   R                   S   nXÎUS:X  a  SO[        -
  [        -
  [        -  -  nXÞS-  -  nM>     Xš-
  U-
  [        -  n[        R                  " U R                   XÌU-    R#                  5       5      R%                  [&        5      S    n[        R                  " [        [        R                  R                  U R                  SU S35      5      5      R%                  [&        5      S    n[        R                  " X‚   5      R(                  R%                  [&        5      S    nU(       a«  X‚S-
     n[+        UR                   S   S[,        -  -
  S5      n[+        UR                   S   [,        -
  U5      n[        R                  " UUU 5      R(                  R%                  [&        5      S    n[        UR                   S   U	5      nUS S 2S S 2S U24   nOSn[        R.                  " S	[&        S
9n[1        U R2                  R5                  SS5      5      n[7        UXÙS-  5      R9                  U	S5      n[        R                  " U5      R(                  R%                  [&        5      S    nXVUUUUUUU
[        -  U[        -  4
$ s  snf )Nr   r   r&  z_latent.biné€   z	_cond.binrƒ   ra   )r   r²  r   r«  rì   )r‡   rÇ   r)  rÄ   ro   r‘  rÀ   rq  r¬   rr  r5   Ú	CROP_LEFTÚ
CROP_RIGHTÚ
LATENT_HOPrQ   Ú
from_numpyr®  r“  rL   r   rm   ÚmaxÚOVERLAP_LATr  r+   r\   rÊ   r  rŒ   )r!   rp   rw   rÁ   Ústartsr�   rŽ   rÖ   ÚlatentsÚt_latr6  r7  Úsample_startÚnoise_offsetÚliÚ
sample_lenr5  ÚanchorÚ
cpp_latentÚ
prev_arrayÚos_latÚoe_latr  r  rì   r  s                             r"   ÚcontextÚLocalSearcher.context˜  s	  € Ø—;‘;˜q‘> AÑ%ˆÜ˜hÓ'ˆØ‘	ˆÜ”\ 8Ñ#3Ó4ˆä!¤# f£+Ô.ó0Ú.�qô œRŸW™WŸ\™\¨$¯-©-¸6À!ÀÀKÐ9PÓQÖRÙ.ð 	ð 0à‘
× Ñ  Ñ#ˆØ˜“F‰q¤	ˆØ˜‘Uœc &›kÓ)‘¬zˆØˆØˆÜ�q–ˆAØ‘×!Ñ! !Ñ$ˆBØ¨¨Q«¡1´IÑ>ÄÑKÌzÑYÑYˆLØ ™HÑ$ŠLñ ð ‘l UÑ*¬jÑ8ˆ
Ü×!Ò!Ø�N‰N˜<¸Ñ*CÐD×IÑIÓKóMßMOÉRÔPVËZÐX\ñ^ˆä×!Ò!¤)Ü�G‰G�L‰L˜Ÿ™¨&°°°9Ð(=Ó>ó#@ó AßACÁÄFÃÈDñRˆä×%Ò% g¡jÓ1×3Ñ3×6Ñ6´vÓ>¸tÑDˆ
ÞØ  Q¡™ˆJÜ˜×)Ñ)¨!Ñ,¨q´;©Ñ>ÀÓBˆFÜ˜×)Ñ)¨!Ñ,¬{Ñ:¸FÓCˆFÜ×#Ò# J¨v°fÐ$=Ó>×@Ñ@×CÑCÄFÓKÈDÑQˆDÜ˜$Ÿ*™* R™.¨%Ó0ˆGØšš1˜h˜w˜h˜Ñ'‰DàˆGÜ—;’;˜{´6Ñ:ˆDÜ�4—<‘<×#Ñ# F¨BÓ/Ó0ˆÜ˜T <¸±Ó=×EÑEÀeÈSÓQˆÜ× Ò  Ó'×)Ñ)×,Ñ,¬VÓ4°TÑ:ˆØ˜v z°4¸À%ÈØ”zÑ! 5¬:Ñ#5ð7ð 	7ùò=0s   Á
AM%c                 óÄ  • U R                  X5      u
  p4pVpxn	p«n[        U R                  R                  X•XxU R                  U R
                  5      u  pÞ[        [        R                  R                  R                  UR                  5       UR                  5       SS95      n[        SU SUS 3SS9  XðR                  :  a   [        SU S	US
 SU R                  S
 35      e[        U R                  R                   XêU R"                  X¼SS9u  nn[%        U R                  R                  XÕUX€R                  U R
                  5      n[        SU SSU-
  S
 3SS9  X4XWX‰X«UUU4$ )Nr   r}   z[Window z	] parity r�  TrA   zwindow z Torch/C++ parity ú.6fz < )r3  z] local STFT rÓ   )rÅ  r!  r[   rT   rÉ   r  r.   rQ   ÚnnÚ
functionalÚcosine_similarityr.  rI   r¬  ÚRuntimeErrorr@  rU   r&  rK  )r!   rp   rw   r�   rŽ   rÀ  rÁ  r  r  r  r5  r6  r7  r   r4  ÚparityÚ	base_lossrD  rE  s                      r"   Úbase_adjointÚLocalSearcher.base_adjoint¾  s]  € à $§¡¨UÓ 6ñ	ˆ˜¨D¸5Ø	�uÜ'Ø�J‰J�N‰N˜E¨4¸$¿*¹*ÀdÇhÁhóP‰ˆä”u—x‘x×*Ñ*×<Ñ<Ø�N‰NÓ˜j×0Ñ0Ó2¸ð =ð ;ó <ˆä�˜˜˜9 V¨C LÐ1¸Ò>Ø—O‘OÓ#ÜØ˜!˜Ð.¨v°c¨l¸#¸d¿o¹oÈcÐ=RÐSóUð Uä)Ø�J‰J×Ñ °·±¸TÈtñU‰ˆ	�3äØ�J‰J�N‰N˜F¨C°¿*¹*ÀdÇhÁhóPˆä�˜˜˜=¨¨y©¸Ð(=Ð>ÀdÒKØ˜v¨W¸VÈ5Ø˜2ðð 	r%   c                 óR  • / n[        U5       H•  u  pš[        U R                  R                  XJX#U R                  U R
                  5      u  p¼UR                  [        U R                  R                  XÅU R                  Xg5      5        [        SU	S-    S[        U5       3SS9  M—     U$ )Nz[Local] exact r   Ú/TrA   )r’  r!  r[   rT   rÉ   r  rÔ   r@  rU   r&  rI   r‘  )r!   Ú
conditionsr  r  r  r5  r6  r7  ÚlossesrÖ   rS   r¨   r4  s                r"   Úevaluate_conditionsÚ!LocalSearcher.evaluate_conditionsÑ  s”   € àˆÜ  Ö,‰GˆAÜ&Ø—
‘
—‘ ¨T¸D¿J¹JÈÏÉóR‰IˆAà�M‰MÔ*Ø—
‘
×"Ñ" F°D·K±KÀóNô Oä�N 1 q¡5 '¨¬3¨z«?Ð*;Ð<ÀDÔIñ -ð ˆr%   c                 óB  • U R                  X5      u  pgp‰p«pÍnnnXg-   nU R                  R                  XU5      R                  5       nU R                  R	                  UUSS9u  nnUU R                  R                  UUUXgU5      U-
  -   n[        R                  R                  UUUS9S   R                  5       nUSU-   SU-   U-   2SS 24   R                  R                  5       n[        US S 2XfU-   24   U R                  R                  U5      nUR                  S5      R                  n[        R                  " UR!                  5       5      S U n/ / nnU Hß  n[#        UU-  5      n[#        UU-  5      n[        R$                  " UUU4   USS9u  n n!['        U5       H“  n"[#        U!U"   5      n#UR)                  5       n$U#U$SU-   U-   SU-   4'   U R                  R                  U$Xg5      n%UR+                  UU%U-
  -   R                  5       5        UR+                  UUU#[-        U U"   5      45        M•     Má     U R/                  UXšX¼XÞ5      n&0 n'[1        U&U5       Hˆ  u  n(u  nnn#n)UU-   n*[#        USU*-   SU-   4   5      n+[3        S	U*S-    S
US-    SU+ SU# SU)S SSU(-
  S 3SS9  U*U4n,U(U:  d  MY  U,U';  d  U(U'U,   S   :  d  Mm  U([5        U*US-   U+U#SSU(-
  5      4U'U,'   MŠ     [7        U'R                  5       S S9S U  V-s/ s H  n-U-S   PM
     sn-$ s  sn-f )NT)rs   rB  r   r   ra   F©rw   Úlargestz[Acoustic] framez cbÚ r    ú alpha ú.4gú STFT rÓ   rÈ  rA   Úacousticc                 ó   • U S   $ rÃ   r&   rú   s    r"   Ú<lambda>Ú.LocalSearcher.acoustic_moves.<locals>.<lambda>  ó   € À!ÀAÂ$r%   ©Úkey)rÏ  r­  r    rc   ry   rœ   rQ   r2  r3  rm   rn   ra  ri   r)  ÚvaluesÚargsortr.  r+   r¤   ro   r  rÔ   r.   rÕ  ÚziprI   r   Úsorted).r!   rp   rw   Ún_coordsÚ	per_coordÚ	max_movesr�   rŽ   rÀ  r  r  r  r5  r6  r7  rÎ  rE  rq   Úbase_rawrv   rx   rS   rs   rV  r`  ÚcoordÚflatrÓ  ÚmetaÚindexÚcbÚrelrå  rj   Úqr   rž  Úraw_condrÔ  Úbestr?  Úboundaryr   r   rä  r´   s.                                                 r"   Úacoustic_movesÚLocalSearcher.acoustic_movesÜ  sa  € à×+Ñ+¨EÓ5ñ	ˆ˜ g°fÀEØ	�BØ‘ˆØ—8‘8×%Ñ% e°FÓ;×BÑBÓDˆØ—(‘(×*Ñ*¨5°&À$Ð*ÐG‰ˆˆRØØ�H‰H×.Ñ.¨u°c¸2¸uÈfÓUÐX`Ñ`ñbˆä—.‘.×%Ñ% d¨B¸RÐ%Ð@ÀÑC×JÑJÓLˆØ˜˜E™	 A¨¡I°Ñ$6Ð6¸¹Ð:Ñ;×=Ñ=×HÑHÓJˆÜØ’A�u v™~Ð-Ð-Ñ.°·±×0AÑ0AÀ7óLˆà—	‘	˜"“×$Ñ$ˆÜ�}Š}˜UŸ]™]›_Ó-¨i¨xÐ8ˆØ˜r�Dˆ
ÛˆEÜ�U˜f‘_Ó%ˆBÜ�e˜f‘nÓ%ˆCÜŸ*š* U¨2¨s¨7¡^°yÈ%ÑP‰KˆF�CÜ˜9Ö%�Ü˜#˜a™&“k�Ø!ŸK™K›M�	Ø58�	˜!˜e™) c™/¨1¨r©6Ð1Ñ2ØŸ8™8×-Ñ-¨i¸ÓG�Ø×!Ñ! 6¨X¸Ñ-@Ñ#A×"IÑ"IÓ"KÔLØ—‘˜S " c¬5°¸±Ó+;Ð<Ö=ó &ñ	 ð ×)Ñ)Ø˜ u°dóCˆàˆÜ.1°&¸$Ö.?Ñ*ˆDÑ*�3˜˜C Ø˜C‘KˆEÜ�e˜A ™I q¨2¡vÐ-Ñ.Ó/ˆCÜÐ$ U¨Q¡Y K¨s°2¸±6°(¸!¸C¸5ÀÀ3À%ð HØ# C˜.¨¨s°T©z¸#Ð.>ð@ØGKòMà˜"�+ˆCØ�iÕ S°£_¸¸tÀC¹yÈ¹|Õ8KØ!¤4¨¨r°A©v°s¸CÀÈSÐSWÉZÓ#XÐY��S“	ñ /@ô % T§[¡[£]¹ÑGÈ
ÈÑSÓTÒS˜��!”ÑSÑTÐTùÒTs   Ì
Lc                 ó~  • U R                  X5      u  pxpšp¼pÞnnnXx-   nU R                  R                  XU5      R                  5       nU R                  R	                  XXƒ5      u  nnUSU-   SU-   U-   2S4   nUR                  SUS S 2S 4   5      R                  S5      nSUUS S 2S 4   :„  R                  S5      -   n[        SU S[        UU:*  R                  5       5       SU S[        UR                  5       R                  5       5      S 3SS	9  U R                  R                  UUSS
9u  nnU	U R                  R                  UUUXxU5      U-
  -   n[        R                  R!                  UUUS9S   R                  5       n[#        UXwU-    U R                  R$                  UU5      nUR'                  S5      R(                  nUU:„  nUU) R                  5       S-  -   n / n![        R*                  " U 5      R-                  5       [        R*                  " U5      R-                  5       -    HI  n"U"U!;  a/  [        R.                  " UU"   5      (       a  U!R1                  U"5        [3        U!5      U:X  d  MI    O   / / n$n#U! Há  n"[        R4                  " UU"   ['        XS5      SS9u  n%n&[7        [3        U&5      5       H¡  n'[        UU"U&U'   4   5      n(UR9                  5       n)U(U)SU-   U"-   S4'   U R                  R                  U)Xx5      n*U#R1                  U	U*U-
  -   R                  5       5        U$R1                  U"U([        U%U'   5      [        UU"   5      45        M£     Mã     U R;                  U#X«XÍXï5      n+0 n,[=        U+U$5       H{  u  n-u  n"n(n.n/UU"-   n0[        USU0-   S4   5      n1[        SU0S-    SU1 SU( SU/ SU.S SSU--
  S 3SS	9  U-U:  d  MO  U0U,;  d  U-U,U0   S   :  d  Mc  U-[?        U0SU1U(SSU--
  5      4U,U0'   M}     [A        U,R)                  5       S S9S U  V2s/ s H  n2U2S   PM
     sn2$ s  sn2f )Nr   r   z[Semantic] toprÚ  rÒ  z, median rank z.0fTrA   )rr   rB  ra   g    eÍÍAFrØ  z[Semantic] framer    z rank rÛ  rÜ  rÝ  rÓ   rÈ  Úsemanticc                 ó   • U S   $ rÃ   r&   rú   s    r"   rà  Ú.LocalSearcher.semantic_moves.<locals>.<lambda>1  râ  r%   rã  )!rÏ  r­  r    rc   r©   rO  rP  r…   rI   r+   r.   Úmedianry   rœ   rQ   r2  r3  rg  rf   r)  rå  ræ  ÚtolistÚisfiniterÔ   r‘  r¤   ro   r  rÕ  rç  r   rè  )3r!   rp   rw   r¥   ré  rê  rë  r�   rŽ   rÀ  r  r  r  r5  r6  r7  rÎ  rE  rq   rì  r§   Útop_idsrV  ÚownÚrankrv   rx   rS   rr   r`  rí  ÚoutsideÚpriorityÚpickedrò  rÓ  rï  rå  Úqidsró  r   rž  rô  rÔ  rõ  r?  rö  Úold_rankr   r   r´   s3                                                      r"   Úsemantic_movesÚLocalSearcher.semantic_moves  s^  € à×+Ñ+¨EÓ5ñ	ˆ˜ g°fÀEØ	�BØ‘ˆØ—8‘8×%Ñ% e°FÓ;×BÑBÓDˆØŸ(™(×1Ñ1°%ÀÓN‰ˆ�Ø˜˜E™	 A¨¡I°Ñ$6Ð6¸Ð9Ñ:ˆØ�m‰m˜A˜w¢q¨$ wÑ/Ó0×8Ñ8¸Ó;ˆØ�F˜S¢ D ™\Ñ)×.Ñ.¨qÓ1Ñ1ˆÜ�˜u˜g Q¤s¨D°E©M×+>Ñ+>Ó+@Ó'AÐ&BÀ!ÀFÀ8ð LÜ" 4§:¡:£<×#6Ñ#6Ó#8Ó9¸#Ð>ð@ØGKò	Mà—(‘(×*Ñ*¨5°&À4Ð*ÐH‰ˆˆRØØ�H‰H×.Ñ.¨u°c¸2¸uÈfÓUÐX`Ñ`ñbˆä—>‘>×&Ñ& t¨S¸rÐ&ÐBÀ1ÑE×LÑLÓNˆÜØ�U V™^Ð,¨d¯h©h×.@Ñ.@À'È7óTˆà—	‘	˜"“×$Ñ$ˆØ˜‘,ˆØ˜W˜H×+Ñ+Ó-°Ñ3Ñ3ˆØˆÜ—=’= Ó*×1Ñ1Ó3´e·m²mÀEÓ6J×6QÑ6QÓ6SÔSˆCØ˜&Ó ¤U§^¢^°E¸#±J×%?Ñ%?Ø—‘˜cÔ"Ü�6‹{˜hÕ&Ùñ	 Tð
 ˜r�Dˆ
ÛˆCÜ Ÿ:š: e¨C¡j´C¸	Ó4IÐSXÑY‰LˆF�DÜœ3˜t›9Ö%�Ü˜' # t¨A¡w ,Ñ/Ó0�Ø!ŸK™K›M�	Ø03�	˜!˜e™) c™/¨1Ð,Ñ-ØŸ8™8×-Ñ-¨i¸ÓG�Ø×!Ñ! 6¨X¸Ñ-@Ñ#A×"IÑ"IÓ"KÔLØ—‘˜S #¤u¨V°A©YÓ'7¼¸TÀ#¹Y»ÐHÖIó &ñ ð ×)Ñ)Ø˜ u°dóCˆàˆÜ47¸ÀÖ4EÑ0ˆDÑ0�3˜˜X xØ˜C‘KˆEÜ�e˜A ™I q˜LÑ)Ó*ˆCÜÐ$ U¨Q¡Y K¨q°°°R¸°u¸FÀ8À*ð MØ# C˜.¨¨s°T©z¸#Ð.>ð@ØGKòMà�iÕ U°$Ó%6¸$ÀÀeÁÈQÁÕ:OØ#¤T¨%°°C¸¸jÈ#ÐPTÉ*Ó%UÐV��U“ñ 5Fô % T§[¡[£]¹ÑGÈ
ÈÑSÓTÒS˜��!”ÑSÑTÐTùÒTs   Ð(P:)
r  r5   r¬  r­  rk  r®  r\   r[   rÉ   r&  N)g+‡ÙÎ÷ï?)é   r
  r
  )é2   r
  r
  r
  )r'   r(   r)   r*   rV   rÅ  rÏ  rQ   Úno_gradrÕ  r÷  r  r/   r&   r%   r"   r©  r©  ‹  s9   † ô
(ò$7òLð& ‡]‚]ƒ_ñó ðô%U÷N.Ur%   r©  r§  )Qr“  r  Úctypes.utilr|  rq  r~  r�  Údataclassesr   r–  r¹   rQ   Úe2er   r   r   r   r   r	   r
   r   r   rÄ   rÆ   r¸  r³  r´  rµ  r+  r,  rË   rÏ   râ   rã   rñ   rò   rÝ   rR   rÿ   r   r   r1   r8   rY   r-   ÚndarrayrÀ   r+   rÅ   rÇ   r«   rÌ   r.   rÑ   rØ   r¼   rß   rë   rô   ÚCDLLÚutilÚfind_libraryr  Ú_nameÚgetattrÚ_fnr  ÚargtypesÚrestyperü   r  r  r  r  r!  r@  rK  ra  rg  ri  r©  r&   r%   r"   Ú<module>r     s˜  ðó Û Û Û Û 	Û Û Ý !ã Û ÷1÷ 1õ 1ð €Ø€	Ø€Ø€	Ø€
Ø€
Ø€Ø€Ø€Ø€à€	Ø€	Ø€	Ø€	Ø€Ø�JŠJÐ-Ó.€Ø�JŠJÐ-Ó.€ñ �$Ñ÷	Qð 	Qó ð	Qð ÷ð ó ð÷bñ b÷8@ñ @ðF�Cð ˜BŸJ™Jô ð;˜3ð ; 4¨¡9ô ;ð6˜4ð 6 Cô 6ð:˜ð : %ô :ð
˜#ð  $ u¡+ô ð4�ð 4˜ð 4  c¨3 h¡ô 4ò
1ð�3ð  Sô ð 	�Š�F—K‘K×,Ñ,¨SÓ1×9°TÓ:€Û&€EÙ
�%˜Ó
€CØ—N‘NÐ#€C„LØ—.‘.€C†Kñ 'ðˆr�z‰zô ð˜ð ¨#ð °"·*±*ô ð�sð  Cð °ð ¸¿
¹
ô ð)˜ð )¨%ô )ð ‡‚ƒñó ðô" ò,ò&ò(
D÷/;ñ /;÷dfUò fUr%   