+
    ˜qgjó  ã                   óä   € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtHtH	t	H
t
HtHtHt ^ RIHtHtHt ^ RIHtHt ^ RIHtHt ]P0                  ! ]4      tR
t. ROt^tR R lt ! R R	]4      tR# )é    N)ÚAnyÚIterableÚListÚMappingÚOptionalÚSequenceÚcast)ÚhelpersÚsubpÚutil)ÚPackageManagerÚUninstalledPackages)Ú
PER_ALWAYSÚPER_INSTANCEc                ó\   € V ^8„  d   QhR\         \        ,          R\        \        ,          /# )é   ÚcfgÚreturn)r   Údictr   Ústr)Úformats   "ÚJ/usr/lib/python3/dist-packages/cloudinit/distros/package_management/apt.pyÚ__annotate__r   )   s"   € ÷ ñ œ¤$�ð ¬D´­Iñ ó    c                óÜ  € V '       g   RpR.pM]V P                  R4      pV P                  R4      p\        V\        4      '       d   V.pM!\        V\        4      '       g   \	        R4      h\
        P                  ! V4      '       gJ   \        V4      P                  4       R8X  dG   V'       d?   \        P                  ! V^ ,          4      '       d   \        \        \        ,          V4      # . # )a  Parse the 'apt_get_wrapper' section of cloud-config.

apt_get_wrapper may be defined in cloud-config:
  apt_get_wrapper:
    enabled: true
    command: ["eatmydata"]

The function takes the value of "apt_get_wrapper" and returns the list
of arguments to prefix to the apt-get command.
ÚautoÚ	eatmydataÚenabledÚcommandz,apt_wrapper command must be a string or list)ÚgetÚ
isinstancer   ÚlistÚ	TypeErrorr   Úis_trueÚlowerr   Úwhichr	   r   )r   r   r   s   &  r   Úget_apt_wrapperr'   )   sª   € ÷ ØˆØ�-‰à—'‘'˜)Ó$ˆØ—'‘'˜)Ó$ˆä�gœs×#Ò#Ø�i‰GÜ˜G¤T×*Ò*ÜÐJÓKÐKä‡|‚|�G×ÒÜˆG‹×ÑÓ Ô&¯7´t·z²zÀ'È!Å*×7MÒ7Mä”Dœ•I˜wÓ'Ð'àˆ	r   c                   ó   a a€ ] tR t^Jt oRtRRRRRR/V3R lV 3R lllt]V3R lR	 l4       tV3R
 lR ltRR/R lt	]
P                  ! ^R7      R 4       tV3R lR ltV3R lR ltRR ltR t]3R ltRtVtV ;t# )ÚAptÚaptÚapt_get_wrapper_commandÚapt_get_commandNÚapt_get_upgrade_subcommandc          	      ó†   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[S[S[,          ,          RS[S[,          /# )r   Úrunnerr+   r,   r-   )r
   ÚRunnersr   r   r   )r   Ú__classdict__s   "€r   r   ÚApt.__annotate__M   sN   ø€ ÷ Añ Aá—‘ðAñ "*©#¥ð	Añ
 "¡(©3¥-Õ0ðAñ %-©S¥MñAr   c               óÂ   <€ \         SV `  V4       Vf   \        V n        Vf   Rp\	        V4      \	        V P                  4      ,           V n        W@n        RR/V n        R # )Nzdist-upgradeÚDEBIAN_FRONTENDÚnoninteractive)ÚsuperÚ__init__ÚAPT_GET_COMMANDr,   ÚtupleÚapt_commandr-   Úenvironment)Úselfr/   r+   r,   r-   Ú	__class__s   &&$$$€r   r7   ÚApt.__init__M   sf   ø€ ô 	‰Ñ˜Ô ØÒ"Ü#2ˆDÔ Ø%Ò-Ø)7Ð&Ü Ð!8Ó9¼EØ× Ñ ó=
õ 
ˆÔð +EÔ'Ø-Ð/?Ð@ˆÖr   c                ó>   <€ V ^8„  d   QhRS[ P                  RS[RR/# )r   r/   r   r   r)   )r
   r0   r   )r   r1   s   "€r   r   r2   b   s&   ø€ ÷ 
ñ 
¡§¡ð 
±wð 
À5ñ 
r   c                óŒ   € \        V\        VP                  R 4      4      VP                  R4      VP                  R4      R7      # )Úapt_get_wrapperr,   r-   )r+   r,   r-   )r)   r'   r    )Úclsr/   r   s   &&&r   Úfrom_configÚApt.from_configa   sC   € äØÜ$3Ø—‘Ð)Ó*ó%ð  ŸG™GÐ$5Ó6Ø'*§w¡wÐ/KÓ'Lô
ð 	
r   c                ó    <€ V ^8„  d   QhRS[ /# )r   r   )Úbool)r   r1   s   "€r   r   r2   l   s   ø€ ÷ 9ñ 9™4ñ 9r   c                ób   € \        \        P                  ! V P                  ^ ,          4      4      # )r   )rF   r   r&   r,   )r<   s   &r   Ú	availableÚApt.availablel   s!   € Ü”D—J’J˜t×3Ñ3°AÕ6Ó7Ó8Ð8r   ÚforceFc               ó~   € V P                   P                  R V P                  R.V'       d   \        M\        R7       R# )zupdate-sourcesÚupdate)ÚfreqN)r/   ÚrunÚrun_package_commandr   r   )r<   rJ   s   &$r   Úupdate_package_sourcesÚApt.update_package_sourceso   s/   € Ø�‰�‰ØØ×$Ñ$ØˆJß$•¬,ð	 	ö 	
r   )Úmaxsizec                óx   € \         P                   ! R R.4      P                  p\        VP                  4       4      # )z	apt-cacheÚpkgnames)r   ÚstdoutÚsetÚ
splitlines)r<   Úresps   & r   Úget_all_packagesÚApt.get_all_packagesw   s/   € ä—I’I˜{¨JÐ7Ó8×?Ñ?ˆô �4—?‘?Ó$Ó%Ð%r   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# )r   Úpkglist)r   r   )r   r1   s   "€r   r   r2   �   s   ø€ ÷ 
ñ 
±¹µñ 
r   c                ó´   € V Uu. uFG  p\         P                  ! R V4      ^ ,          P                  R4      V P                  4       9  g   KE  VNKI  	  up# u upi )z/|=z-^)ÚreÚsplitÚrstriprY   )r<   r\   Úpkgs   && r   Úget_unavailable_packagesÚApt.get_unavailable_packages�   sZ   € ñ ó
á�Ü�xŠx˜˜sÓ# AÕ&×-Ñ-¨dÓ3Ø×(Ñ(Ó*ñ+÷ ˆCÙñ
ð 	
ùò 
s   …AAÁAc                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   r\   r   )r   r   )r   r1   s   "€r   r   r2   �   s   ø€ ÷ ñ ©ð Ñ5Hñ r   c                óŠ  € V P                  4        \        P                  ! R \        V4      4      pT P	                  V Uu. uF  q"P                  R4      ^ ,          NK  	  up4      pV'       d   \        P                  RV4       V Uu. uF  qDV9  g   K  VNK  	  ppV'       d   V P                  RVR7       V# u upi u upi )ú%s=%sÚ=zXThe following packages were not found by APT so APT will not attempt to install them: %sÚinstall)Úpkgs)	rP   r   Úexpand_package_listr"   rb   r_   ÚLOGÚdebugrO   )r<   r\   ÚxÚunavailableÚpÚ
to_installs   &&    r   Úinstall_packagesÚApt.install_packages�   s¯   € Ø×#Ñ#Ô%Ü×*Ò*¨7´D¸³MÓBˆØ×3Ñ3Ù&-Ó.¡g �W‰W�S‹\˜!�_ˆ_¡gÑ.ó
ˆ÷ Ü�I‰Ið2àôñ
 ")ÓA¡˜A°[Ñ,@—a�a¡ˆ
ÐAßØ×$Ñ$ Y°ZÐ$Ô@ØÐùò /ùò Bs   Á  B;Â	C ÂC c                óÖ  € Vf   . p\        V P                  4      pV'       d)   \        V\        4      '       d   VP	                  V4       M/V'       d(   \        V\         4      '       d   VP                  V4       VR8X  d   V P                  pVP	                  V4       \        P                  ! RV4      pVP                  V4       V P                  RVRV P                  RR/R7       R # )NÚupgraderf   ÚargsÚ
update_envÚcaptureF)Úsubp_kwargs)r"   r:   r!   r   ÚappendÚextendr-   r   rj   Ú_wait_for_apt_commandr;   )r<   r   ru   ri   Úfull_commandr\   s   &&&&  r   rO   ÚApt.run_package_command    sÄ   € ØŠ<ØˆDÜ˜D×,Ñ,Ó-ˆç”J˜t¤S×)Ò)Ø×Ñ Õ%ß”j ¤t×,Ò,Ø×Ñ Ô%à�iÔØ×5Ñ5ˆGØ×Ñ˜GÔ$Ü×*Ò*¨7°DÓ9ˆØ×Ñ˜GÔ$à×"Ñ"à˜Ø˜d×.Ñ.Ø˜5ðð 	#ö 	
r   c                ó~  € \          Fƒ  p\        P                  P                  V4      '       g   K*  \	        VR4      ;_uu_ 4       p \
        P                  ! V\
        P                  \
        P                  ,          4        RRR4       K…  	  R#   \         d     RRR4        R# i ; i  + '       g   i     Kµ  ; i)zdDetermines if another process holds any apt locks.

If all locks are clear, return True else False.
ÚwNFT)
ÚAPT_LOCK_FILESÚosÚpathÚexistsÚopenÚfcntlÚlockfÚLOCK_EXÚLOCK_NBÚOSError)r<   ÚlockÚhandles   &  r   Ú_apt_lock_availableÚApt._apt_lock_available¸   s‚   € ÷
 #ˆDÜ—7‘7—>‘> $×'Ò'áÜ�d˜C—” Fð!Ü—K’K ¬¯©¼¿¹Õ(EÕF÷ !‘ñ	 #ñ øô ô !Ø ÷	 !’ð!ú÷ !—�ús*   ÁB+Á:BÂB(	ÂB+Â'B(	Â(B+Â+B<c                ó  € \         P                  ! 4       p\        P                  R4       \         P                  ! 4       V,
          V8  d[   V P	                  4       '       g   \         P
                  ! ^4       KO  \        P                  R4        \        P                  ! R/ VB # \        R4      h  \        P                   dG    T P	                  4       '       d   h \        P                  R4       \         P
                  ! ^4        Kà  i ; i)zGWait for apt install to complete.

subp_kwargs: kwargs to pass to subp
zWaiting for APT lockzAPT lock availablez*Another process holds APT lock. Waiting...zCould not get APT lock© )	ÚtimeÚ	monotonicrk   rl   rŒ   Úsleepr   ÚProcessExecutionErrorÚTimeoutError)r<   rx   ÚtimeoutÚ
start_times   &&& r   r{   ÚApt._wait_for_apt_commandÈ   sÃ   € ô —^’^Ó%ˆ
Ü�	‰	Ð(Ô)Ü�nŠnÓ Õ+¨gÔ5Ø×+Ñ+×-Ò-Ü—
’
˜1”ÙÜ�I‰IÐ*Ô+ðÜ—y’yÑ/ ;Ñ/Ð/ô  Ð3Ó4Ð4øô ×-Ñ-ô ð ×+Ñ+×-Ò-ØÜ—	‘	ÐFÔGÜ—
’
˜1—ðús   ÂB1 Â1*DÃ,DÄD)r:   r,   r-   r;   r�   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Únamer7   ÚclassmethodrC   rH   rP   Ú	functoolsÚ	lru_cacherY   rb   rq   rO   rŒ   ÚAPT_LOCK_WAIT_TIMEOUTr{   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r=   r1   s   @@r   r)   r)   J   s­   ù‡ € Ø€DðAð 24ð	Að
 48ðAð 59÷Aõ Að( ÷
ó ð
÷9ð 9ð
¨eô 
ð ×Ò Ô#ñ&ó $ð&÷
ð 
÷ð ô"
ò0ð" $9÷5ô 5r   r)   )zapt-getz(--option=Dpkg::Options::=--force-confoldz*--option=Dpkg::options::=--force-unsafe-ioz--assume-yesz--quiet)z/var/lib/dpkg/lock-frontendz/var/lib/dpkg/lockz/var/cache/apt/archives/lockz/var/lib/apt/lists/lock) r…   rž   Úloggingr�   r^   r�   Útypingr   r   r   r   r   r   r	   Ú	cloudinitr
   r   r   Ú4cloudinit.distros.package_management.package_managerr   r   Úcloudinit.settingsr   r   Ú	getLoggerr˜   rk   r8   r€   r    r'   r)   r�   r   r   Ú<module>rª      sj   ðã Û Û Û 	Û 	Û ß I× IÑ Iç )Ñ )÷÷ 8à×Ò˜Ó!€ð€ò€ð Ð õôB]5ˆ.ö ]5r   