Ë
    GKÕi¡h  ã                   ó¬  — d dl mZ d dlmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZmZmZmZ d dlZd dlmZmZmZmZ d d	lmZ d d
lmZ d dlmZmZmZmZmZ d dl m!Z! d dl"m#Z#m$Z$ d dl%m&Z&m'Z'm(Z( d dl)m*Z*m+Z+m,Z,m-Z-m.Z. dZ/ G d„ de«      Z0d„ Z1 ed¬«      d„ «       Z2dedeejf                     f   fd„Z4dejf                  dejj                  de6fd„Z7 ed¬«      de6de6de8fd„«       Z9de6d ee6ef   dejt                  de6fd!„Z;d"eejf                     dee6eeejt                  e6f      f   fd#„Z<d$e!dee6ef   fd%„Z=deee6ef      fd&„Z>d'ee6eeejt                  e6f      f   d ee6ef   deee6ef      fd(„Z?d$e!dee6ef   fd)„Z@	 	 d>d*ee6eejf                     f   d+e6d,e8ddfd-„ZAd.„ ZBd/„ ZCd0e6d1e6d2e'd3e&d4eDd5eDd6e8fd7„ZEd8„ ZFd$e!fd9„ZGd:„ ZHd;„ ZId<„ ZJd=„ ZKy)?é    )Údefaultdict)ÚdatetimeÚtimezone)ÚEnum)Ú	lru_cache)Úchoice)ÚAnyÚDefaultDictÚDictÚListÚTupleN)Ú
exceptionsÚ	livepatchÚmessagesÚutil)Ú_reboot_required)Ú_is_attached)ÚPreserveAptCfgÚget_apt_cache_datetimeÚget_apt_pkg_cacheÚget_esm_apt_pkg_cacheÚget_pkg_candidate_version)ÚUAConfig)ÚESMAppsEntitlementÚESMInfraEntitlement)ÚApplicabilityStatusÚApplicationStatusÚContractStatus)Úget_distro_infoÚget_kernel_infoÚget_release_infoÚis_current_series_ltsÚis_supported)ú	esm-infraúesm-appsc                   ó$   — e Zd ZdZdZdZdZdZdZy)ÚUpdateStatusz2Represents the availability of a security package.Úupgrade_availableÚupgrade_available_not_preferredÚpending_attachÚpending_enableÚupgrade_unavailableN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	AVAILABLEÚAVAILABLE_NOT_PREFERREDÚ
UNATTACHEDÚNOT_ENABLEDÚUNAVAILABLE© ó    ú:/usr/lib/python3/dist-packages/uaclient/security_status.pyr'   r'   (   s   „ Ù8Ø#€IØ?ÐØ!€JØ"€KØ'�Kr7   r'   c                 ó@   — t        t        j                  | «      «       y )N)Úprintr   Úcreate_package_list_str)Úpackagess    r8   Úprint_package_listr=   1   s   € Ü	Œ$×
&Ñ
& xÓ
0Õ1r7   )Úmaxsizec                  óì   — t        «       j                  } ddj                  | «      fdddj                  | «      fdddj                  | «      fd	dd
j                  | «      fdddj                  | «      fd	iS )NÚUbuntuz{}-securityústandard-securityÚUbuntuESMAppsz{}-apps-securityr%   Ú	UbuntuESMz{}-infra-securityr$   z{}-apps-updatesz{}-infra-updates)r!   ÚseriesÚformat)rD   s    r8   Ú%get_origin_information_to_service_maprF   5   sˆ   € äÓ×&Ñ&€Fà	�=×'Ñ'¨Ó/Ð0Ð2EØ	Ð,×3Ñ3°FÓ;Ð<¸jØ	Ð)×0Ñ0°Ó8Ð9¸;Ø	Ð+×2Ñ2°6Ó:Ð;¸ZØ	Ð(×/Ñ/°Ó7Ð8¸+ðð r7   ÚreturnÚstrc                  óD  — t        t        «      } t        t        «      5 }|j                  D �cg c]  }|j
                  sŒ|‘Œ }}|| d<   t        j                  |«      }|D ]   }| t        ||«         j                  |«       Œ" 	 d d d «       | S c c}w # 1 sw Y   | S xY w)NÚall)
r   Úlistr   r   r<   Úcurrent_verÚapt_pkgÚDepCacheÚ get_origin_for_installed_packageÚappend)ÚresultÚcacheÚpackageÚinstalled_packagesÚ	dep_caches        r8   Ú get_installed_packages_by_originrV   A   s¨   € ô œÓ€Fä	Ô)Ó	*ð ¨eà#(§>¡>ö
Ø°W×5HÓ5HŠGð
Ðð 
ð +ˆˆu‰ä×$Ñ$ UÓ+ˆ	à)ò 	ˆGØÜ0°¸)ÓDñç‰f�W�oñ	÷ð €Mùò
÷ð €Mús#   ŸB®BÁ BÁABÂBÂBrS   rU   c                 óŠ  — | j                   sy| j                   j                  }t        |«      dk(  r/|j                  | «      }|r| j                   |k(  ry|j                  }|D ]^  \  }}t	        «       j                  |j                  |j                  fd«      }|t        v r|c S |j                  dk(  sŒR|j                  c S  y)a  
    Returns the origin for a package installed in the system.

    Technically speaking, packages don't have origins - their versions do.
    We check the available versions (installed, candidate) to determine the
    most reasonable origin for the package.
    Ú é   Úunknownr@   úthird-party)
rL   Ú	file_listÚlenÚget_candidate_verrF   ÚgetÚoriginÚarchiveÚESM_SERVICESÚ	component)rS   rU   Úavailable_originsÚ	candidater`   Ú_Úservices          r8   rO   rO   V   sÅ   € ð ×ÒØØ×+Ñ+×5Ñ5Ðô ÐÓ Ò"Ø×/Ñ/°Ó8ˆ	Ù˜G×/Ñ/°9Ò<ØØ%×/Ñ/Ðà&ò $‰	ˆ�Ü7Ó9×=Ñ=Ø�]‰]˜FŸN™NÐ+¨Ró
ˆð ”lÑ"ØŠNØ�=‰=˜HÓ$Ø×#Ñ#Ò#ð$ð r7   ÚpkgÚversionc                 ó,   — t        | d¬«      }|r||k(  S y)z;Returns True if the package version is a candidate version.F)Úcheck_esm_cache)r   )rh   ri   Úcandidate_versions      r8   Ú_is_candidate_versionrm   {   s#   € ô 2°#ÀuÔMÐÙØÐ+Ñ+Ð+Ør7   Úservice_nameÚua_infoc                 ó–  — | dv s|d   rg| |d   v r`t        |j                  j                  |j                  «      }|rt        j
                  j                  S t        j                  j                  S |d   st        j                  j                  S | |d   v rt        j                  j                  S t        j                  j                  S )zÑDefines the update status for a package based on the service name.

    For ESM-[Infra|Apps] packages, first checks if Pro is attached. If this is
    the case, also check for availability of the service.
    )rA   ústandard-updatesÚattachedÚenabled_servicesÚentitled_services)rm   Ú
parent_pkgÚnameÚver_strr'   r1   Úvaluer2   r3   r4   r5   )rn   ro   ri   Úis_candidates       r8   Úget_update_statusrz   „   sÀ   € ð Ð@Ñ@Ø�
Ò °Ð8JÑ0KÑ Kä,Ø×Ñ×#Ñ# W§_¡_ó
ˆñ
 ô ×"Ñ"×(Ñ(ð	
ô ×5Ñ5×;Ñ;ð	
ð
 �:ÒÜ×&Ñ&×,Ñ,Ð,Ø�wÐ2Ñ3Ñ3Ü×'Ñ'×-Ñ-Ð-Ü×#Ñ#×)Ñ)Ð)r7   r<   c                 óˆ  — t        t        «      }t        t        «      5 }| D �]†  }|j                  sŒ|j
                  D ]Á  }||j                  kD  sŒd}|j                  D ]Z  \  }}t        «       j                  |j                  |j                  f«      }|sŒ8||   j                  ||j                  f«       d} n |j                  d   d   }	|rŒ“d|	j                  vsŒ¢|d   j                  ||	j                  f«       ŒÃ |j                  |v sŒð||j                     }
|
j
                  D ]y  }||j                  kD  sŒ|j                  D ]X  \  }}t        «       j                  |j                  |j                  f«      }|sŒ8||   j                  ||j                  f«        Œy Œ{ �Œ‰ 	 ddd«       |S # 1 sw Y   |S xY w)zÌFilters a list of packages looking for available updates.

    All versions greater than the installed one are reported, based on where
    it is provided, including ESM pockets, excluding backports.
    FTr   Ú	backportsrq   N)r   rK   r   r   rL   Úversion_listr\   rF   r_   r`   ra   rP   Úsiterv   )r<   rQ   Ú	esm_cacherS   ri   Úcounted_as_securityr`   rf   rg   Úexpected_originÚesm_packages              r8   Úfilter_updatesrƒ       sÓ  € ô œÓ€Fô 
Ô-Ó	.ð ,*°)Øó +	*ˆGà×"Ó"Ø&×3Ñ3ò �Gà ×!4Ñ!4Ó4Ø.3Ð+Ø)0×):Ñ):ò 
&™I˜F Aä EÓ G× KÑ KØ%+§]¡]°F·N±NÐ$Có!"ð $ò
  'Ø & w¡× 6Ñ 6¸ÀÇÁÐ7MÔ NØ6:Ð 3á %ð
&ð +2×*;Ñ*;¸AÑ*>¸qÑ*A˜â 3Ø +°?×3JÑ3JÒ Jà"Ð#5Ñ6×=Ñ=Ø!(¨/×*>Ñ*>Ð ?õð+ð8 —<‘< 9Ò,Ø"+¨G¯L©LÑ"9�KØ#.×#;Ñ#;ò 
*˜Ø" W×%8Ñ%8Ó8Ø-4×->Ñ->ò *¡	 ¨Ü*OÓ*Q×*UÑ*UØ%+§]¡]°F·N±NÐ$Có+" ò $+Ø$*¨7¡O×$:Ñ$:Ø)0°&·+±+Ð(>ô%&ñ %*ñ*ò
*ñC+	*÷,*ð\ €M÷],*ð\ €Mús<   ŸF7³F7ÁAF7Â9F7ÃF7Ã!0F7Ä-F7Å AF7Æ(F7Æ7GÚcfgc                 ó   — t        | «      j                  }|g g dœ}|rðt        | «      }t        | «      }|j	                  «       t
        j                  k(  r|d   j                  d«       |j                  «       d   t        j                  k(  r|d   j                  d«       |j	                  «       t
        j                  k(  r|d   j                  d«       |j                  «       d   t        j                  k(  r|d   j                  d«       |S )z7Returns the Pro information based on the config object.)rr   rs   rt   rt   r%   r   rs   r$   )r   Úis_attachedr   r   Úcontract_statusr   ÚENTITLEDrP   Úapplication_statusr   ÚENABLED)r„   r†   ro   Úinfra_entitlementÚapps_entitlements        r8   Úget_ua_infor�   à   s  € ä˜sÓ#×/Ñ/€KàØØñ€Gñ Ü/°Ó4ÐÜ-¨cÓ2Ðà×+Ñ+Ó-´×1HÑ1HÒHØÐ'Ñ(×/Ñ/°
Ô;à×/Ñ/Ó1°!Ñ4Ü ×(Ñ(ò)ð Ð&Ñ'×.Ñ.¨zÔ:à×,Ñ,Ó.´.×2IÑ2IÒIØÐ'Ñ(×/Ñ/°Ô<à×0Ñ0Ó2°1Ñ5Ü ×(Ñ(ò)ð Ð&Ñ'×.Ñ.¨{Ô;à€Nr7   c                  óþ  — 	 t        j                  «       } t	        «       j
                  }| �±|�¯|| j                  k(  r | j                   �”| j                   j                  dk(  r{| j                   j                  �et        | j                   j                  «      dkD  rC| j                   j                  D �cg c]#  }|j                  xs d|j                  xs ddœ‘Œ% c}S g S # t        j                  $ r g cY S w xY wc c}w )NÚappliedr   rX   F)rv   Úpatched)r   Ústatusr   ÚProcessExecutionErrorr    Úproc_version_signature_versionÚkernelÚstateÚfixesr]   rv   r�   )Ú	lp_statusÚour_kernel_versionÚfixs      r8   Úget_livepatch_fixed_cvesrš     sñ   € ðÜ×$Ñ$Ó&ˆ	ô )Ó*×IÑIÐàÐØÐ*Ø )×"2Ñ"2Ò2Ø×ÑÐ+Ø×Ñ×%Ñ%¨Ò2Ø×Ñ×%Ñ%Ð1Ü�	×#Ñ#×)Ñ)Ó*¨QÒ.ð !×*Ñ*×0Ñ0ö
àð —X‘X’^ °·±Ò0D¸uÓEò
ð 	
ð
 €Iøô% ×+Ñ+ò ØŠ	ðüò
s   ‚C Â2(C:ÃC7Ã6C7Úupgradable_versionsc                 óè   — g }| j                  «       D ]\  \  }}|D ]R  \  }}t        |||«      }|j                  |j                  j                  |j
                  ||||j                  dœ«       ŒT Œ^ |S )N)rS   ri   rn   r‘   r`   Údownload_size)Úitemsrz   rP   ru   rv   rw   Úsize)r›   ro   Úupdatesrg   r}   ri   r`   r‘   s           r8   Úcreate_updates_listr¡     s…   € ð €GØ!4×!:Ñ!:Ó!<ò Ñˆ�Ø+ò 	‰OˆG�VÜ& w°¸ÓAˆFØ�N‰Nà&×1Ñ1×6Ñ6Ø&Ÿ™Ø$+Ø$Ø$Ø%,§\¡\ñõ	ñ	ðð €Nr7   c                 óZ  — t        | «      }d|i}t        «       }|d   }t        |«      |d<   t        |«      }g |d<   t	        ||«      }t        |d   «      |d<   t        |d   «      |d<   t        |d	   «      |d
<   t        |d   «      |d<   t        |d   «      |d<   t        |d   «      |d<   t        |d   «      |d<   t        |d   «      |d<   t        |d   «      |d<   t        |d   «      |d<   t        |d   «      |d<   t        | «      j                  |d<   d||dt        «       idœS )ag  Returns the status of security updates on a system.

    The returned dict has a 'packages' key with a list of all installed
    packages which can receive security updates, with or without ESM,
    reflecting the availability of the update based on the Pro status.

    There is also a summary with the Ubuntu Pro information and the package
    counts.
    ÚuarJ   Únum_installed_packagesrq   ÚmainÚnum_main_packagesÚ
restrictedÚnum_restricted_packagesÚuniverseÚnum_universe_packagesÚ
multiverseÚnum_multiverse_packagesr[   Únum_third_party_packagesrZ   Únum_unknown_packagesr$   Únum_esm_infra_packagesr%   Únum_esm_apps_packagesÚnum_esm_infra_updatesÚnum_esm_apps_updatesrA   Únum_standard_security_updatesÚreboot_requiredz0.1Ú
fixed_cves)Ú_schema_versionÚsummaryr<   r   )r�   rV   r]   rƒ   r¡   r   r´   rš   )r„   ro   r·   Úpackages_by_originrT   r›   r    s          r8   Úsecurity_status_dictr¹   /  s“  € ô ˜#Ó€Gà�Wˆo€GÜ9Ó;Ðà+¨EÑ2ÐÜ(+Ð,>Ó(?€GÐ$Ñ%ä(Ð);Ó<Ðà.0ÐÐ*Ñ+ä!Ð"5°wÓ?€Gä#&Ð'9¸&Ñ'AÓ#B€GÐÑ Ü),Ð-?ÀÑ-MÓ)N€GÐ%Ñ&Ü'*Ð+=¸jÑ+IÓ'J€GÐ#Ñ$Ü),Ð-?ÀÑ-MÓ)N€GÐ%Ñ&Ü*-Ø˜=Ñ)ó+€GÐ&Ñ'ô '*Ð*<¸YÑ*GÓ&H€GÐ"Ñ#Ü(+Ð,>¸{Ñ,KÓ(L€GÐ$Ñ%Ü'*Ð+=¸jÑ+IÓ'J€GÐ#Ñ$ä'*Ð+>¸{Ñ+KÓ'L€GÐ#Ñ$Ü&)Ð*=¸jÑ*IÓ&J€GÐ"Ñ#Ü/2ØÐ/Ñ0ó0€GÐ+Ñ,ô "2°#Ó!6×!FÑ!F€GÐÑð !ØØØ"Ô$<Ó$>Ð?ñ	ð r7   Úpackage_listsÚ
show_itemsÚalways_showc                 ó¨  — t        | d   «      }t        t        j                  j	                  |¬«      «       dt        t        |«      «      dz   z  }|dv rft        | d   «      t        | d   «      z   t        | d   «      z   }t        t        j                  j                  |«      j	                  ||d	¬
«      «       |dv rjt        | d   «      t        | d   «      z   t        | d   «      z   }|s|r:t        t        j                  j                  |«      j	                  ||d¬
«      «       |dv rKt        | d   «      }|s|r9t        t        j                  j                  |«      j	                  ||¬«      «       |dv rKt        | d   «      }|s|r9t        t        j                  j                  |«      j	                  ||¬«      «       t        d«       y )NrJ   )Úcountú rY   )rJ   r$   r¥   r§   r$   úMain/Restricted)Úoffsetr¾   Ú
repository)rJ   r%   r©   r«   r%   úUniverse/Multiverse)rJ   r[   r[   )rÁ   r¾   )rJ   rZ   rZ   rX   )
r]   r:   r   ÚSS_SUMMARY_TOTALrE   rH   ÚSS_SUMMARY_ARCHIVEÚ	pluralizeÚSS_SUMMARY_THIRD_PARTYÚSS_SUMMARY_UNAVAILABLE)	rº   r»   r¼   Útotal_packagesrÁ   Úpackages_mrÚpackages_umÚpackages_thirdpartyÚpackages_unknowns	            r8   Ú_print_package_summaryrÎ   a  sè  € ô
 ˜ uÑ-Ó.€NÜ	Œ(×
#Ñ
#×
*Ñ
*°Ð
*Ó
@ÔAà”Cœ˜NÓ+Ó,¨qÑ0Ñ1€FàÐ)Ñ)ä�˜fÑ%Ó&Ü�- Ñ-Ó.ñ/ä�- Ñ,Ó-ñ.ð 	ô
 	Ü×'Ñ'×1Ñ1°+Ó>×EÑEØØ!Ø,ð Fó ô	
ð Ð(Ñ(ä�˜jÑ)Ó*Ü�- Ñ-Ó.ñ/ä�- 
Ñ+Ó,ñ-ð 	ñ
 ™+ÜÜ×+Ñ+×5Ñ5°kÓB×IÑIØ!Ø%Ø4ð Jó ôð Ð+Ñ+Ü! -°Ñ">Ó?ÐÙ¡+ÜÜ×/Ñ/×9Ñ9Ø'óç‘& Ð.A�&ÓBôð Ð'Ñ'Ü˜}¨YÑ7Ó8ÐÙ™{ÜÜ×/Ñ/×9Ñ9Ø$óç‘&Ø!Ø*ð ó ôô 
ˆ"…Ir7   c                  ó.  — t        «       j                  } t        | «      j                  }dj	                  t        |j                  «      t        |j                  «      «      }t        t        j                  j	                  |¬«      «       t        d«       y )Nz{}/{}©ÚdaterX   )r!   rD   r   ÚeolrE   rH   ÚmonthÚyearr:   r   ÚSS_INTERIM_SUPPORT)rD   Úeol_daterÑ   s      r8   Ú_print_interim_release_supportr×      se   € ÜÓ×&Ñ&€FÜ˜vÓ&×*Ñ*€HØ�>‰>œ#˜hŸn™nÓ-¬s°8·=±=Ó/AÓB€DÜ	Œ(×
%Ñ
%×
,Ñ
,°$Ð
,Ó
7Ô8Ü	ˆ"…Ir7   c                  ó  — t        «       j                  } t        | «      rRt        | «      j                  }t        t        j                  j                  t        |j                  «      ¬«      «       y t        t        j                  «       y )NrÐ   )r!   rD   r#   r   rÒ   r:   r   ÚSS_LTS_SUPPORTrE   rH   rÔ   ÚSS_NO_SECURITY_COVERAGE)rD   rÖ   s     r8   Ú_print_lts_supportrÛ   ¨  s[   € ÜÓ×&Ñ&€FÜ�FÔÜ" 6Ó*×.Ñ.ˆÜŒh×%Ñ%×,Ñ,´#°h·m±mÓ2DÐ,ÓEÕFäŒh×.Ñ.Õ/r7   rg   rÂ   Úservice_statusÚservice_applicabilityÚinstalled_updatesÚavailable_updatesr†   c                 ó  — t        «       j                  }t        |«      j                  }|t        j
                  k(  r6t        j                  j                  || t        |j                  «      ¬«      }	n5t        j                  j                  | |t        |j                  «      ¬«      }	|r5|	dt        j                  j                  |«      j                  |¬«      z   z  }	|r5|	dt        j                  j                  |«      j                  |¬«      z   z  }	t        |	«       |rZ|t        j                   k(  rG|t"        j$                  k(  r4t        d«       t        t        j&                  j                  | ¬«      «       t        d«       y )N)rÂ   rg   rÔ   )rg   rÂ   rÔ   r¿   )r    rX   ©rg   )r!   rD   r   Úeol_esmr   rŠ   r   ÚSS_SERVICE_ENABLEDrE   rH   rÔ   ÚSS_SERVICE_ADVERTISEÚSS_SERVICE_ENABLED_COUNTSrÆ   ÚSS_SERVICE_ADVERTISE_COUNTSr:   ÚDISABLEDr   Ú
APPLICABLEÚSS_SERVICE_COMMAND)
rg   rÂ   rÜ   rÝ   rÞ   rß   r†   rD   Úeol_date_esmÚmessages
             r8   Ú_print_service_supportrì   ±  sc  € ô Ó×&Ñ&€FÜ" 6Ó*×2Ñ2€LØÔ*×2Ñ2Ò2Ü×-Ñ-×4Ñ4Ø!ØÜ�\×&Ñ&Ó'ð 5ó 
‰ô ×/Ñ/×6Ñ6ØØ!Ü�\×&Ñ&Ó'ð 7ó 
ˆñ Ø�3œ×;Ñ;×EÑEØó
ç
‰&Ø%ð ó 
ñ
ñ 	
ˆñ Ø�3œ×=Ñ=×GÑGØó
ç
‰&Ø%ð ó 
ñ
ñ 	
ˆô
 
ˆ'„Nñ 	ØÔ/×8Ñ8Ò8Ø!Ô%8×%CÑ%CÒCäˆbŒ	ÜŒh×)Ñ)×0Ñ0¸Ð0ÓAÔBä	ˆ"…Ir7   c                  óR  — t        «       } | €%t        t        j                  «       t        d«       y t	        j
                  t        j                  «      }|| z
  }|j                  dkD  r?t        t        j                  j                  |j                  ¬«      «       t        d«       y y )NrX   r   )Údays)r   r:   r   ÚSS_UPDATE_UNKNOWNr   Únowr   Úutcrî   ÚSS_UPDATE_DAYSrE   )Úlast_apt_updaterð   Útime_since_updates      r8   Ú_print_apt_update_callrõ   ã  s‚   € Ü,Ó.€OØÐÜŒh×(Ñ(Ô)ÜˆbŒ	Øä
�,‰,”x—|‘|Ó
$€CØ˜oÑ-ÐØ×Ñ Ò!ÜŒh×%Ñ%×,Ñ,Ð2C×2HÑ2HÐ,ÓIÔJÜˆb�	ð "r7   c           
      ó(  — t        | «      }t        | «      }|j                  «       d   }|j                  «       d   }|j                  «       d   }|j                  «       d   }t	        «       j
                  }t        «       }t        | «      d   }	t        «       }
t        |
d   |
d   z   |
d   z   «      d   }t        |
d   |
d   z   |
d   z   «      d   }t        |
«       t        t        j                  «       t        d	«       t        «        |s/t        |«      r
t!        «        t        t        j"                  «       y |t$        j&                  k(  r
t)        «        |	rt        t        j*                  «       nt        t        j,                  «       t        d	«       t/        dd
||t1        |
d   «      t1        |«      |	¬«       |
d   s
|
d   s|
d   r't/        dd||t1        |
d   «      t1        |«      |	¬«       |	st        t        j2                  «       y y )Nr   rr   r¥   r§   r$   r©   r«   r%   rX   rÀ   ©rg   rÂ   rÜ   rÝ   rÞ   rß   r†   rÃ   )r   r   r‰   Úapplicability_statusr!   rD   r"   r�   rV   rƒ   rÎ   r:   r   ÚSS_HELP_CALLrõ   r#   r×   ÚSS_NO_INTERIM_PRO_SUPPORTr   rç   rÛ   ÚSS_IS_ATTACHEDÚSS_IS_NOT_ATTACHEDrì   r]   ÚSS_LEARN_MORE)r„   Úesm_infra_entÚesm_apps_entÚesm_infra_statusÚesm_infra_applicabilityÚesm_apps_statusÚesm_apps_applicabilityrD   Úis_ltsr†   r¸   Ú"security_upgradable_versions_infraÚ!security_upgradable_versions_appss                r8   Úsecurity_statusr  ñ  s  € Ü'¨Ó,€MÜ% cÓ*€Là$×7Ñ7Ó9¸!Ñ<ÐØ+×@Ñ@ÓBÀ1ÑEÐØ"×5Ñ5Ó7¸Ñ:€OØ)×>Ñ>Ó@ÀÑCÐäÓ×&Ñ&€FÜ"Ó$€FÜ˜cÓ" :Ñ.€Kä9Ó;ÐÜ)7Ø˜6Ñ"Ø
˜\Ñ
*ñ	+à
˜[Ñ
)ñ	*ó*ð ñ	*Ð&ô )7Ø˜:Ñ&Ø
˜\Ñ
*ñ	+à
˜ZÑ
(ñ	)ó)ð ñ	)Ð%ô Ð-Ô.ä	Œ(×
Ñ
Ô Ü	ˆ"„IäÔáÜ˜ÔÜ*Ô,ÜŒh×0Ñ0Ô1ØàÔ,×5Ñ5Ò5ÜÔáÜŒh×%Ñ%Õ&äŒh×)Ñ)Ô*Ü	ˆ"„IäØØ$Ø'Ø5ÜÐ0°Ñ=Ó>ÜÐ@ÓAØõð 	˜:Ò&Ø˜lÒ+Ø˜jÒ)äØØ,Ø*Ø"8Ü!Ð"4°ZÑ"@ÓAÜ!Ð"CÓDØ#õ	
ñ ÜŒh×$Ñ$Õ%ð r7   c                  ó¦  — t        «       } | d   }|D �cg c]  }|j                  ‘Œ }}t        | dd¬«       |r{t        t        j
                  «       t        d«       t        t        j                  «       t        |«       t        t        j                  j                  t        |«      ¬«      «       y t        t        j                  «       y c c}w )Nr[   T©r»   r¼   rX   ©rS   )rV   rv   rÎ   r:   r   ÚSS_THIRD_PARTYÚSS_PACKAGES_HEADERr=   ÚSS_SHOW_HINTrE   r   ÚSS_NO_THIRD_PARTY)r¸   Úthird_party_packagesrS   Úpackage_namess       r8   Úlist_third_party_packagesr  >  s¡   € Ü9Ó;ÐØ-¨mÑ<ÐØ1EÖF g�W—\“\ÐF€MÐFäØ }À$õñ ÜŒh×%Ñ%Ô&äˆbŒ	ÜŒh×)Ñ)Ô*Ü˜=Ô)ÜŒh×#Ñ#×*Ñ*´6¸-Ó3HÐ*ÓIÕJäŒh×(Ñ(Õ)ùò Gó   ”Cc                  ó¦  — t        «       } | d   }|D �cg c]  }|j                  ‘Œ }}t        | dd¬«       |r{t        t        j
                  «       t        d«       t        t        j                  «       t        |«       t        t        j                  j                  t        |«      ¬«      «       y t        t        j                  «       y c c}w )NrZ   Tr	  rX   r
  )rV   rv   rÎ   r:   r   ÚSS_UNAVAILABLEr  r=   r  rE   r   ÚSS_NO_UNAVAILABLE)r¸   Úunknown_packagesrS   r  s       r8   Úlist_unavailable_packagesr  R  s£   € Ü9Ó;ÐØ)¨)Ñ4ÐØ1AÖB g�W—\“\ÐB€MÐBäØ y¸dõñ ÜŒh×%Ñ%Ô&ÜˆbŒ	äŒh×)Ñ)Ô*Ü˜=Ô)ÜŒh×#Ñ#×*Ñ*´6¸-Ó3HÐ*ÓIÕJô 	Œh×(Ñ(Õ)ùò Cr  c           
      ó4  — t        «       }|d   }|d   |d   z   }||z   }t        «       }t        |«      d   }|D ]   \  }}|j                  |j                  «       Œ" t        «       j                  }	t        «       }
t        | «      }t        | «      }|j                  «       d   }|j                  «       d   }t        |D �cg c]  }|j                  ‘Œ c}«      }t        |D �cg c]  }|j                  ‘Œ c}«      }t        |D �cg c]*  }|j                  |vr|j                  |vr|j                  ‘Œ, c}«      }t        |dd¬«       |
s/t        |	«      r
t!        «        t#        t$        j&                  «       y |t(        j*                  k(  rt-        «        t#        d«       t/        dd||t1        |«      t1        |«      d	¬
«       t#        t$        j2                  j5                  d¬«      «       t#        d«       t        |	«      �s|r4t#        t$        j6                  j5                  d¬«      «       t9        |«       |r4t#        t$        j:                  j5                  d¬«      «       t9        |«       |xs |}|rY|r!t$        j<                  j5                  d¬«      }n t$        j>                  j5                  d¬«      }t#        |«       t9        |«       |r3t#        t$        j@                  j5                  tC        |«      ¬«      «       y y y c c}w c c}w c c}w )Nr$   r¥   r§   r   Tr	  rX   rÀ   Fr÷   rá   r
  )"rV   Úsetrƒ   Úaddru   r!   rD   r"   r   r   r‰   rø   Úsortedrv   rÎ   r#   r×   r:   r   rú   r   rç   rÛ   rì   r]   ÚSS_SERVICE_HELPrE   ÚSS_UPDATES_AVAILABLEr=   ÚSS_UPDATES_INSTALLEDÚSS_FURTHER_OTHER_PACKAGESÚSS_OTHER_PACKAGESr  r   )r„   r¸   Úinfra_packagesÚmr_packagesÚall_infra_packagesÚinfra_updatesÚsecurity_upgradable_versionsÚupdaterf   rD   r  rþ   rÿ   r   r  rS   Úinstalled_package_namesÚavailable_package_namesÚremaining_package_namesÚ	hint_listÚmsgs                        r8   Úlist_esm_infra_packagesr,  g  sÚ  € Ü9Ó;ÐØ'¨Ñ4€NØ$ VÑ,Ð/AÀ,Ñ/OÑO€Kà'¨+Ñ5Ðä“E€MÜ#1Ð2DÓ#EØñ$Ð ð 2ò -‰	ˆ�Ø×Ñ˜&×+Ñ+Õ,ð-ô Ó×&Ñ&€FÜ"Ó$€Fä'¨Ó,€MÜ% cÓ*€Là$×7Ñ7Ó9¸!Ñ<ÐØ*×?Ñ?ÓAÀ!ÑDÐä$Ø%3Ö4˜'ˆ�‹Ò4óÐô %Ø%2Ö3˜'ˆ�‹Ò3óÐô %ð .ö	
àØ�|‰|Ð#:Ñ:Ø—‘Ð$;Ñ;ð �L‹Lò	
óÐô Ø {Àõñ Ü˜ÔÜ*Ô,ÜŒh×0Ñ0Ô1ØàÔ,×5Ñ5Ò5ÜÔÜˆbŒ	äØØ$Ø'Ø5Ü˜nÓ-Ü˜mÓ,Øõô 
Œ(×
"Ñ
"×
)Ñ
)°+Ð
)Ó
>Ô?Ü	ˆ"„Iä˜ÕÙ"Ü”(×/Ñ/×6Ñ6¸{Ð6ÓKÔLÜÐ6Ô7á"Ü”(×/Ñ/×6Ñ6¸{Ð6ÓKÔLÜÐ6Ô7à+ÒFÐ/Fˆ	á"ÙÜ×8Ñ8×?Ñ?Ø'ð @ó ‘ô ×0Ñ0×7Ñ7ÀÐ7ÓL�Ü�#ŒJÜÐ6Ô7áÜ”(×'Ñ'×.Ñ.´v¸iÓ7HÐ.ÓIÕJð ð+  ùòQ 	5ùò 	4ùò	
s   Ã LÃ#LÄ/Lc           
      ój  — t        «       }|d   }|d   |d   z   }||z   }t        «       }t        |«      d   }|D ]   \  }}|j                  |j                  «       Œ" t        «       }	t        | «      }
|
j                  «       d   }|
j                  «       d   }t        |D �cg c]  }|j                  ‘Œ c}«      }t        |D �cg c]  }|j                  ‘Œ c}«      }t        |D �cg c]*  }|j                  |vr|j                  |vr|j                  ‘Œ, c}«      }t        |dd¬«       |	st        t        j                  «       y t        dd||t!        |«      t!        |«      d¬	«       t        t        j"                  j%                  d¬
«      «       t        d«       |�r|r4t        t        j&                  j%                  d¬
«      «       t)        |«       |r4t        t        j*                  j%                  d¬
«      «       t)        |«       |xs |}|rY|r!t        j,                  j%                  d¬
«      }n t        j.                  j%                  d¬
«      }t        |«       t)        |«       |r3t        t        j0                  j%                  t3        |«      ¬«      «       y y y c c}w c c}w c c}w )Nr%   r©   r«   r   Tr	  rÃ   Fr÷   rá   rX   r
  )rV   r  rƒ   r  ru   r"   r   r‰   rø   r  rv   rÎ   r:   r   rú   rì   r]   r  rE   r  r=   r  r  r   r  r   )r„   r¸   Úapps_packagesÚum_packagesÚall_apps_packagesÚapps_updatesr%  r&  rf   r  rÿ   r  r  rS   r'  r(  r)  r*  r+  s                      r8   Úlist_esm_apps_packagesr2  À  s™  € Ü9Ó;ÐØ& zÑ2€Mà˜:Ñ&Ð);¸LÑ)IÑIð ð &¨Ñ3Ðä“5€LÜ#1Ð2CÓ#DØñ$Ð ð 2ò ,‰	ˆ�Ø×Ñ˜×*Ñ*Õ+ð,ô #Ó$€Fä% cÓ*€LØ"×5Ñ5Ó7¸Ñ:€OØ)×>Ñ>Ó@ÀÑCÐä$Ø%2Ö3˜'ˆ�‹Ò3óÐô %Ø%1Ö2˜'ˆ�‹Ò2óÐô %ð -ö	
àØ�|‰|Ð#:Ñ:Ø—‘Ð$;Ñ;ð �L‹Lò	
óÐô Ø z¸tõñ ÜŒh×0Ñ0Ô1ØäØØ(Ø&Ø4Ü˜mÓ,Ü˜lÓ+Øõô 
Œ(×
"Ñ
"×
)Ñ
)°*Ð
)Ó
=Ô>Ü	ˆ"„IâÙ"Ü”(×/Ñ/×6Ñ6¸zÐ6ÓJÔKÜÐ6Ô7á"Ü”(×/Ñ/×6Ñ6¸zÐ6ÓJÔKÜÐ6Ô7à+ÒFÐ/Fˆ	ñ #ÙÜ×8Ñ8×?Ñ?Ø&ð @ó ‘ô ×0Ñ0×7Ñ7À
Ð7ÓK�Ü�#ŒJÜÐ6Ô7áÜ”(×'Ñ'×.Ñ.´v¸iÓ7HÐ.ÓIÕJð ð- ùòE 	4ùò 	3ùò	
s   Â!J&ÃJ+Ã'/J0)rJ   F)LÚcollectionsr   r   r   Úenumr   Ú	functoolsr   Úrandomr   Útypingr	   r
   r   r   r   rM   Úuaclientr   r   r   r   Ú5uaclient.api.u.pro.security.status.reboot_required.v1r   Ú(uaclient.api.u.pro.status.is_attached.v1r   Úuaclient.aptr   r   r   r   r   Úuaclient.configr   Úuaclient.entitlementsr   r   Ú(uaclient.entitlements.entitlement_statusr   r   r   Úuaclient.systemr   r    r!   r"   r#   rb   r'   r=   rF   ÚPackagerV   rN   rH   rO   Úboolrm   ÚVersionrz   rƒ   r�   rš   r¡   r¹   rÎ   r×   rÛ   Úintrì   rõ   r  r  r  r,  r2  r6   r7   r8   ú<module>rD     sÒ  ðÝ #ß 'Ý Ý Ý ß 6Õ 6ã ç :Ó :õõ B÷õ õ %ß I÷ñ ÷
õ ð )€ô(�4ô (ò2ñ �4Ôñó ððØ��t˜GŸO™OÑ,Ð,Ñ-óð*"Ø�_‰_ð"Ø)0×)9Ñ)9ð"àó"ñJ �4Ôð˜sð ¨Sð °Tò ó ðð*Øð*à�#�s�(‰^ð*ð �_‰_ð*ð 	ó	*ð8=Ø�7—?‘?Ñ#ð=à��d˜5 §¡°#Ð!5Ñ6Ñ7Ð7Ñ8ó=ð@�Xð  $ s¨C x¡.ó ðB $ t¨C°¨H¡~Ñ"6ó ð0Ø$ S¨$¨u°W·_±_ÀcÐ5IÑ/JÑ*KÐ%KÑLðà�#�s�(‰^ðð 
ˆ$ˆs�Cˆx‰.Ñóð,/˜hð /¨4°°S°©>ó /ðh Øñ<Ø˜s D¨¯©Ñ$9Ð9Ñ:ð<àð<ð ð<ð 
ó	<ò~ò0ð/Øð/àð/ð &ð/ð /ð	/ð
 ð/ð ð/ð ó/òdðJ&˜ó J&òZ*ò(*ò*VKórPKr7   