+
    gr                     P   ^ 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HtHt ^ RIHtHt ^ RIHt ^ RIHtHt ^ RIHtHt ^ RIHtHtHt ^ R	IHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2 ^ R
I3H4t4 ^ RI3H5t6 ^ RI7H8t8 ^ RI7H5t9 ^ RI:H;t;H<t< ^ RI=H>t> ^ RI?H@t@HAtAHBtB ^ RICHDtD ^ RIEHFtF ^ RIGHHtHHItIHJtJ ^ RIKHLtL ^ RIMHNtN ^ RIOHPtP ^ RIQHRtRHStSHTtT ^ RIUHVtV ^ RIWHXtX ^ RIYHZtZ ^ RI[H\t\  ! R R4      t]R R lt^R R  lt_R! R" lt`R# R$ ltaR]R% R& lltbR' R( ltcR) R* ltdR+ R, lteR- R. ltfR/ R0 ltgR1 R2 lthR3 R4 ltiR5 R6 ltjR7 R8 ltkR^R9 R: lltlR; R< ltmR= R> ltnR? R@ ltoRA RB ltpRC RD ltqRE RF ltrRG RH ltsRI RJ lttRK RL ltuRM RN ltvRO RP ltw]>P                  ! RQRR7      RS 4       ty]B! RQ]P                  ]P                  ]y]FP                  RT]A! ]@! RU]P                  RV7      ]@! RW]P                  RXRY7      ]@! RZ]P                  RXRY7      .R[7      .R\7      tR# )_    N)DictList
NamedTupleOptionalSetTupleUnion)apt
exceptionsmessagessystemutil)attach_with_tokenenable_entitlement_by_name)	_initiate)MagicAttachRevokeOptions_revoke)MagicAttachWaitOptions_wait)	FixStatusUnfixedPackagestatus_message)ESM_APPS_POCKETESM_INFRA_POCKETSTANDARD_UPDATES_POCKETFixPlanAptUpgradeStepFixPlanAttachStepFixPlanEnableStepFixPlanNoOpAlreadyFixedStepFixPlanNoOpLivepatchFixStepFixPlanNoOpStatusFixPlanNoOpStepFixPlanResultFixPlanStepFixPlanUSNResultFixPlanWarning"FixPlanWarningFailUpdatingESMCache&FixPlanWarningPackageCannotBeInstalled#FixPlanWarningSecurityIssueNotFixedNoOpAlreadyFixedDataNoOpLivepatchFixDataUSNAdditionalData)CVEFixPlanOptions)_plan)USNFixPlanOptions)ContractExpiryStatus_is_attached)cli_util)ProArgumentProArgumentGroup
ProCommand)action_detach)HelpCategory)CLOUD_TYPE_TO_TITLEPRO_CLOUD_URLSget_cloud_typeUAConfig)PRINT_WRAP_WIDTH)entitlement_factory)ApplicabilityStatusCanEnableFailureUserFacingStatus)notices)Notice)PRO_HOME_PAGE)colorize_commandsc                   `   a  ] tR t^Qt o V 3R lR ltR tR
V 3R lR lltV 3R lR ltR	tV t	R# )
FixContextc                B   < V ^8  d   QhRS[ RS[RS[S[ ,          RS[/# )   titledry_runaffected_pkgscfg)strboolr   r<   )format__classdict__s   "2/usr/lib/python3/dist-packages/uaclient/cli/fix.py__annotate__FixContext.__annotate__R   s7     ( (( ( Cy	(
 (    c                    ^ V n         . V n        \        4       V n        \        P
                  V n        Wn        W0n        W n	        W@n
        RV n        RV n        RV n        R# )r   TFN)	pkg_indexunfixed_pkgssetinstalled_pkgsr   SYSTEM_NON_VULNERABLE
fix_statusrJ   rL   rK   rM   should_print_pkg_header warn_package_cannot_be_installedfixed_by_livepatch)selfrJ   rK   rL   rM   s   &&&&&rR   __init__FixContext.__init__R   sW     !e#99
*'+$05-"'rU   c           	     l   V P                   '       d   \        P                  P                  \	        V P                   4      4      P                  \	        V P                   4      R P                  \        V P                   4      4      R7      p\        \        P                  ! V\        RRR7      4       R# R# ), )countpkgs    F)widthsubsequent_indentreplace_whitespaceN)rL   r   SECURITY_AFFECTED_PKGS	pluralizelenrP   joinsortedprinttextwrapfillr=   )r`   msgs   & rR   print_fix_headerFixContext.print_fix_headere   s    11;;D&&'f$,,-YYvd&8&89:    *&,',	 rU   Nc                L   < V ^8  d   QhRS[ S[,          RS[RS[S[,          /# )rI   source_pkgsstatuspocket)r   rN   r   )rP   rQ   s   "rR   rS   rT   v   s1      #Y  	rU   c                    V P                   '       dL   \        \        TTV P                  \	        V P
                  4      V'       d   \        V4      MR R7      4       R # R # )N)pkg_listrx   rW   num_pkgspocket_source)r]   rp   _format_packages_messagerW   rm   rL   get_pocket_description)r`   rw   rx   ry   s   &&&&rR   print_pkg_headerFixContext.print_pkg_headerv   sM     '''((!"nn !3!34:@.v6d
 (rU   c                6   < V ^8  d   QhRS[ S[,          RS[/# )rI   rf   unfixed_reasonr   rN   )rP   rQ   s   "rR   rS   rT      s      c C rU   c                b    V F(  pV P                   P                  \        W2R 7      4       K*  	  R# ))pkgr   N)rX   appendr   )r`   rf   r   r   s   &&& rR   add_unfixed_packagesFixContext.add_unfixed_packages   s(    C$$3F rU   )rL   rM   rK   r\   r_   rZ   rW   r]   rJ   rX   r^   N)
__name__
__module____qualname____firstlineno__ra   rt   r   r   __static_attributes____classdictcell__)rQ   s   @rR   rG   rG   Q   s(     ( (&" & rU   rG   c                $    V ^8  d   QhR\         /# )rI   cve)r#   )rP   s   "rR   rS   rS      s      - rU   c                     R P                  V P                  P                  4       V P                  R7      RP                  V P                  P                  4       4      .p\	        RP                  V4      4       R# ){issue}: {description}issuedescriptionz! - https://ubuntu.com/security/{}
N)rP   rJ   upperr   rp   rn   )r   liness   & rR   print_cve_headerr      s^     ''))//# 	( 	
 	,22399??3DE	E 
$))E
rU   c                $    V ^8  d   QhR\         /# )rI   fix_plan)r%   )rP   s   "rR   rS   rS      s      / rU   c           	         V P                   pR P                  VP                  P                  4       VP                  R7      .pVP
                  p\        V\        4      '       d   VP                  '       d|   VP                  \        P                  4       VP                   FK  pVP                  RP                  \        P                  P                  P                  VR7      4      4       KM  	  M\VP                  '       dK   VP                  \        P                  4       VP                   F  pVP                  RV,           4       K  	  \!        RP#                  V4      4       R# )r   r   z - {}r   z - r   N)target_usn_planrP   rJ   r   r   additional_data
isinstancer,   associated_cvesr   r   SECURITY_FOUND_CVESurlsSECURITY_CVE_PAGEassociated_launchpad_bugsSECURITY_FOUND_LAUNCHPAD_BUGSrp   rn   )r   
target_usnr   r   r   lp_bugs   &     rR   print_usn_headerr      s   ))J ''""((*
8N8N 	( 	
E !00O/#455***LL556&66NN 77>>3>G 7 666LL??@)CCUV^, D 
$))E
rU   c                <    V ^8  d   QhR\         R\        R\        /# )rI   security_issuerK   rM   rN   rO   r<   )rP   s   "rR   rS   rS      s!      C $ X rU   c                    \        \        V .R 7      VR7      pVP                  P                  ^ ,          P                  pV'       d]   VP
                  '       dK   \        P                  ! \        P                  ! VP                  ;'       g    RVP
                  4      R7      h\        VP                  P                  ^ ,          4       \        4        \        VP                  P                  ^ ,          W4      w  rVV# ))cvesoptionsrM   unexpected-error	named_msg)cve_planr-   	cves_datar   errorrs   r   AnonymousUbuntuProErrorr   NamedMessagecoder   rp   execute_fix_plan)r   rK   rM   r   r   rx   _s   &&&    rR   fix_cver      s    !'78cH ##A&,,E00++

000%))
 	

 X'',,Q/0	G !3!3!8!8!;WJIFMrU   c                H    V ^8  d   QhR\         R\        R\        R\        /# )rI   r   rK   
no_relatedrM   r   )rP   s   "rR   rS   rS      s2     d dd"&d48d?GdrU   c           	      `   \        \        V .R 7      VR7      pVP                  P                  ^ ,          P                  P
                  pV'       d]   VP                  '       dK   \        P                  ! \        P                  ! VP                  ;'       g    RVP                  4      R7      h\        VP                  P                  ^ ,          4       \        R\        P                  P                  V R7      ,           4       \!        VP                  P                  ^ ,          P                  VV4      w  rgV\"        P$                  \"        P&                  39  d   V# VP                  P                  ^ ,          P(                  pV'       d	   V'       d   V# \        R\        P*                  P                  RP-                  R V 4       4      R7      ,           4       \        R\        P.                  ,           4       / p	V FJ  p
\        R	P                  V
P0                  4      4       \!        V
VV4      WP0                  &   \        4        KL  	  \        \        P2                  4       \5        VV \        P6                  R
7       RpV F  p
WP0                  ,          w  r\5        VV
P0                  \        P8                  R
7       V\"        P:                  8X  d3   \        R\        P<                  P                  RR7      ,           4       RpV\"        P>                  8X  g   K  V FF  pVP@                  '       g   K  \        RP                  VPB                  VP@                  4      4       KH  	  RpK  	  V'       d1   \        R\        PD                  P                  V R7      ,           4       V# ))usnsr   r   r   r   )issue_idz
- c              3   8   "   T F  qP                   x  K  	  R # 5ir   )rJ   ).0usns   & rR   	<genexpr>fix_usn.<locals>.<genexpr>   s     $L:K3YY:Ks   )related_usnsz- {})contextF- fix operation	operationTz
  - {}: {})#usn_planr/   	usns_datar   r   r   rs   r   r   r   r   r   r   rp   SECURITY_FIXING_REQUESTED_USNrP   r   r   r[   SYSTEM_NOT_AFFECTEDrelated_usns_planSECURITY_RELATED_USNSrn   SECURITY_FIXING_RELATED_USNSrJ   SECURITY_USN_SUMMARY_handle_fix_status_messageFIX_ISSUE_CONTEXT_REQUESTEDFIX_ISSUE_CONTEXT_RELATEDSYSTEM_VULNERABLE_UNTIL_REBOOTENABLE_REBOOT_REQUIRED_TMPLSYSTEM_STILL_VULNERABLEr   r   SECURITY_RELATED_USN_ERROR)r   rK   r   rM   r   r   target_usn_statusr   r   related_usn_statusrelated_usn_planfailure_on_related_usnrx   rX   unfixed_pkgs   &&&&           rR   fix_usnr      s!    !'78cH ##A&66<<E00++

000%))
 	

 X'',,Q/0	

0
0
7
7# 8 
	
 ,"22 ''%%!  !  **//2DD
  	

(
(
/
/$L:K$LL 0 
	
 
$66
67
  .fmm,22345E6
112
 	 . 
(
'
'(44 #-12H2HI"""66	
 Y===66==- >  &*"Y666+---$++'OO[-G-G  , &*"1 .4 1188' 9 	
 rU   c                    V ^8  d   QhR\         \        ,          R\        R\        R\        R\        \        ,          R\        /# )rI   r{   rx   rW   r|   r}   return)r   rN   intr   )rP   s   "rR   rS   rS   /  sT     N N3iNN N 	N
 C=N 	NrU   c           
        V '       g   R# . p. pV  F=  pV^,          pVP                  RP                  W#4      4       VP                  V4       K?  	  \        P                  ! RP                  RRP	                  V4      ,           R,           RP	                  \        V4      4      4      \        RR7      pR	P                  V\        W4      4      # )
z;Format the packages and status to an user friendly message. z{}/{}z{} {}:(rd   )rg   rh   ri   z{}
{})r   rP   rq   rr   rn   ro   r=   r   )	r{   rx   rW   r|   r}   	msg_indexsrc_pkgssrc_pkg
msg_headers	   &&&&&    rR   r~   r~   /  s     IHQ		<=  
 $))I&&,diix8H.I	
  J ??:~f'LMMrU   c                <    V ^8  d   QhR\         R\        R\        /# )rI   rM   tokenr   r<   rN   rO   )rP   s   "rR   rS   rS   K  s!         rU   c                    \        \        RRV..4      4        \        WRR7       R#   \        P                   d!   p\        TP
                  4        Rp?R# Rp?ii ; i)zlAttach to an Ubuntu Pro subscription with a given token.

:return: True if attach performed without errors.
proattachT)r   allow_enableNF)rp   rE   r   r   UbuntuProErrorrs   )rM   r   errs   && rR   _run_ua_attachr   K  sR    
 

eXu56
78#>$$ cggs   ) AAAc                    V ^8  d   QhRR/# )rI   r   N )rP   s   "rR   rS   rS   Y  s     	
 	
D 	
rU   c                     \        4       w  rV \        P                  ! 4       9   dU   \        \        P
                  P                  \        P                  ! V 4      \        P                  ! V 4      R7      4       R# R# )z:Alert the user when running Pro on cloud with PRO support.)rJ   cloud_specific_urlN)	r:   r9   keysrp   r   SECURITY_USE_PRO_TMPLrP   r8   get)
cloud_typer   s     rR   *_inform_ubuntu_pro_existence_if_applicabler  Y  s_    "$MJ^((****11)--j9#1#5#5j#A 2 	
 +rU   c                $    V ^8  d   QhR\         /# )rI   rM   r;   )rP   s   "rR   rS   rS   e  s     9 9x 9rU   c                 $   \        \        P                  4       \        V R 7      p\        R\        P                  P                  VP                  R7      ,           4       \        VP                  R7      p \        W R7      p\        R\        P                  ,           4       \!        YP"                  4      #   \        P                   dC   p\        \        P                  4       \        TP                  R7      p\        YPR7       ThRp?ii ; i))rM   r   )	user_code)magic_tokenr   N)rp   r   CLI_MAGIC_ATTACH_INITr   CLI_MAGIC_ATTACH_SIGN_INrP   r  r   r   r   r   MagicAttachTokenErrorCLI_MAGIC_ATTACH_FAILEDr   r   CLI_MAGIC_ATTACH_PROCESSINGr   contract_token)rM   initiate_respwait_options	wait_resperevoke_optionss   &     rR   _perform_magic_attachr  e  s    	(
(
()#&M	

+
+
2
2#-- 3 
	
 *m6I6IJL	,8	 
$55
56#7788 ++ h../1%++
 	0s   7B8 8D=D

Dc                0    V ^8  d   QhR\         R\        /# rI   rM   r   r<   rO   )rP   s   "rR   rS   rS     s      H  rU   c                >   \        4        \        \        P                  4       \        P
                  ! \        P                  . ROR7      pVR8X  d   R# VR8X  d   \        V 4      # VR8X  d0   \        \        P                  4       \        R4      p\        W4      # R# )	zRPrompt for attach to a subscription or token.

:return: True if attach performed.
sacvalid_choicesF> T)r  r  r  )r  rp   r   *SECURITY_UPDATE_NOT_INSTALLED_SUBSCRIPTIONr   prompt_choicesSECURITY_FIX_ATTACH_PROMPTr  PROMPT_ENTER_TOKENinputr   )rM   choicer   s   &  rR   _prompt_for_attachr#    s~    
 /0	(
=
=>  ++%F }}$S))}h))*dc))rU   c                F    V ^8  d   QhR\         \        ,          R\        /# )rI   rX   r   r   )rP   s   "rR   rS   rS     s      tCy S rU   c           
         \        V 4      p\        P                  ! \        P                  P                  V4      P                  VRP                  \        V 4      4      R7      \        RR7      # )zFormat the list of unfixed packages into an message.

:returns: A string containing the message output for the unfixed
          packages.
rd   )r|   rf   rg   r   )
rm   rq   rr   r   SECURITY_PKG_STILL_AFFECTEDrl   rP   rn   ro   r=   )rX   num_pkgs_unfixeds   & rR   _format_unfixed_packages_msgr(    sb     <(==,,66	

&%6,/0  
  	 	rU   c                <    V ^8  d   QhR\         R\        R\        /# )rI   rM   rK   r   r  )rP   s   "rR   rS   rS     s!       4 D rU   c                    \        V 4      P                  pV'       dE   V\        P                  P                  8X  d&   V'       d   \        \        P                  4       R# R# R# )zmCheck if the Ubuntu Pro subscription is expired.

:returns: True if subscription is expired and not renewed.
FT)r1   contract_statusr0   EXPIREDvaluerp   r   (SECURITY_DRY_RUN_UA_EXPIRED_SUBSCRIPTION)rM   rK   contract_expiry_statuss   && rR   _check_subscription_is_expiredr0    sG    
 *#.>>"&:&B&B&H&HH(CCDrU   c                0    V ^8  d   QhR\         R\        /# r  r  )rP   s   "rR   rS   rS     s      x D rU   c                   ^ RI p\        4        \        \        P                  4       \
        P                  ! \        P                  P                  \        R7      RR.R7      pVR8X  dd   \        \        P                  4       \        R4      p\        \        RR..4      4       \        VP                  R	R
R7      V 4       \        W4      # R# )z\Prompt for attach a new subscription token to the user.

:return: True if attach performed.
N)urlrr  r  r  r   detachTcli)
assume_yesrP   F)argparser  rp   r   %SECURITY_UPDATE_NOT_INSTALLED_EXPIREDr   r  SECURITY_FIX_RENEW_PROMPTrP   rD   PROMPT_EXPIRED_ENTER_TOKENr!  rE   r6   	Namespacer   )rM   r8  r"  r   s   &   rR   _prompt_for_new_tokenr=    s    
 .0	(
8
89  **11m1DCjF }h112d%!2 345h((D(GMc))rU   c                <    V ^8  d   QhR\         R\        R\        /# )rI   rM   servicer   r   )rP   s   "rR   rS   rS     s!      H s t rU   c                   \        \        P                  P                  VR7      4       \        P
                  ! \        P                  P                  VR7      RR.R7      pVR8X  dx   \        \        RRV..4      4       \        WR7      w  r4V'       gH   VeD   \        V\        4      '       d.   VP                  e    \        VP                  P                  4       V# R# )	zEPrompt for enable a pro service.

:return: True if enable performed.
r?  r  r  r  r   enablerM   nameF)rp   r   SECURITY_SERVICE_DISABLEDrP   r   r  SECURITY_FIX_ENABLE_PROMPTrE   r   r   r@   messagers   )rM   r?  r"  retreasons   &&   rR   _prompt_for_enablerJ    s    
 
(
,
,
3
3G
3
DE  ++2272CCjF
 }%7!; <=>0SG "6#344~~)fnn(()
rU   c                H    V ^8  d   QhR\         R\        R\        R\        /# )rI   r?  rM   rK   r   )rN   r<   rO   )rP   s   "rR   rS   rS     s,     ( (((*.(	(rU   c                d   \        WR7      pV'       Ed   VP                  4       w  rEV\        P                  8X  d   R# VP	                  4       w  reV\
        P                  8X  d   V'       d=   \        R\        P                  P                  VP                  R7      ,           4       R# \        WP                  4      '       d   R# \        \        P                  P                  VP                  R7      4        R# \        \        P                  P                  VP                  R7      4       R# )zI
Verify if the Ubuntu Pro subscription has the required service enabled.
rC  Tr   rA  F)r>   user_facing_statusrA   ACTIVEapplicability_statusr?   
APPLICABLErp   r   'SECURITY_DRY_RUN_UA_SERVICE_NOT_ENABLEDrP   rD  rJ  SECURITY_UA_SERVICE_NOT_ENABLED SECURITY_UA_SERVICE_NOT_ENTITLED)r?  rM   rK   ent
ent_statusr   rO  s   &&&    rR   )_handle_subscription_for_required_servicerV    s     #
4C
s..0
)000"%":":"<#6#A#AAFFMM # N  !#xx00<<CC # D   99@@HH A  rU   c                <    V ^8  d   QhR\         R\        R\        /# )rI   rx   r   r   )r   rN   )rP   s   "rR   rS   rS     s$     "3 "3"3!$"3/2"3rU   c                    V \         P                  8X  dk   V'       d"   \        P                  P	                  WR 7      pM \        P
                  P	                  VR7      p\        \        P                  ! V4      4       R# V \         P                  8X  dk   V'       d"   \        P                  P	                  WR 7      pM \        P                  P	                  VR7      p\        \        P                  ! V4      4       R# V \         P                  8X  dk   V'       d"   \        P                  P	                  WR 7      pM \        P                  P	                  VR7      p\        \        P                  ! V4      4       R# V'       d"   \        P                  P	                  WR 7      pM \        P                  P	                  VR7      p\        \        P                  ! V4      4       R# ))r   r   )r   N)r   r[   r   %SECURITY_ISSUE_RESOLVED_ISSUE_CONTEXTrP   SECURITY_ISSUE_RESOLVEDrp   r   handle_unicode_charactersr   'SECURITY_ISSUE_UNAFFECTED_ISSUE_CONTEXTSECURITY_ISSUE_UNAFFECTEDr   )SECURITY_ISSUE_NOT_RESOLVED_ISSUE_CONTEXTSECURITY_ISSUE_NOT_RESOLVED)rx   r   r   rs   s   &&& rR   r   r     sn    000@@GG H C 22999ICd,,S12	900	0BBII J C 44;;(;KCd,,S12	9;;	;DDKK L C 66==H=MCd,,S12DDKK L C 66==H=MCd,,S12rU   c                $    V ^8  d   QhR\         /# )rI   ry   )rN   )rP   s   "rR   rS   rS   ?  s      3 rU   c                     V \         8X  d   \        P                  # V \        8X  d   \        P                  # V \
        8X  d   \        P                  # V # r   )r   r   'SECURITY_UBUNTU_STANDARD_UPDATES_POCKETr   SECURITY_UA_INFRA_POCKETr   SECURITY_UA_APPS_POCKET)ry   s   &rR   r   r   ?  sE    ((???	#	#000	?	"///rU   c                0    V ^8  d   QhR\         R\        /# rI   fix_contextstep)rG   r(   )rP   s   "rR   rS   rS   J  s     ? ??
0?rU   c                    V P                  VP                  P                  R VP                  P                  R7       RV n        \
        P                  P                  VP                  P                  VP                  P                  R7      p\        RV,           4       V P                  VP                  P                  .VR7       RV n        \        P                  V n        R# )releasedrw   rx   ry   F)packageversionr   rf   r   TN)r   datarelated_source_packagesry   r]   r   FIX_CANNOT_INSTALL_PACKAGErP   binary_packagebinary_package_versionrp   r   source_packager^   r   r   r\   )rg  rh  warn_msgs   && rR   )_execute_package_cannot_be_installed_steprv  J  s       II55yy ! 
 +0K'2299		((		00 : H 
$/$$ii&&' %  48K0&>>KrU   c                0    V ^8  d   QhR\         R\        /# rf  )rG   r)   )rP   s   "rR   rS   rS   c  s     ? ??#F?rU   c                    V P                  VP                  P                  VP                  P                  R 7       V ;P                  \        VP                  P                  4      ,          un        V P                  VP                  P                  \        VP                  P                  4      R7       \        P                  V n
        R# ))rw   rx   rn  N)r   ro  source_packagesrx   rW   rm   r   r   r   r   r\   rg  rh  s   &&rR   &_execute_security_issue_not_fixed_stepr{  c  s       II--yy !  S!:!:;;$$YY&&%dii&6&67 %  '>>KrU   c                0    V ^8  d   QhR\         R\        /# rf  )rG   r'   )rP   s   "rR   rS   rS   s  s      O OO#EOrU   c                     \         P                  ! 4       '       d   \        \        P                  4       R# \        R \        P
                  ,           R ,           4       R# )r   N)r   we_are_currently_rootrp   r   CLI_FIX_FAIL_UPDATING_ESM_CACHE(CLI_FIX_FAIL_UPDATING_ESM_CACHE_NON_ROOTrz  s   &&rR   %_execute_fail_updating_esm_cache_stepr  s  s9     !!##h667dXFFFMNrU   c                0    V ^8  d   QhR\         R\        /# rf  )rG   r   )rP   s   "rR   rS   rS   |  s      ;A ;A;A
;ArU   c                    V P                  VP                  P                  R VP                  P                  R7       V ;P                  \        VP                  P                  4      ,          un        VP                  P                  '       gC   V P                  '       g   \        \        P                  4       \        P                  V n        R# \        P                  ! 4       '       gx   V P                   '       gf   \        \        P"                  4       \        P$                  V n        V P'                  VP                  P                  \        P"                  R7       R# \        \)        . R	O. R
O,           \+        VP                  P                  4      ,           .4      4       V P                   '       d   \        P                  V n        R#  \,        P.                  ! 4        \,        P0                  ! . ROVP                  P                  ,           RR/R7       \        P                  T n        RT n        T P:                  P=                  TP                  P                  4       R#   \2         di   p\5        TR\7        T4      4      p\        T4       \        P$                  T n        T P'                  TP                  P                  TR7        Rp?R# Rp?ii ; i)rj  rk  Nrn  DEBIAN_FRONTENDnoninteractive)cmdoverride_env_varsrs   T)r
   updatez&&)r
   install--only-upgrade-y)zapt-getr  r  r  )r   ro  ry  ry   rW   rm   binary_packagesr^   rp   r   SECURITY_UPDATE_INSTALLEDr   r[   r\   r   r~  rK   SECURITY_APT_NON_ROOTr   r   rE   ro   r
   run_apt_update_commandrun_apt_command	ExceptiongetattrrN   r]   rZ   r  )rg  rh  r  rs   s   &&  rR   _execute_apt_upgrade_stepr  |  s      II--yy ! 
 S!:!:;;99$$$;;;(445!*!@!@%%''0C0C0Ch,,-!*!B!B((**#99 	) 	
 		'<=2234	
 !*!@!@""$>ii''(02BC	
 '<<K*.K'%%dii&?&?@  aA'c
!*!B!B((** 	) 	
 	s   AI* *K5AKKc                0    V ^8  d   QhR\         R\        /# rf  )rG   r   )rP   s   "rR   rS   rS     s     ,= ,=,=
,=rU   c                 b   VP                   P                  R 8X  d   \        M\        pV P	                  VP                   P
                  RVR7       RV n        \        V P                  4      P                  '       g   V P                  '       d#   \        R\        P                  ,           4       EMj\        V P                  4      '       gq   \        P                   V n        V P%                  VP                   P
                  \        P&                  P)                  VP                   P                  R7      R7       R# M\+        V P                  V P                  R7      '       d   V P                  '       d   \        \        P,                  4       M\/        V P                  4      '       gq   \        P                   V n        V P%                  VP                   P
                  \        P0                  P)                  VP                   P                  R7      R7       R# \        P2                  V n        R# )		esm-infrarj  rk  Fr   rA  rn  N)rM   rK   )ro  required_servicer   r   r   ry  r]   r1   rM   is_attachedrK   rp   r    SECURITY_DRY_RUN_UA_NOT_ATTACHEDr#  r   r   r\   r   SECURITY_UA_SERVICE_REQUIREDrP   r0  r.  r=  $SECURITY_UA_SERVICE_WITH_EXPIRED_SUBr[   rg  rh  ry   s   && rR   _execute_attach_stepr    s    99%%4 	 
   II-- !  +0K'(444$BBBC%koo66)2)J)J&0022#+#H#H#O#O $		 : : $P $ 1   7 
(OO[%8%8
 
 (CCD&{77%.%F%FK",,YY..'LLSS II66  T   -  &<<KrU   c                0    V ^8  d   QhR\         R\        /# rf  )rG   r   )rP   s   "rR   rS   rS     s     + ++
+rU   c                 $   VP                   P                  R 8X  d   \        M\        pV P	                  VP                   P
                  RVR7       RV n        \        VP                   P                  V P                  V P                  4      '       gq   V P                  VP                   P
                  \        P                  P                  VP                   P                  R7      R7       \        P                  V n        R# \        P"                  # )r  rj  rk  FrA  rn  N)ro  r?  r   r   r   ry  r]   rV  rM   rK   r   r   %SECURITY_UA_SERVICE_NOT_ENABLED_SHORTrP   r   r   r\   r[   r  s   && rR   _execute_enable_stepr    s     99+ 	 
   II-- ! 
 +0K'4		 
 	((**#IIPP		)) Q  	) 	
 "+!B!B***rU   c                0    V ^8  d   QhR\         R\        /# rf  )rG   r"   )rP   s   "rR   rS   rS   
  s     ? ??#2?rU   c                     VP                   P                  \        P                  P                  8X  d1   \        \        P                  4       \        P                  V n
        R # R # r   )ro  rx   r!   NOT_AFFECTEDr-  rp   r   SECURITY_NO_AFFECTED_PKGSr   r   r\   rz  s   &&rR   _execute_noop_not_affected_stepr  
  sE     yy,99???h001!*!>!> @rU   c                0    V ^8  d   QhR\         R\        /# rf  )rG   r    )rP   s   "rR   rS   rS     s     
. 
.
.#>
.rU   c                     \        VP                  \        4      '       dR   \        \        P
                  P                  V P                  VP                  P                  R 7      4       RV n	        R# R# ))r   rm  TN)
r   ro  r+   rp   r   CVE_FIXED_BY_LIVEPATCHrP   rJ   patch_versionr_   rz  s   &&rR   %_execute_noop_fixed_by_livepatch_stepr    s\     $))122++22!''		// 3 	
 *.& 3rU   c                0    V ^8  d   QhR\         R\        /# rf  )rG   r   )rP   s   "rR   rS   rS     s      
@ 
@
@#>
@rU   c                 `   \        VP                  \        4      '       d   V P                  VP                  P                  R VP                  P
                  R7       \        \        P                  4       V ;P                  \        VP                  P                  4      ,          un	        R# R# )rj  rk  N)r   ro  r*   r   ry  ry   rp   r   r  rW   rm   rz  s   &&rR    _execute_noop_already_fixed_stepr    s{     $))122$$		1199## 	% 	

 	h001TYY%>%>!?? 3rU   c                    V ^8  d   QhR\         R\        R\        R\        \        \
        \        ,          3,          /# )rI   r   rK   rM   r   )r#   rO   r<   r   r   r   r   )rP   s   "rR   rS   rS   ,  sA     O> O>O>&*O>19O>
9d>**+O>rU   c                    . V P                   OV P                  Op\        V P                  TV P                  ;'       g    . VR 7      pVP                  4        \        VR R7       EF  p\        V\        4      '       d   \        WE4       \        V\        4      '       d   \        WE4       \        V\        4      '       d   \        WE4       \        V\        4      '       d-   \        WE4       VP                   \"        P$                  8w  d    M\        V\&        4      '       d-   \)        WE4       VP                   \"        P$                  8w  d    M\        V\*        4      '       d-   \-        WE4       VP                   \"        P$                  8w  d    Mk\        V\.        4      '       d   \1        WE4       \        V\2        4      '       d   \5        WE4       \        V\6        4      '       g   EK  \9        WE4       EK  	  \;        4        VP<                  '       d`   \;        \?        \A        \C        VP<                   Uu. uF  pVPD                  NK  	  up4      4      4      4       \"        PF                  Vn        VP                   \"        P$                  8X  d   \H        PJ                  ! VPL                  R7      '       dg   \"        PN                  Vn        \P        PR                  PU                  RR7      p\;        V4       \V        PX                  ! \Z        P\                  RR7       VP^                  '       g!   \a        VP                   V P                  4       VP                   VP<                  3# u upi ))rJ   rK   rL   rM   c                     V P                   # r   )order)xs   &rR   <lambda>"execute_fix_plan.<locals>.<lambda><  s    rU   )key)rZ   r   r   )1planwarningsrG   rJ   affected_packagesrt   ro   r   r(   rv  r)   r{  r'   r  r   r  r\   r   r[   r   r  r   r  r"   r  r    r  r   r  rp   rX   r(  listrY   r   r   r   should_rebootrZ   r   r   r   rP   rB   addrC   ENABLE_REBOOT_REQUIREDr_   r   )r   rK   rM   	full_planrg  rh  r   
reboot_msgs   &&&     rR   r   r   ,  s   				I
 nn0066B	K   "y&788dBCC5kHd?@@2;Ed>??1+Dd122%k8%%)H)HHd-.. 3%%)H)HHd-.. 3%%)H)HHdO,,+K>d7881+Dd788,[?9 9< 
G( 0;/G/G/G (OO/G		
 "+!B!B 	)"A"AA  0J0JKK!*!I!I99@@% A 

 	j))%	

 )))";#9#98>>J""K$<$<==7s   <M/fix)r  c                `   V P                   '       d   \        \        P                  4       R V P                  P                  4       9   d.   \        V P                  V P                   V4      pVP                  # \        V P                  V P                   V P                  V4      pVP                  # r   )
rK   rp   r   SECURITY_DRY_RUN_WARNINGr   lowerr   r   r   	exit_code)argsrM   kwargsrx   s   &$, rR   
action_fixr  ~  s    |||h//0##))++,,dllC@ 	 t
 rU   Tr   )helpz	--dry-run
store_true)r  actionz--no-related)	arguments)r  r   r  help_categorypreserve_descriptionargument_groupsr   )r   )rq   typingr   r   r   r   r   r   r	   uaclientr
   r   r   r   r   uaclient.actionsr   r   +uaclient.api.u.pro.attach.magic.initiate.v1r   )uaclient.api.u.pro.attach.magic.revoke.v1r   r   'uaclient.api.u.pro.attach.magic.wait.v1r   r   'uaclient.api.u.pro.security.fix._commonr   r   r   /uaclient.api.u.pro.security.fix._common.plan.v1r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   +uaclient.api.u.pro.security.fix.cve.plan.v1r-   r.   r   +uaclient.api.u.pro.security.fix.usn.plan.v1r/   r   (uaclient.api.u.pro.status.is_attached.v1r0   r1   uaclient.clir2   uaclient.cli.commandsr3   r4   r5   uaclient.cli.detachr6   uaclient.cli.parserr7   uaclient.clouds.identityr8   r9   r:   uaclient.configr<   uaclient.defaultsr=   uaclient.entitlementsr>   (uaclient.entitlements.entitlement_statusr?   r@   rA   uaclient.filesrB   uaclient.files.noticesrC   uaclient.messages.urlsrD   uaclient.statusrE   rG   r   r   r   r   r~   r   r  r  r#  r(  r0  r=  rJ  rV  r   r   rv  r{  r  r  r  r  r  r  r  r    assert_vulnerability_issue_validr  CLI_ROOT_FIXCLI_FIX_DESCSECURITYCLI_FIX_ISSUECLI_FIX_DRY_RUNCLI_FIX_NO_RELATEDfix_commandr   rU   rR   <module>r     s      = < J A 
     , J I I I " K K - , 
 % . 5 
 # ) 0 -< <~4&dNN8	
96.&$.8(V"3J?2? O;A|,=^+B?
.
@O>d 
**u5 6 				%%'',83I3IJ!11'
 "!44'	
rU   