§
    ÎÐjœ.  ã                   ó®   — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
Z
d dlmZ d dlZdgZi Zddej        ej        ee	f                  fd„ZdS )é    N)ÚPath)ÚtqdmÚdownload_ffmpegÚbin_directoryc                 ó4  ‡‡‡‡‡‡‡‡‡— ddgŠt           j        dk    r‰                     d¦  «         | €7t          t          ¦  «                             ¦   «         j        d         Š‰dz  Šnt          | ¦  «        Š‰                     dd¬	¦  «         ‰j        Šd
t          dt          fd„Šˆˆfd„}ˆˆfd„}dt          fd„Šˆfd„}ˆfd„} |¦   «           |¦   «           |¦   «           |¦   «          d
t          dt          j        t                   fˆˆfd„Šd
t          dt          fˆfd„Šd
t          dt          fˆˆfd„Šdt          fˆˆfd„}ˆˆfd„}t           j        dk    rˆfd„‰D ¦   «         }d}nˆfd„‰D ¦   «         } |¦   «         }|s|r |¦   «          dS dt          dt          fd„Šˆˆˆˆfd„}	ˆˆˆfd„}
	 t           j        dk    r |	¦   «          n
 |
¦   «          n*# t          $ r}t          d|› �¦  «         Y d}~dS d}~ww xY wt           j        dk    r-t          ˆfd „‰D ¦   «         ¦  «        st          d!¦  «         dS n,t          ˆfd"„‰D ¦   «         ¦  «        st          d!¦  «         dS  |¦   «           |¦   «           |¦   «          dS )#zREnsure ffmpeg/ffprobe binaries (and their shared libs) are downloaded and on PATH.ÚffmpegÚffprobeÚntÚffplayNé   Úffmpeg_binsT©ÚparentsÚexist_okÚnameÚreturnc                 óZ   — t           j        dk    r|                      d¦  «        s| › d�S | S )Nr
   z.exe)Úosr   Úendswith)r   s    ú;C:\Users\johnn\OneDrive\Documents\AI\shared\ffmpeg_setup.pyÚ_candidate_namez(download_ffmpeg.<locals>._candidate_name%   s.   € ÝŒ7�dŠ?ˆ? 4§=¢=°Ñ#8Ô#8ˆ?Ø�=�=�=Ð Øˆó    c                  óÂ  •— ‰ ‰d¦  «        z  } |                       ¦   «         sd S ‰dz  }|                     dd¬¦  «         || j        z  }|                     ¦   «         r:|j        }|j        }d}	 ||› d|› |› �z  }|                     ¦   «         s|}n|dz  }Œ)t          j        t          | ¦  «        t          |¦  «        ¦  «         t          d| › d|› d	�¦  «         d S )
Nr   Úffmpeg_quarantineTr   r   Ú_z"[FFmpeg] Quarantined root binary: z -> z—. Reason: ffmpeg.exe in the project root can be picked from CWD and break TorchCodec DLL loading on Windows. Quarantined file can be deleted if unused.)
Úis_fileÚmkdirr   ÚexistsÚstemÚsuffixÚshutilÚmoveÚstrÚprint)	Úroot_ffmpegÚquarantine_dirÚtarget_pathr   r    ÚidxÚ	candidater   Ú	repo_roots	          €€r   Ú_quarantine_root_ffmpegz0download_ffmpeg.<locals>._quarantine_root_ffmpeg*   s>  ø€ Ø / /°(Ñ";Ô";Ñ;ˆØ×"Ò"Ñ$Ô$ð 	ØˆFØ"Ð%8Ñ8ˆØ×Ò T°DÐÑ9Ô9Ð9Ø$ {Ô'7Ñ7ˆØ×ÒÑÔð 		ØÔ#ˆDØ Ô'ˆFØˆCðØ*°Ð-DÐ-D°sÐ-D¸FÐ-DÐ-DÑD�	Ø ×'Ò'Ñ)Ô)ð Ø"+�KØØ�q‘�ðõ 	Œ•C˜Ñ$Ô$¥c¨+Ñ&6Ô&6Ñ7Ô7Ð7Ýðd°ð dð dÀ+ð dð dð dñ	
ô 	
ð 	
ð 	
ð 	
r   c                  ó  •‡‡— t           j                             dd¦  «        } | r|                      t           j        ¦  «        ng }dt
          dt
          fd„Šg }t          ¦   «         Š‰‰	fD ]U} ‰t          |¦  «        ¦  «        }|‰vr7|                     t          |¦  «        ¦  «         ‰                     |¦  «         ŒVˆˆfd„|D ¦   «         }t           j         	                    ||z   ¦  «        t           j        d<   d S )NÚPATHÚ Úpr   c                 ó¢   — t           j                             | ¦  «        } t           j        dk    rt           j                             | ¦  «        n| S )Nr
   )r   ÚpathÚnormpathr   Únormcase)r/   s    r   Ú
_normalizezDdownload_ffmpeg.<locals>._ensure_bin_dir_on_path.<locals>._normalizeE   s<   € Ý”× Ò  Ñ#Ô#ˆAÝ*,¬'°Tª/¨/•2”7×#Ò# AÑ&Ô&Ð&¸qÐ@r   c                 ó.   •— g | ]} ‰|¦  «        ‰v¯|‘ŒS © r6   )Ú.0r/   r4   Úseens     €€r   ú
<listcomp>zDdownload_ffmpeg.<locals>._ensure_bin_dir_on_path.<locals>.<listcomp>Q   s+   ø€ ÐGÐGÐG˜!¨Z¨Z¸©]¬]À$Ð-FÐ-F�AÐ-FÐ-FÐ-Fr   )
r   ÚenvironÚgetÚsplitÚpathsepr#   ÚsetÚappendÚaddÚjoin)
Úcurrent_pathÚ
path_partsÚprioritizedÚdÚkeyÚfilteredr4   r8   Úbin_dirr*   s
         @@€€r   Ú_ensure_bin_dir_on_pathz0download_ffmpeg.<locals>._ensure_bin_dir_on_pathA   s  øøø€ Ý”z—~’~ f¨bÑ1Ô1ˆØ7CÐK�\×'Ò'­¬
Ñ3Ô3Ð3Èˆ
ð	A�#ð 	A¥#ð 	Að 	Að 	Að 	Að ˆÝ‰uŒuˆØ˜9Ð%ð 	ð 	ˆAØ�*�S ™VœVÑ$Ô$ˆCØ˜$ˆˆØ×"Ò"¥3 q¡6¤6Ñ*Ô*Ð*Ø—’˜‘”�øàGÐGÐGÐGÐG˜zÐGÑGÔGˆÝœZŸ_š_¨[¸8Ñ-CÑDÔD�Œ
�6ÑÐÐr   r1   c                 óv  — t           j        dk    s)t          t           d¦  «        r|                      ¦   «         sd S t           j                             t           j                             t          | ¦  «        ¦  «        ¦  «        }|t          v rd S t          j	        t          | ¦  «        ¦  «        t          |<   d S )Nr
   Úadd_dll_directory)
r   r   ÚhasattrÚis_dirr1   r3   r2   r#   Ú_DLL_DIRECTORY_HANDLESrK   )r1   Ú
normalizeds     r   Ú_add_windows_dll_directoryz3download_ffmpeg.<locals>._add_windows_dll_directoryT   s‹   € ÝŒ7�dŠ?ˆ?¥'­"Ð.AÑ"BÔ"Bˆ?È$Ï+Ê+É-Ì-ˆ?ØˆFÝ”W×%Ò%¥b¤g×&6Ò&6µs¸4±y´yÑ&AÔ&AÑBÔBˆ
ØÕ/Ð/Ð/ØˆFÝ-/Ô-AÅ#ÀdÁ)Ä)Ñ-LÔ-LÕ˜zÑ*Ð*Ð*r   c                  ó  •— t           j        dk    rd S t          j                             d¦  «        } | r| j        sd S | j        D ]A}t          |¦  «        }t          |                     d¦  «        ¦  «        r ‰|¦  «          d S ŒBd S )Nr
   Údecordzavcodec-*.dll)	r   r   Ú	importlibÚutilÚ	find_specÚsubmodule_search_locationsr   ÚanyÚglob)Údecord_specÚlocationÚ
decord_dirrP   s      €r   Ú_ensure_decord_dll_directoryz5download_ffmpeg.<locals>._ensure_decord_dll_directory\   sŸ   ø€ ÝŒ7�dŠ?ˆ?ØˆFÝ”n×.Ò.¨xÑ8Ô8ˆØð 	 +Ô"Hð 	ØˆFØ#Ô>ð 	ð 	ˆHÝ˜h™œˆJÝ�:—?’? ?Ñ3Ô3Ñ4Ô4ð Ø*Ð*¨:Ñ6Ô6Ð6Ø��ðð	ð 	r   c                  ó€  •— t           j        dk    rd S t           j                             dd¦  «        } d„ |                      t           j        ¦  «        D ¦   «         }t          ‰¦  «        |vrP| r0t           j                             t          ‰¦  «        g|z   ¦  «        nt          ‰¦  «        t           j        d<   d S d S )Nr
   ÚLD_LIBRARY_PATHr.   c                 ó   — g | ]}|¯|‘ŒS r6   r6   )r7   r/   s     r   r9   zAdownload_ffmpeg.<locals>._ensure_library_path.<locals>.<listcomp>l   s   € ÐAÐAÐA˜!¸qÐA�AÐAÐAÐAr   )r   r   r:   r;   r<   r=   r#   rA   )Ú
current_ldÚld_partsrH   s     €r   Ú_ensure_library_pathz-download_ffmpeg.<locals>._ensure_library_pathh   s§   ø€ ÝŒ7�dŠ?ˆ?ØˆFÝ”Z—^’^Ð$5°rÑ:Ô:ˆ
ØAÐA˜z×/Ò/µ´
Ñ;Ô;ÐAÑAÔAˆÝˆw‰<Œ<˜xÐ'Ð'ØZdÐ,v­B¬J¯OªO½SÀ¹\¼\¸NÈXÑ<UÑ,VÔ,VÐ,VÕjmÐnuÑjvÔjv�BŒJÐ(Ñ)Ð)Ð)ð (Ð'r   c                 óð   •— ‰ ‰| ¦  «        z  }|                      ¦   «         r|S ‰j        }| ‰| ¦  «        z  }|                      ¦   «         r|S t          j        | ¦  «        }|rt	          |¦  «        nd S ©N)r   Úparentr!   Úwhichr   )r   r)   r*   Úcandidate_rootÚresolvedr   rH   s        €€r   Ú_resolve_pathz&download_ffmpeg.<locals>._resolve_pathu   sŠ   ø€ à˜o˜o¨dÑ3Ô3Ñ3ˆ	Ø×ÒÑÔð 	ØÐà”Nˆ	Ø" _ _°TÑ%:Ô%:Ñ:ˆØ× Ò Ñ"Ô"ð 	"Ø!Ð!å”< Ñ%Ô%ˆØ!)Ð3�t�H‰~Œ~ˆ~¨tÐ3r   c                 ó   •—  ‰| ¦  «        d uS rd   r6   )r   ri   s    €r   Ú_binary_existsz'download_ffmpeg.<locals>._binary_existsƒ   s   ø€ Øˆ}˜TÑ"Ô"¨$Ð.Ð.r   c                 óH   •— ‰ ‰| ¦  «        z  }|                      ¦   «         S rd   )r   )r   r)   r   rH   s     €€r   Ú_local_binary_existsz-download_ffmpeg.<locals>._local_binary_exists†   s)   ø€ Ø˜o˜o¨dÑ3Ô3Ñ3ˆ	Ø×ÒÑ!Ô!Ð!r   c                  ó    •— t           j        dk    rdS  ‰d¦  «        } | r| j        ‰k    rdS t          ‰                     d¦  «        ¦  «        S )Nr
   Tr   zlibavdevice.so*)r   r   re   rW   rX   )Úffmpeg_pathri   rH   s    €€r   Ú_libs_presentz&download_ffmpeg.<locals>._libs_presentŠ   sW   ø€ ÝŒ7�dŠ?ˆ?Ø�4Ø#�m HÑ-Ô-ˆØð 	˜;Ô-°Ò8Ð8à�4Ý�7—<’<Ð 1Ñ2Ô2Ñ3Ô3Ð3r   c                  ó  •—  ‰d¦  «        }  ‰d¦  «        }d‰v r ‰d¦  «        nd }| rt          | ¦  «        t          j        d<   |rt          |¦  «        t          j        d<   |rt          |¦  «        t          j        d<   d S d S )Nr   r	   r   ÚFFMPEG_BINARYÚFFPROBE_BINARYÚFFPLAY_BINARY)r#   r   r:   )ro   Úffprobe_pathÚffplay_pathri   Úrequired_binariess      €€r   Ú_set_env_varsz&download_ffmpeg.<locals>._set_env_vars“   s¦   ø€ Ø#�m HÑ-Ô-ˆØ$�} YÑ/Ô/ˆØ19Ð=NÐ1NÐ1N�m�m HÑ-Ô-Ð-ÐTXˆØð 	;Ý*-¨kÑ*:Ô*:�BŒJ�Ñ'Øð 	=Ý+.¨|Ñ+<Ô+<�BŒJÐ'Ñ(Øð 	;Ý*-¨kÑ*:Ô*:�BŒJ�Ñ'Ð'Ð'ð	;ð 	;r   c                 ó*   •— g | ]} ‰|¦  «        °|‘ŒS r6   r6   ©r7   Úbinaryrm   s     €r   r9   z#download_ffmpeg.<locals>.<listcomp>Ÿ   s+   ø€ Ð^Ð^Ð^˜fÐAUÐAUÐV\ÑA]ÔA]Ð^�6Ð^Ð^Ð^r   c                 ó*   •— g | ]} ‰|¦  «        °|‘ŒS r6   r6   ©r7   r{   rk   s     €r   r9   z#download_ffmpeg.<locals>.<listcomp>¢   s)   ø€ ÐXÐXÐX˜fÀÀÐPVÑAWÔAWÐX�6ÐXÐXÐXr   ÚurlÚdestinationc           	      óD  — t          j        | dd¬¦  «        5 }|                     ¦   «          t          |j                             dd¦  «        ¦  «        }t          |d¦  «        5 }t          |r|nd ddd|j        › �¬	¦  «        5 }|                     d
¬¦  «        D ]<}|sŒ| 	                    |¦  «         | 
                    t          |¦  «        ¦  «         Œ=	 d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )NTéx   )ÚstreamÚtimeoutzContent-Lengthr   ÚwbÚBzDownloading )ÚtotalÚunitÚ
unit_scaleÚdesci    )Ú
chunk_size)Úrequestsr;   Úraise_for_statusÚintÚheadersÚopenr   r   Úiter_contentÚwriteÚupdateÚlen)r~   r   Úresponser†   Úfile_handleÚprogressÚchunks          r   Ú_download_filez'download_ffmpeg.<locals>._download_file¨   s÷  € ÝŒ\˜# d°CÐ8Ñ8Ô8ð 	0¸HØ×%Ò%Ñ'Ô'Ð'Ý˜Ô(×,Ò,Ð-=¸qÑAÔAÑBÔBˆEÝ�k 4Ñ(Ô(ð 
0¨K½Ø$Ð.�e�e¨$ØØØ6 KÔ$4Ð6Ð6ð	:ñ :ô :ð 
0ð
 Ø%×2Ò2¸dÐ2ÑCÔCð 0ð 0�EØ ð !Ø Ø×%Ò% eÑ,Ô,Ð,Ø—O’O¥C¨¡J¤JÑ/Ô/Ð/Ð/ð	0ð
0ð 
0ð 
0ñ 
0ô 
0ð 
0ð 
0ð 
0ð 
0ð 
0ð 
0øøøð 
0ð 
0ð 
0ð 
0ð 
0ð 
0ð 
0ñ 
0ô 
0ð 
0ð 
0ð 
0ð 
0ð 
0ð 
0øøøð 
0ð 
0ð 
0ð 
0ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	0ð 	0s[   ˜ADÁ% C=ÂAC&ÃC=Ã&C*Ã*C=Ã-C*Ã.C=Ã1DÃ=D	ÄDÄD	ÄDÄDÄDc            	      ó  •— ˆfd„‰D ¦   «         } d}t          j        |ddid¬¦  «        }|                     ¦   «          |                     ¦   «                              dg ¦  «        }t	          d„ |D ¦   «         d ¦  «        }|st          d	¦  «        ‚‰|d
         z  } ‰|d         |¦  «         	 t          j        |¦  «        5 }|                     ¦   «         D ]ì}| 	                    dd¦  «        }d|vrŒt          j                             |¦  «        }	|	| vr(|	                     ¦   «                              d¦  «        sŒh‰|	z  }
|                     |¦  «        5 }t          |
d¦  «        5 }t!          j        ||¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |
                     d¦  «         Œí	 d d d ¦  «         n# 1 swxY w Y   	 |                     d¬¦  «         d S # t(          $ r/ |                     ¦   «         r|                     ¦   «          Y d S Y d S w xY w# 	 |                     d¬¦  «         w # t(          $ r- |                     ¦   «         r|                     ¦   «          Y w Y w w xY wxY w)Nc                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r6   r6   )r7   r   r   s     €r   r9   zDdownload_ffmpeg.<locals>._download_windows_build.<locals>.<listcomp>¹   s#   ø€ ÐDÐDÐD¨$�� Ñ%Ô%ÐDÐDÐDr   z>https://api.github.com/repos/GyanD/codexffmpeg/releases/latestÚAcceptúapplication/vnd.github+jsoné   ©rŽ   rƒ   Úassetsc              3   ól   K  — | ]/}|                      d d¦  «                             d¦  «        ¯+|V — Œ0dS )r   r.   zessentials_build.zipN)r;   r   )r7   Úassets     r   ú	<genexpr>zCdownload_ffmpeg.<locals>._download_windows_build.<locals>.<genexpr>¾   sD   è è € ÐnÐn E°u·y²yÀÈÑ7LÔ7L×7UÒ7UÐVlÑ7mÔ7mÐn˜%ÐnÐnÐnÐnÐnÐnr   z5Unable to locate FFmpeg essentials build for Windows.r   Úbrowser_download_urlú\ú/z/bin/z.dllr„   éí  T©Ú
missing_ok)r‹   r;   rŒ   ÚjsonÚnextÚRuntimeErrorÚzipfileÚZipFileÚnamelistÚreplacer   r1   ÚbasenameÚlowerr   r�   r!   ÚcopyfileobjÚchmodÚunlinkÚ	TypeErrorr   )ÚexesÚapi_urlr”   rŸ   Ú	zip_assetÚzip_pathÚarchiveÚmemberrO   Ú	base_namer   ÚsourceÚtargetr   r˜   rH   rw   s                €€€€r   Ú_download_windows_buildz0download_ffmpeg.<locals>._download_windows_build¸   s�  ø€ ØDÐDÐDÐDÐ2CÐDÑDÔDˆØRˆÝ”< °(Ð<YÐ1ZÐdfÐgÑgÔgˆØ×!Ò!Ñ#Ô#Ð#Ø—’‘”×$Ò$ X¨rÑ2Ô2ˆÝÐnÐn¨VÐnÑnÔnÐptÑuÔuˆ	Øð 	XÝÐVÑWÔWÐWØ˜Y vÔ.Ñ.ˆØˆ�yÐ!7Ô8¸(ÑCÔCÐCð	&Ý” Ñ*Ô*ð -¨gØ%×.Ò.Ñ0Ô0ð 
-ð 
-�FØ!'§¢°°cÑ!:Ô!:�JØ jÐ0Ð0Ø Ý "¤× 0Ò 0°Ñ <Ô <�IØ ¨Ð,Ð,°Y·_²_Ñ5FÔ5F×5OÒ5OÐPVÑ5WÔ5WÐ,Ø Ø")¨IÑ"5�KØ Ÿš fÑ-Ô-ð ;°½¸kÈ4Ñ9PÔ9Pð ;ÐTZÝÔ*¨6°6Ñ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð ;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;à×%Ò% eÑ,Ô,Ð,Ð,ð
-ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð&Ø—’¨4�Ñ0Ô0Ð0Ð0Ð0øÝð &ð &ð &Ø—?’?Ñ$Ô$ð &Ø—O’OÑ%Ô%Ð%Ð%Ð%Ð%ð&ð &ð &ð&øøøøð&Ø—’¨4�Ñ0Ô0Ð0Ð0øÝð &ð &ð &Ø—?’?Ñ$Ô$ð &Ø—O’OÑ%Ô%Ð%Ð%Ð%ð&ð &ð&øøøøøøs¯   Â0H3 ÃBGÅF%Å,F	ÆF%ÆFÆF%ÆFÆF%ÆGÆ%F)Æ)GÆ,F)Æ-GÇH3 ÇGÇH3 ÇGÇH3 ÇG7 Ç72H0È/H0È3JÈ5IÉJÉ2JÉ>JÊJÊJc                  ó"  •‡— d} t          j        | ddid¬¦  «        }|                     ¦   «          |                     ¦   «                              dg ¦  «        }t          j                             d¦  «        rdd	gŠn$t          j        d
k    rdd	gŠnt          d¦  «        ‚t          ˆfd„|D ¦   «         d ¦  «        }|st          d¦  «        ‚‰|d         z  } ‰|d         |¦  «         	 t          j
        ¦   «         5 }t          |¦  «        }t          j        |d¦  «        5 }|                     |¦  «         d d d ¦  «         n# 1 swxY w Y   d }|                     ¦   «         D ]}	|	dz                       ¦   «         r|	} nŒ|€t          d¦  «        ‚|dz  }
|dz  }‰D ]K}|
|z  }|                     ¦   «         sŒ‰|z  }t#          j        ||¦  «         |                     d¦  «         ŒL|                     ¦   «         rL|                     d¦  «        D ]6}‰|j        z  }t#          j        ||¦  «         |                     d¦  «         Œ7d d d ¦  «         n# 1 swxY w Y   	 |                     d¬¦  «         d S # t.          $ r/ |                     ¦   «         r|                     ¦   «          Y d S Y d S w xY w# 	 |                     d¬¦  «         w # t.          $ r- |                     ¦   «         r|                     ¦   «          Y w Y w w xY wxY w)Nz?https://api.github.com/repos/BtbN/FFmpeg-Builds/releases/latestr›   rœ   r�   rž   rŸ   ÚlinuxÚlinux64ÚgplÚdarwinÚmacos64z3Unsupported platform for automatic FFmpeg download.c              3   ó¦   •‡K  — | ]JŠ‰                      d d¦  «                             d¦  «        ¯+t          ˆfd„‰D ¦   «         ¦  «        ¯F‰V — ŒKdS )r   r.   z.tar.xzc              3   óH   •K  — | ]}|‰                      d d¦  «        v V — ŒdS )r   r.   N)r;   )r7   Úkr¡   s     €r   r¢   zKdownload_ffmpeg.<locals>._download_posix_build.<locals>.<genexpr>.<genexpr>ç   s9   øè è € ÐDrÐDrÐdeÀQÈ%Ï)Ê)ÐTZÐ\^ÑJ_ÔJ_ÐE_ÐDrÐDrÐDrÐDrÐDrÐDrr   N)r;   r   Úall)r7   r¡   Úkeywordss    @€r   r¢   zAdownload_ffmpeg.<locals>._download_posix_build.<locals>.<genexpr>å   s€   øøè è € ð ð ØØ—9’9˜V RÑ(Ô(×1Ò1°)Ñ<Ô<ðåADÐDrÐDrÐDrÐDrÐiqÐDrÑDrÔDrÑArÔArðØðð ð ð ð ð r   z;Unable to locate a suitable FFmpeg build for this platform.r   r£   zr:xzÚbinz<Unable to locate FFmpeg bin directory in downloaded archive.Úlibr¦   z*.so*Tr§   )r‹   r;   rŒ   r©   ÚsysÚplatformÚ
startswithr«   rª   ÚtempfileÚTemporaryDirectoryr   Útarfiler�   Ú
extractallÚiterdirr   r!   Úcopy2r³   Úrglobr   r´   rµ   )r·   r”   rŸ   Ú	tar_assetÚtar_pathÚtmp_dirÚtmp_pathrº   Ú
build_rootr)   Ú
bin_sourceÚ
lib_sourcer{   Úsource_filer   Úlib_filerÊ   r˜   rH   rw   s                   @€€€r   Ú_download_posix_buildz.download_ffmpeg.<locals>._download_posix_buildØ   s%  øø€ ØSˆÝ”< °(Ð<YÐ1ZÐdfÐgÑgÔgˆØ×!Ò!Ñ#Ô#Ð#Ø—’‘”×$Ò$ X¨rÑ2Ô2ˆÝŒ<×"Ò" 7Ñ+Ô+ð 	VØ! 5Ð)ˆHˆHÝŒ\˜XÒ%Ð%Ø! 5Ð)ˆHˆHåÐTÑUÔUÐUåðð ð ð Ø#)ðñ ô ð ñ
ô 
ˆ	ð ð 	^ÝÐ\Ñ]Ô]Ð]à˜Y vÔ.Ñ.ˆØˆ�yÐ!7Ô8¸(ÑCÔCÐCð$	&ÝÔ,Ñ.Ô.ð 1°'Ý ™=œ=�Ý”\ (¨FÑ3Ô3ð 1°wØ×&Ò& xÑ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð "�
Ø!)×!1Ò!1Ñ!3Ô!3ð ð �IØ! EÑ)×1Ò1Ñ3Ô3ð Ø%.˜
Ø˜ðð Ð%Ý&Ð'eÑfÔfÐfà'¨%Ñ/�
Ø'¨%Ñ/�
à/ð -ð -�FØ",¨vÑ"5�KØ&×-Ò-Ñ/Ô/ð !Ø Ø")¨FÑ"2�KÝ”L ¨kÑ:Ô:Ð:Ø×%Ò% eÑ,Ô,Ð,Ð,à×$Ò$Ñ&Ô&ð 1Ø$.×$4Ò$4°WÑ$=Ô$=ð 1ð 1˜Ø&-°´Ñ&=˜Ýœ X¨{Ñ;Ô;Ð;Ø#×)Ò)¨%Ñ0Ô0Ð0Ð0ð;1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð>&Ø—’¨4�Ñ0Ô0Ð0Ð0Ð0øÝð &ð &ð &Ø—?’?Ñ$Ô$ð &Ø—O’OÑ%Ô%Ð%Ð%Ð%Ð%ð&ð &ð &ð&øøøøð&Ø—’¨4�Ñ0Ô0Ð0Ð0øÝð &ð &ð &Ø—?’?Ñ$Ô$ð &Ø—O’OÑ%Ô%Ð%Ð%Ð%ð&ð &ð&øøøøøøs‹   Ã-J; Ä %IÄ%EÄ;IÅE	ÅIÅE	ÅD IÉJ; ÉIÉJ; É"IÉ#J; É'I? É?2J8Ê7J8Ê;LÊ=KËLË2LÌLÌ
LÌLz2Failed to download FFmpeg binaries automatically: c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S rd   r6   rz   s     €r   r¢   z"download_ffmpeg.<locals>.<genexpr>   s/   øè è € ÐPÐP°FÐ'Ð'¨Ñ/Ô/ÐPÐPÐPÐPÐPÐPr   zOFFmpeg binaries are still missing after download; please install them manually.c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S rd   r6   r}   s     €r   r¢   z"download_ffmpeg.<locals>.<genexpr>$  s-   øè è € ÐJÐJ¨f�>�> &Ñ)Ô)ÐJÐJÐJÐJÐJÐJr   )r   r   r?   r   Ú__file__Úresolver   r   re   r#   ÚtypingÚOptionalÚboolÚ	Exceptionr$   rÉ   )r   r+   rI   r\   rb   rp   rx   ÚmissingÚlibs_okr¿   rà   ÚexcrP   rk   r   r˜   rm   ri   rH   r*   rw   s               @@@@@@@@@r   r   r      sq  øøøøøøøøø€ à! 9Ð-ÐÝ	„w�$‚€Ø× Ò  Ñ*Ô*Ð*àÐÝ�‘N”N×*Ò*Ñ,Ô,Ô4°QÔ7ˆ	Ø˜mÑ+ˆˆå�}Ñ%Ô%ˆà‡M‚M˜$¨€MÑ.Ô.Ð.Ø”€Ið�cð ¥cð ð ð ð ð

ð 
ð 
ð 
ð 
ð 
ð.Eð Eð Eð Eð Eð Eð&M­ð Mð Mð Mð Mð
ð 
ð 
ð 
ð 
ðwð wð wð wð wð ÐÑÔÐØÐÑÔÐØ Ð Ñ"Ô"Ð"ØÐÑÔÐð4�Cð 4¥F¤OµDÔ$9ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð/�Sð /¥Tð /ð /ð /ð /ð /ð /ð"¥3ð "­4ð "ð "ð "ð "ð "ð "ð "ð4�4ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð	;ð 	;ð 	;ð 	;ð 	;ð 	;õ 
„w�$‚€Ø^Ð^Ð^Ð^Ð(9Ð^Ñ^Ô^ˆØˆˆàXÐXÐXÐXÐ(9ÐXÑXÔXˆØ�-‘/”/ˆØð �wð Øˆ‰ŒˆØˆð0�Cð 0­dð 0ð 0ð 0ð 0ð &ð &ð &ð &ð &ð &ð &ð &ð@<&ð <&ð <&ð <&ð <&ð <&ð <&ð|ÝŒ7�dŠ?ˆ?Ø#Ð#Ñ%Ô%Ð%Ð%à!Ð!Ñ#Ô#Ð#øøÝð ð ð ÝÐHÀ3ÐHÐHÑIÔIÐIØˆˆˆˆˆøøøøðøøøõ 
„w�$‚€ÝÐPÐPÐPÐPÐ>OÐPÑPÔPÑPÔPð 	ÝÐcÑdÔdÐdØˆFð	õ ÐJÐJÐJÐJÐ8IÐJÑJÔJÑJÔJð 	ÝÐcÑdÔdÐdØˆFàÐÑÔÐØÐÑÔÐØ€M�O„O€O€O€Os   Ç%G' Ç'
HÇ1H	È	Hrd   )r   rÍ   r!   rÒ   rÐ   rå   Úimportlib.utilrS   Úpathlibr   r‹   r   r¬   Ú__all__rN   ræ   ÚUnionr#   r   r6   r   r   ú<module>rð      sÓ   ðà 	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø €€€ð Ð
€ð Ð ðTð T 6¤?°6´<ÀÀTÀ	Ô3JÔ#Kð Tð Tð Tð Tð Tð Tr   