+
    �zºj* ã                   ó°   € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI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 R]4      tR# )	é    N)ÚPIPEÚPopen)ÚdatetimeÚtimezone)Úgettext)ÚRiscvProfileÚRiscvProfileException)ÚS390xGenerationÚget_system_s390x_generationc                   ód  a € ] tR t^'t o RtR tR tR tR tR t	R t
R tR	 tR
 tR tR tR6R ltR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R7R  lt#R! t$R7R" lt%R7R# lt&R$ t'R% t(R& t)R' t*R( t+R) t,R8R* lt-R+ t.R, t/R- t0R. t1R/ t2R0 t3R1 t4R2 t5R3 t6R4t7V t8R5# )9ÚDistUpgradeQuirksaˆ  
This class collects the various quirks handlers that can
be hooked into to fix/work around issues that the individual
releases have.

The following handlers are supported:
- PreCacheOpen: run *before* the apt cache is opened the first time
                to set options that affect the cache
- PostInitialUpdate: run *before* the sources.list is rewritten but
                     after an initial apt-get update
- PreDistUpgradeCache: run *right before* the dist-upgrade is
                       calculated in the cache
- PostDistUpgradeCache: run *after* the dist-upgrade was calculated
                        in the cache
- StartUpgrade: before the first package gets installed (but the
                download is finished)
- PostUpgrade: run *after* the upgrade is finished successfully and
               packages got installed
- PostCleanup: run *after* the cleanup (orphaned etc) is finished
c                óþ   € Wn         VP                  V n        W n        \        R R.\        RR7      P                  4       ^ ,          P                  4       V n        ^ V n        RV n	        RV n
        RV n        RV n        R# )Úunamez-rT)ÚstdoutÚuniversal_newlinesNF)Ú
controllerÚ_viewÚconfigr   r   ÚcommunicateÚstripr   Úextra_snap_spaceÚ_pokeÚ_snapstore_reachableÚ
_snap_listÚ_did_change_font)Úselfr   r   s   &&&Ú?/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeQuirks.pyÚ__init__ÚDistUpgradeQuirks.__init__=   so   € Ø$ŒØ×%Ñ%ˆŒ
ØŒÜ˜G T˜?´4Ø.2ô4ß4?±K³MÀ!õEßEJÁUÃWð 	Œ
à !ˆÔØˆŒ
Ø$)ˆÔ!ØˆŒØ %ˆÖó    c                óº   € V P                   P                  '       d   \        P                  ! R4       R# \        P                  ! R4       V P                  4        R# )z2run before the apt cache is opened the first time ú)not running quirks in partialUpgrade modeNzrunning Quirks.PreCacheOpen)r   Ú_partialUpgradeÚloggingÚinfoÚdebugÚ_add_apport_ignore_list©r   s   &r   ÚPreCacheOpenÚDistUpgradeQuirks.PreCacheOpenJ   s=   € ð �?‰?×*×*Ð*Ü�LŠLÐDÔEÙä�ŠÐ3Ô4Ø×$Ñ$Ö&r    c                óT  € V P                   P                  '       d   \        P                  ! R4       R# \        P                  ! R4       V P                  4        V P                  4        V P                  4        V P                  4        V P                  4        V P                  4        V P                  4        V P                   P                  pV P                  V4       V P                  4        RV9  d   \        P                  ! R4       R# VR,          P                  '       d[   \         P"                  P%                  R4      '       g&   \         P"                  P%                  R4      '       d   V P'                  4        V P(                  '       d   V P+                  4        R# R# )z1run after the apt cache is opened the first time r"   Nz running Quirks.PostInitialUpdateÚsnapdú'package required for Quirk not in cachez/run/snapd.socketz/run/snapd-snap.socket)r   r#   r$   r%   r&   Ú_test_and_fail_on_rva23Ú_test_and_fail_without_cgroupv2Ú_test_and_fail_on_z13Ú_test_and_fail_on_pi_old_eepromÚ;_test_and_fail_rabbitmq_server_installed_and_not_upgradableÚ7_test_and_fail_mysql_server_using_mysql_native_passwordÚ_test_and_fail_on_tpm_fdeÚcacheÚ_test_and_warn_if_ros_installedÚ#_maybe_prevent_flatpak_auto_removalÚis_installedÚosÚpathÚexistsÚ_checkStoreConnectivityr   Ú_calculateSnapSizeRequirements©r   r5   s   & r   ÚPostInitialUpdateÚ#DistUpgradeQuirks.PostInitialUpdateU   s)  € ð �?‰?×*×*Ð*Ü�LŠLÐDÔEÙä�ŠÐ8Ô9Ø×$Ñ$Ô&Ø×,Ñ,Ô.Ø×"Ñ"Ô$Ø×,Ñ,Ô.Ø×HÑHÔJØ×DÑDÔFà×&Ñ&Ô(à—‘×%Ñ%ˆØ×,Ñ,¨UÔ3à×0Ñ0Ô2à˜%ÔÜ�MŠMÐCÔDÙØ��>×&×&Ð&Ü—‘—‘Ð 3×4Ò4Ü—‘—‘Ð 8×9Ò9Ø×(Ñ(Ô*ð ×$×$Ð$Ø×/Ñ/Ö1ñ %r    c                ó‚  € V P                   P                  '       d   \        P                  ! R 4       R# \        P                  ! R4       V P                   P
                  pV P                  4        RV9  d   \        P                  ! R4       R# VR,          P                  '       d#   V P                  '       d   V P                  4        RV9   d:   VR,          P                  '       d!   V P                  4        V P                  4        RV9   d.   VR,          P                  '       d   V P                  4        R# R# R# )r"   Nzrunning Quirks.PostUpgrader,   r-   úubuntu-desktop-raspiúubuntu-server-raspi)r   r#   r$   r%   r&   r5   Ú_keep_budgie_display_managerr8   r   Ú_replaceDebsAndSnapsÚ_replace_fkms_overlayÚ_remove_z3foldÚ_add_kms_overlayr>   s   & r   ÚPostUpgradeÚDistUpgradeQuirks.PostUpgradey   sé   € à�?‰?×*×*Ð*Ü�LŠLÐDÔEÙä�ŠÐ2Ô3Ø—‘×%Ñ%ˆØ×)Ñ)Ô+Ø˜%ÔÜ�MŠMÐCÔDÙØ��>×&×&Ð&Ø——�Ø×%Ñ%Ô'Ø! UÔ*ØÐ+Õ,×9×9Ð9Ø×*Ñ*Ô,Ø×#Ñ#Ô%Ø  EÔ)ØÐ*Õ+×8×8Ð8Ø×%Ñ%Ö'ñ 9ñ *r    c                óR  € V P                   P                  '       d   \        P                  ! R 4       R#  \        P                  ! R4       V P                  4         \        P                  ! RR.4       R#   \         d%   p\        P                  ! RT 24        Rp?R# Rp?ii ; i)r"   Nzrunning Quirks.PostCleanupÚsnapÚrefreshzFailed to refresh snaps : )	r   r#   r$   r%   r&   Ú_remove_apport_ignore_listÚ
subprocessÚ
check_callÚ	Exception)r   Úes   & r   ÚPostCleanupÚDistUpgradeQuirks.PostCleanup‘   s}   € à�?‰?×*×*Ð*Ü�LŠLÐDÔEÙàÜ�ŠÐ2Ô3Ø×'Ñ'Ô)ð	<Ü×!Ò! 6¨9Ð"5Ö6øÜô 	<Ü�MŠMÐ6°q°cÐ:×;Ò;ûð	<ús   ÁA7 Á7B&ÂB!Â!B&c                óh  € V P                   P                  '       d   \        P                  ! R 4       R# \        P                  ! R4       V P                   P
                  pV P                  4        V P                  4        V P                  4        V P                  4        V P                  V4       R# )r"   Nzrunning Quirks.StartUpgrade)r   r#   r$   r%   r&   r5   Ú_removeOldApportCrashesÚ_killUpdateNotifierÚ_pokeScreensaverÚ_set_generic_fontÚ_disable_kdump_tools_on_installr>   s   & r   ÚStartUpgradeÚDistUpgradeQuirks.StartUpgrade¢   s|   € à�?‰?×*×*Ð*Ü�LŠLÐDÔEÙä�ŠÐ3Ô4Ø—‘×%Ñ%ˆØ×$Ñ$Ô&Ø× Ñ Ô"Ø×ÑÔØ×ÑÔ Ø×,Ñ,¨UÖ3r    c                ó  € V P                   P                  '       d   \        P                  ! R4       R# \        P                  ! R4       V P                  4        V P                  4        V P                  4        V P                  4        R# )z.run right before calculating the dist-upgrade r"   Nz"running Quirks.PreDistUpgradeCache)	r   r#   r$   r%   r&   Ú_maybe_remove_gpg_wks_serverÚ_install_linux_sysctl_defaultsÚ_fix_lintian_resolver_deadlockÚ"_fix_budgie_minimal_dracut_installr(   s   &r   ÚPreDistUpgradeCacheÚ%DistUpgradeQuirks.PreDistUpgradeCache²   sa   € ð �?‰?×*×*Ð*Ü�LŠLÐDÔEÙä�ŠÐ:Ô;Ø×)Ñ)Ô+Ø×+Ñ+Ô-Ø×+Ñ+Ô-Ø×/Ñ/Ö1r    c                ó  € V P                   P                  '       d   \        P                  ! R4       R# \        P                  ! R4       V P                  4        V P                  4        V P                  4        V P                  4        R# )z'run after calculating the dist-upgrade r"   Nz#running Quirks.PostDistUpgradeCache)	r   r#   r$   r%   r&   Ú_install_linux_metapackageÚ+_switch_to_systemd_coredump_for_kde_flavorsÚ_force_piboot_try_installÚ_force_dracut_installr(   s   &r   ÚPostDistUpgradeCacheÚ&DistUpgradeQuirks.PostDistUpgradeCacheÁ   sa   € ð �?‰?×*×*Ð*Ü�LŠLÐDÔEÙä�ŠÐ;Ô<Ø×'Ñ'Ô)Ø×8Ñ8Ô:Ø×&Ñ&Ô(Ø×"Ñ"Ö$r    c                ó  € \        4       pR F/  pVP                  \        P                  ! RV,          4      4       K1  	  RpV F`  pV'       d    MWV FM  pVP	                  VP
                  4      '       g   K&  VP                  '       g   VP                  '       d   Rp K^  	  Kb  	  V'       dU   V P                  P                  \        R4      \        R4      4      pV'       g   V P                  P                  4        R# R# R# )zŸ
Test and warn if ROS is installed. A given ROS release only
supports specific Ubuntu releases, and can cause the upgrade
to fail in an overly-cryptic manner.
zros-[^\-]+-%sFTz-The Robot Operating System (ROS) is installeda	  It appears that ROS is currently installed. Each ROS release is very strict about the versions of Ubuntu it supports, and Ubuntu upgrades can fail if that guidance isn't followed. Before continuing, please either uninstall ROS, or ensure the ROS release you have installed supports the version of Ubuntu to which you're upgrading.

For ROS 1 releases, refer to REP 3:
https://www.ros.org/reps/rep-0003.html

For ROS 2 releases, refer to REP 2000:
https://www.ros.org/reps/rep-2000.html

Are you sure you want to continue?N)Úcatkinzrosboost-cfgÚroscleanzros-environmentzros-workspace)ÚsetÚaddÚreÚcompileÚmatchÚnamer8   Úmarked_installr   ÚaskYesNoQuestionÚ_r   Úabort)r   r5   Úros_package_patternsÚpackage_nameÚros_is_installedÚpkgÚpatternÚress   &&      r   r6   Ú1DistUpgradeQuirks._test_and_warn_if_ros_installedÎ   sÝ   € ô  #›uÐó!ˆLð !×$Ñ$Ü—
’
Ð+¨lÕ:Ó;ö=ñ!ð !ÐÛˆCßÙã/�Ø—=‘= §¡×*Ô*Ø×'×'Ð'¨3×+=×+=Ð+=Ø+/Ð(Úó	 0ñ	 ÷ Ø—*‘*×-Ñ-ÜÐAÓBÜð 7ó 8ó9ˆC÷ Ø—‘×%Ñ%Ö'ñ ñ r    c                ó¦  € RpRV P                   P                  9  d   R# V P                   P                  R,          P                  '       g   R# \        P                  P                  R4      '       g   R# R F^  p\        P                  ! RV.\        P                  R7      pVP                  P                  R4      P                  4       '       g   K\  Rp M	  \        P                  ! RP                  V'       d   R	MR
4      4       V'       g   R# V P                   P                  R,          P                  RR7       R F   pW@P                   P                  9  d   K  V P                   P                  V,          P                  '       g   KN  \        P                  ! RP                  V4      4       V P                   P                  V,          P                  RR7       K¢  	  V P                   P                  P!                  V P"                  P%                  4       V P"                  P'                  V P                   P                  4      4       R# )z…
If flatpak is installed, and there are either active remotes, or
flatpak apps installed, prevent flatpak's auto-removal on upgrade.
FÚflatpakNz/usr/bin/flatpak)r   úutf-8Tz-flatpak will{}be marked as manually installedÚ z NOT ©Úautoz'{} will be marked as manually installed)ÚremotesÚlist)zplasma-discover-backend-flatpakzgnome-software-plugin-flatpak)r   r5   r8   r9   r:   r;   rO   Úrunr   r   Údecoder   r$   r&   ÚformatÚ	mark_autoÚcommitr   ÚgetAcquireProgressÚgetInstallProgress)r   Úprevent_auto_removalÚsubcmdÚrr{   s   &    r   r7   Ú5DistUpgradeQuirks._maybe_prevent_flatpak_auto_removalý   s¦  € ð
  %Ðà˜DŸO™O×1Ñ1Ô1Ùà�‰×$Ñ$ YÕ/×<×<Ð<Ùä�w‰w�~‰~Ð0×1Ò1Ùã)ˆFÜ—’Ø'¨Ð0Ü%Ÿ?™?ôˆAð �x‰x�‰˜wÓ'×-Ñ-×/Ô/Ø'+Ð$Ùñ *ô 	�ŠÐEß‘v×%9™c¸wÓGô	I÷ $Ùà�‰×Ñ˜iÕ(×2Ñ2¸Ð2Ô>ó5ˆCàŸ/™/×/Ñ/Ô/Ùà—?‘?×(Ñ(¨Õ-×:×:Ð:Ùä�MŠMÐCß!™6 #›;ô(à�O‰O×!Ñ! #Õ&×0Ñ0°eÐ0Ö<ñ5ð 	�‰×Ñ×$Ñ$Ø�J‰J×)Ñ)Ó+Ø�J‰J×)Ñ)¨$¯/©/×*?Ñ*?Ó@ö	
r    c                óÒ  € V P                   P                  R8w  d   R# RV P                   P                  9   d.   V P                   P                  R,          P                  '       g   R# Rp\        P
                  ! RV R24        V P                   P                  V,          P                  RR7       R#   \         d(   p\        P                  ! R	T R
T 24        Rp?R# Rp?ii ; i)zþ
Fix an issue on Noble where the resolver can get stuck in a deadlock
due to lintian being broken by a newer version of libyaml-libyaml-perl
and the resolver refusing to upgrade lintian due to having to install
libfile-libmagic-perl.

Fixes LP: #2150319
ÚnobleNÚlintianzlibfile-libmagic-perlúQuirk: Marking 'z-' for install to prevent dependency deadlock.F©Úauto_fixúQuirk: Failed to mark 'ú' for install: )	r   ÚfromDistr5   r8   r$   r%   Úmark_installrQ   Úerror)r   Úpkg_namerR   s   &  r   r`   Ú0DistUpgradeQuirks._fix_lintian_resolver_deadlock/  sÃ   € ð �?‰?×#Ñ# wÔ.Ùà˜TŸ_™_×2Ñ2Ô2Ø—‘×%Ñ% iÕ0×=×=Ð=Ùð +ˆÜ�ŠØ˜x˜jð )ð ô	
ð	Ø�O‰O×!Ñ! (Õ+×8Ñ8À%Ð8ÖHøÜô 	Ü�MŠMØ)¨(¨°?À1À#ÐF÷ò ûð	ús   Â-B4 Â4C&Â?C!Ã!C&c                ó|  €  \        VRRR7      ;_uu_ 4       p\        P                  P                  VP	                  4       P                  4       4      pRRR4       X'       d   V# \        P                  ! RV4        \        P                  P                  \        P                  ! V4      4      pVP                  R4      ;'       g    R#   + '       g   i     L€; i  \         d"   p\        P                  ! RY4        Rp?L‰Rp?ii ; i  \         d#   p\        P                  ! RY%4        Rp?R# Rp?ii ; i)	z·
Return the name of the display manager the system is configured to
use, i.e. the answer to the shared/default-x-display-manager debconf
question, or None if it cannot be determined.
r�   r�   ©ÚencodingNz%s is emptyzcould not read %s: %sz.servicezcould not resolve %s: %s)Úopenr9   r:   ÚbasenameÚreadr   r$   r&   ÚOSErrorÚreadlinkÚremovesuffix)r   Údm_fileÚdm_unitÚfÚdmrR   Úunits   &&&    r   Ú_get_selected_display_managerÚ/DistUpgradeQuirks._get_selected_display_managerM  sä   € ð	?Ü�g˜s¨W×5Õ5¸Ü—W‘W×%Ñ% a§f¡f£h§n¡nÓ&6Ó7�÷ 6çØ�	Ü�MŠM˜-¨Ô1ð	BÜ—7‘7×#Ñ#¤B§K¢K°Ó$8Ó9ˆDØ×$Ñ$ ZÓ0×8Ð8°DÐ8÷ 6×5ûô
 ô 	?Ü�MŠMÐ1°7×>Ñ>ûð	?ûô ô 	BÜ�MŠMÐ4°g×AÐAáûð	BúsY   ‚C ˜<CÁC Á$C Á&C Á>A
D Ã	D ÃC	ÃC ÃDÃ*DÄDÄD;ÄD6Ä6D;c                ó|  € V P                   P                  R8w  d   R# V P                   P                  pRpW!9   d   W,          P                  '       g   R# RRRRRR/pV P	                  4       pVf   \
        P                  ! R4       R# VP                  V4      pVf   \
        P                  ! RV R	24       R# WQ9  d   \
        P                  ! R
V R24       R# W,          P                  '       g   \
        P                  ! R
V R24       R# \
        P                  ! RV R24       W,          P                  RR7        VP                  V P                  P                  4       V P                  P                  V4      4       R#   \          d(   p\
        P"                  ! RT RT 24        Rp?R# Rp?ii ; i)a'  
Keep the display manager the user selected during the upgrade.

On Ubuntu Budgie the upgrade pulls in sddm, which triggers the
shared/default-x-display-manager debconf question. By that point
lightdm is not seeded by anything any more, so even when the user
explicitly selects it, it is collected as an unused dependency in
doPostUpgrade() and the system is left without the display manager
it was just told to use.

Mark the selected display manager as manually installed so that it
survives the obsolete/unused package cleanup.

Fixes LP: #2156727
ÚresoluteNúubuntu-budgie-desktop-minimalÚgdm3ÚlightdmÚsddmz3Quirk: unable to determine selected display managerz-Quirk: no known package for display manager 'z!', not protecting it from removalz!Quirk: selected display manager 'z2' is not available, cannot protect it from removalz!' is not at risk of being removedz)Quirk: marking selected display manager 'zE' as manually installed so it is not removed as an unused dependency.Frƒ   zQuirk: could not prevent 'z' from being removed: )r   ÚtoDistr5   r8   r­   r$   ÚwarningÚgetr&   Úis_auto_removabler%   rŠ   r‹   r   rŒ   r�   ÚSystemErrorrœ   )r   r5   Ú
flavor_pkgÚdisplay_manager_pkgsr«   r�   rR   s   &      r   rD   Ú.DistUpgradeQuirks._keep_budgie_display_manageri  s´  € ð  �?‰?×!Ñ! ZÔ/Ùà—‘×%Ñ%ˆà4ˆ
ØÔ#¨Õ(9×(F×(FÐ(FÙð �FØ�yØ�Fð 
Ðð ×/Ñ/Ó1ˆØŠ:Ü�OŠOØEôñ à'×+Ñ+¨BÓ/ˆØÒÜ�MŠMØ?À¸tð D-ð -ôñ àÔ Ü�OŠOØ3°H°:ð ><ð <ôñ à�×0×0Ð0Ü�MŠMØ3°H°:ð >(ð (ôñ ä�ŠØ7¸°zð Bð ô	
ð
 	�×!Ñ! uÐ!Ô-ð		Ø�L‰LØ—
‘
×-Ñ-Ó/Ø—
‘
×-Ñ-¨eÓ4öøô ô 	Ü�MŠMØ,¨X¨JÐ6LØ�#ð÷ò ûð	ús   ÅAF	 Æ	F;ÆF6Æ6F;c                óÐ  € V P                   P                  R8w  d   R# RpWP                   P                  9   d.   V P                   P                  V,          P                  '       g   R# Rp\        P
                  ! RV R24        V P                   P                  V,          P                  4        R#   \         d(   p\        P                  ! RT RT 24        Rp?R# Rp?ii ; i)	a*  
Fix an issue where ubuntu-budgie-desktop-minimal does not upgrade
since it requires installing dracut, removing initramfs-tools which
it previously depended on. This has the side-effect of possibly
leaving the user without a display manager as sddm is auto-marked for
removal.

Fixes LP: #2156727
r°   Nr±   Údracutr•   z;' for install to ensure it gets installed on Ubuntu Budgie.r˜   r™   )	r   rµ   r5   r8   r$   r%   r›   rQ   rœ   )r   rº   r�   rR   s   &   r   ra   Ú4DistUpgradeQuirks._fix_budgie_minimal_dracut_install¾  s¿   € ð �?‰?×!Ñ! ZÔ/Ùà4ˆ
ØŸo™o×3Ñ3Ô3Ø—‘×%Ñ% jÕ1×>×>Ð>ÙàˆÜ�ŠØ˜x˜jð )*ð *ô	
ð	Ø�O‰O×!Ñ! (Õ+×8Ñ8Ö:øÜô 	Ü�MŠMØ)¨(¨°?À1À#ÐF÷ò ûð	ús   Â+B3 Â3C%Â>C Ã C%c                ó„  € R R.pRp \         P                  ! \         P                  P                  V4      RR7       \	        VR4      ;_uu_ 4       pV F  pVP                  V R24       K  	  RRR4       R#   + '       g   i     R# ; i  \         d(   p\        P                  ! RT R	T 24        Rp?R# Rp?ii ; i)
z/usr/libexec/tracker-extract-3z!/usr/sbin/update-apt-xapian-indexú2/etc/apport/blacklist.d/upgrade-quirks-ignore-listT©Úexist_okÚwÚ
NzFailed to create ú: )	r9   Úmakedirsr:   Údirnamer¢   ÚwriterQ   r$   r&   )r   Úignore_listr:   rª   ÚbinrR   s   &     r   r'   Ú)DistUpgradeQuirks._add_apport_ignore_listÜ  sš   € à,Ø/ð
ˆð
 Dˆð	;Ü�KŠKœŸ™Ÿ™¨Ó-¸Õ=Ü�d˜C—” AÛ&�CØ—G‘G˜s˜e 2˜JÖ'ñ '÷ !——’ûô ô 	;Ü�MŠMÐ-¨d¨V°2°a°SÐ9×:Ò:ûð	;ús6   ˆA	B ÁA9Á/B Á9B
	ÂB Â
B ÂB?ÂB:Â:B?c                ó¢   € R p \         P                  ! V4       R#   \         d(   p\        P                  ! RT RT 24        Rp?R# Rp?ii ; i)rÁ   zFailed to remove rÆ   N)r9   ÚremoverQ   r$   r&   )r   r:   rR   s   &  r   rN   Ú,DistUpgradeQuirks._remove_apport_ignore_listí  sD   € ØCˆð	;Ü�IŠI�dŽOøÜô 	;Ü�MŠMÐ-¨d¨V°2°a°SÐ9×:Ò:ûð	;ús   „ œA§A	Á	Ac                ó°   € \         P                  P                  R4      '       d1   \        P                  ! R4       \
        P                  ! . RO4       R# R# )zkill update-notifierz/usr/bin/killallzkilling update-notifierN)Úkillallz-qzupdate-notifier)r9   r:   r;   r$   r&   rO   Úcallr(   s   &r   rW   Ú%DistUpgradeQuirks._killUpdateNotifierõ  s7   € ô �7‰7�>‰>Ð,×-Ò-Ü�MŠMÐ3Ô4Ü�OŠOÒ@ÖAñ .r    c                óÎ  € \         P                  P                  R 4      '       d’   \         P                  P	                  R4      '       dk   \
        P                  ! R4       RpVR,          pVR,          p \        P                  ! VRR7      V n	        \        P                  ! V P                  4       R	# R	# R	#   \        \        3 d    \
        P                  ! R4        R	# i ; i)
z/usr/bin/xdg-screensaverÚDISPLAYz$setup poke timer for the screensaverzwhile true;z3 do /usr/bin/xdg-screensaver reset >/dev/null 2>&1;z sleep 30; doneT©Úshellz failed to setup screensaver pokeN)r9   r:   r;   Úenvironr·   r$   r&   rO   r   r   ÚatexitÚregisterÚ_stopPokeScreensaverr¥   Ú
ValueErrorÚ	exception)r   Úcmds   & r   rX   Ú"DistUpgradeQuirks._pokeScreensaverü  s®   € Ü�G‰G�N‰NÐ5×6Ò6Ü—
‘
—‘˜y×)Ò)Ü�MŠMÐ@ÔAØˆCØÐHÕHˆCØÐ$Õ$ˆCðFÜ'×-Ò-¨c¸Ô>�”
Ü—’ × 9Ñ 9Ö:ñ *ñ 7øô œZÐ(ô FÜ×!Ò!Ð"D×EðFús   Á6=B9 Â9'C$Ã#C$c                óì   € R pV P                   e=    V P                   P                  4        V P                   P                  4       pRV n         V#   \         d    \        P
                  ! R4        L,i ; i)FNzfailed to stop screensaver poke)r   Ú	terminateÚwaitr¥   r$   rÝ   )r   r}   s   & r   rÛ   Ú&DistUpgradeQuirks._stopPokeScreensaver	  sg   € ØˆØ�:‰:Ò!ðEØ—
‘
×$Ñ$Ô&Ø—j‘j—o‘oÓ'�ð ˆDŒJØˆ
øô ô EÜ×!Ò!Ð"CÖDðEús   ’4A Á!A3Á2A3c           	     ó8  €  R F\  p\         P                   ! RV,          4       F8  p\        P                  ! RV: RV: R24       \        P                  ! V4       K:  	  K^  	  R#   \
         d)   p\        P                  ! RT,          4        Rp?R# Rp?ii ; i)z9remove old apport crash files and whoopsie control files z/var/crash/*%szremoving old z file 'Ú'z+error during unlink of old crash files (%s)N)z.crashz.uploadz	.uploaded)Úglobr$   r&   r9   ÚunlinkrQ   r¶   )r   Úextrª   rR   s   &   r   rV   Ú)DistUpgradeQuirks._removeOldApportCrashes  sp   € ð	OÛ9�ÜŸšÐ#3°cÕ#9Ö:�AÜ—M“MÃÃaÐ"HÔIÜ—I’I˜a–Ló ;ó :øô ô 	OÜ�OŠOÐIÈAÕM×NÒNûð	Oús   ‚A"A& Á&BÁ1BÂBc                ó’  € Rp\         P                  P                  4       pRVR&    \        . RO\        \        VRR7      P                  4       p\        P                  ! RT^ ,          \        P                  4      '       d
   RT n	        R# \        P                  ! R	T^ ,          \        P                  4      '       Ed   \        P                  ! R
4       RpT P                  P                  pRT9   dd   TR,          P                   '       dK   TR,          P"                  P$                  P'                  R4      '       g   \        P                  ! R4       RpT'       dM   \)        R4      p\)        R4      pT P*                  P                  Yx4       T P                  P-                  4        M¿T P*                  P/                  \)        R4      \)        R4      4      pM�RT^,          9   dF   \        P                  ! R4       T P*                  P/                  \)        R4      \)        R4      4      pM=RT^,          9   d   Rp\        P                  ! R4       M\        P                  ! R4       T'       g   T P                  P-                  4        R# R#   \         d,   p\        P                  ! RT 24       RT n	         Rp?R# Rp?ii ; i)z9check for connectivity to the snap store to install snapsFzC.UTF-8ÚLANGT)r   ÚstderrÚenvr   z8Failed to check snap store connectivity, assuming none: Nz	^ \* PASSz^ \*.*unreachablezNo snap store connectivityÚlxdz1:zlxd is installedz#Connection to the Snap Store faileda�  You have the package lxd installed but your system is unable to reach the Snap Store. lxd is now provided via a snap and the release upgrade will fail if snapd is not functional. Please make sure you're connected to the Internet and update any firewall or proxy settings as needed so that you can reach api.snapcraft.io. If you are an enterprise with a firewall setup you may want to configure a Snap Store proxy.zConnection to Snap Store failedzÅYour system does not have a connection to the Snap Store. For the best upgrade experience make sure that your system can connect to api.snapcraft.io.
Do you still want to continue with the upgrade?zerror: unknown commandz snap debug command not availablezOutdated snapd packagez»Your system does not have the latest version of snapd. Please update the version of snapd on your system to improve the upgrade experience.
Do you still want to continue with the upgrade?zerror: access deniedzNot running as root!z-Unhandled error connecting to the snap store.)rL   r&   Úconnectivity)r9   rØ   Úcopyr   r   r   rQ   r$   r&   r   rp   ÚsearchÚ	MULTILINErœ   r   r5   r8   Ú	candidateÚversionÚ
startswithrv   r   rw   ru   )	r   r}   Úsnap_envÚ	connectedrR   Úold_lxd_deb_installedr5   ÚsummaryÚmsgs	   &        r   r<   Ú)DistUpgradeQuirks._checkStoreConnectivity  s'  € àˆÜ—:‘:—?‘?Ó$ˆØ$ˆ�Ñð		ÜÒ?ÌÜ%)¨xØ15ô7ç7B±{³}ð ô �9Š9�\ 9¨Q¥<´·±×>Ò>Ø(,ˆDÔ%Ùä�YŠYÐ+¨Y°q­\¼2¿<¹<×HÓHÜ�MŠMÐ6Ô7Ø$)Ð!Ø—O‘O×)Ñ)ˆEØ˜Œ~à˜•<×,×,Ð,Ø˜e�×.Ñ.×6Ñ6×AÑAÀ$×GÒGÜ—M’MÐ"4Ô5Ø,0Ð)ß$ÜÐAÓB�Üð 	.ó 
�ð —
‘
× Ñ  Ô.Ø—‘×%Ñ%Õ'à—j‘j×1Ñ1ÜÐ7Ó8Üð Hó Ió‘ð &¨°1­Ô5Ü�MŠMÐ<Ô=Ø—*‘*×-Ñ-ÜÐ*Ó+Üð Dó Eó‰Cð $ y°¥|Ô3ØˆCÜ�MŠMÐ0Õ1ä�MŠMÐIÔJßØ�O‰O×!Ñ!Ö#ñ øôy ô 	Ü�MŠMØJÈ1È#ÐNôð ).ˆDÔ%Ýûð	ús   §(J ÊKÊ KËKc           
     ó¦  € ^ RI p^ RIp^ RIHp V P	                  4        V P
                  P                  \        R4      4       V P                  P                  4        EF8  w  rEVR,          R8w  d   K  RRRR	R
VR
,          RVR,          /pR. RV./pVP                  P                  R\        VP                  V4      RR7      R7      pVP                  RR4       VP                  RR4       VP                  RV P                  P                   4        VP                  P#                  V4      P%                  4       p	VP'                  V	4      p
\)        V
R,          ^ ,          R,          R	,          R,          4      pT ;P2                  T,          un        EK;  	  R#   \*        T\,        3 d#    \.        P0                  ! RT,          4        EKr  i ; i)r   N)ÚURLErrorz"Calculating snap size requirementsÚcommandÚinstallzinstance-keyzupgrade-size-checkÚactionÚdownloadúsnap-idÚchannelÚcontextÚactionsz)https://api.snapcraft.io/v2/snaps/refreshr�   r    )ÚurlÚdatazSnap-Device-SeriesÚ16zContent-typezapplication/jsonzSnap-Device-ArchitectureÚresultsrL   ÚsizezFailed fetching size of snap %s)ÚjsonÚurllib.requestÚurllib.errorrý   Ú_prepare_snap_replacement_datar   ÚupdateStatusrv   r   ÚitemsÚrequestÚRequestÚbytesÚdumpsÚ
add_headerr   ÚarchÚurlopenr¤   ÚloadsÚintÚKeyErrorrÜ   r$   r&   r   )r   r  Úurllibrý   rL   Úsnap_objectr   r  ÚreqÚresponser%   r
  s   &           r   r=   Ú0DistUpgradeQuirks._calculateSnapSizeRequirementsf  s˜  € ÛÛÝ)ð
 	×+Ñ+Ô-ð 	�
‰
×Ñ¤Ð"FÓ GÔHØ!%§¡×!6Ñ!6×!8ÑˆDØ˜9Õ%¨Ô2ÙàÐ 4Ø˜*Ø˜; yÕ1Ø˜; yÕ1ð	ˆFð ˜2Ø˜F˜8ðˆDð —.‘.×(Ñ(Ø?Ü˜4Ÿ:™: dÓ+°gÔ>ð )ó @ˆCð �N‰NÐ/°Ô6Ø�N‰N˜>Ð+=Ô>Ø�N‰NÐ5°t·±×7KÑ7KÔLðØ!Ÿ>™>×1Ñ1°#Ó6×;Ñ;Ó=�Ø—z‘z (Ó+�Ü˜4 	�?¨1Õ-¨fÕ5°jÕAÀ&ÕIÓJ�ð ×!Ò! TÕ)×!Ð!ó5 "9øô. ˜h¬
Ð3ô Ü—’Ð?À$ÕFÔGÛðús   ÄA(FÆ/GÇGc                ó*  € V P                   P                  \        R4      4       V P                  P	                  4        EF”  w  rVR,          pVR8X  d<   VR,          pV P                   P                  \        RV,          4      4       RVRWA.pMpVR8X  d1   V P                   P                  \        R	V,          4      4       RW1.pM9V P                   P                  \        R
V,          4      4       RVRVR,          V.p V P                   P                  4        \        P                  ! V\        P                  RR7      pV P                   P                  4        TP                  ^ 8X  d   \        P                  ! T: RT: R24       TR8X  g   EKV  TR,          '       g   EKh  T P                  P                  P                  TR,          4       EK—  	  R#   \        P                   d$    \        P                  ! T: RT: R24        EKÒ  i ; i)z>install a snap and mark its corresponding package for removal zProcessing snap replacementsrþ   Úswitchr  zswitching channel for snap %srL   z	--channelrÎ   zremoving snap %szinstalling snap %sT)r   Úcheckz	 of snap z failedz
 succeededrÿ   ÚdebN)r   r  rv   r   r  ÚprocessEventsrO   r‡   r   ÚCalledProcessErrorr$   r&   Ú
returncoder   Úforced_obsoletesÚappend)r   rL   r  rþ   r  Ú	popenargsÚprocs   &      r   rE   Ú&DistUpgradeQuirks._replaceDebsAndSnapsŽ  s¢  € à�
‰
×Ñ¤Ð"@Ó AÔBð "&§¡×!6Ñ!6×!8ÑˆDØ! )Õ,ˆGØ˜(Ô"Ø% iÕ0�Ø—
‘
×'Ñ'ÜÐ5¸Õ<Ó=ôð $ W¨k¸7ÐI‘	à˜HÔ$Ø—
‘
×'Ñ'¬Ð*<¸tÕ*CÓ(DÔEØ# WÐ3‘	à—
‘
×'Ñ'¬Ð*>ÀÕ*EÓ(FÔGØ# WØ(¨+°iÕ*@À$ðH�	ð	Ø—
‘
×(Ñ(Ô*Ü!—~’~ØÜ%Ÿ?™?Øô �ð —
‘
×(Ñ(Ô*ð �‰ !Ô#Ü—’»7ÃDÐIÔJØ˜)×#¨°E×(:×(:Ø—‘×0Ñ0×7Ñ7¸ÀEÕ8J×Kó; "9øô. ×0Ñ0ô Ü—’»ÃÐFÔGÛðús   ÄAGÇ3HÈHc                ó®  € \         P                  ! R4      pVP                  V4      pVP                  V4      pV'       dW   V'       dO   VP                  ^4      : RVP                  ^4      : 2pVP                  ^4      : RVP                  ^4      : 2p\        P
                  ! RV: RV: 24       \        P                  P                  W4      ^ 8„  # )z"copied from ubuntu-drivers common z(.+)-([0-9]+)-(.+)Ú-z
Comparing z with )	rp   rq   rr   Úgroupr$   r&   ÚaptÚapt_pkgÚversion_compare)r   Úterm1Úterm2r|   Úmatch1Úmatch2s   &&&   r   Ú_is_greater_thanÚ"DistUpgradeQuirks._is_greater_than²  s›   € ô —*’*Ð1Ó2ˆØ—‘˜uÓ%ˆØ—‘˜uÓ%ˆß—fØ%Ÿ|™|¨AžØ%Ÿ|™|¨A�ð0ˆEà%Ÿ|™|¨AžØ%Ÿ|™|¨A�ð0ˆEô 	�‹³²uÐ=Ô>Ü�{‰{×*Ñ*¨5Ó8¸1Ñ<Ð<r    c           	     ó  € T;'       d    R;'       g    Rp\         P                  ! R4      p\         P                  ! R4      pRpRpV EF=  pRVP                  9   g   K  RVP                  9  g   K*  VP                  '       g   VP                  '       g   KP  VP                  VP                  4      p	V	'       g   Ku  VP                  P                  R,          p
V	P                  ^4      : RV	P                  ^4      : 2pV P                  VV4      '       g   KÓ  TpVP                  V
4      pR	V
9   d8   V'       d0   R
V: RV	P                  ^4      : RVP                  ^4      : 2pEK$  R
V: RV	P                  ^4      : 2pEK@  	  V# )zMGet the linux headers or linux metapackage
copied from ubuntu-drivers-common
z-headersÚ zlinux-image-(.+)-([0-9]+)-(.+)z
linux-(.+)zlinux-imageÚextraÚSourcer-  z-lts-Úlinux)
rp   rq   rs   r8   rt   rr   ró   Úrecordr.  r6  )r   r5   ÚheadersÚsuffixr|   Úsource_patternÚmetapackagerô   r{   rr   ÚsourceÚcurrent_versionÚmatch_sources   &&&          r   Ú_get_linux_metapackageÚ(DistUpgradeQuirks._get_linux_metapackageÂ  sF  € ð ×'Ð'˜Z×-Ð-¨2ˆÜ—*’*Ð=Ó>ˆÜŸš LÓ1ˆàˆØˆÜˆCØ §¡Ö)¨g¸S¿X¹XÖ.EØ×%×%Ð%¨×);×);Ò);ØŸ™ c§h¡hÓ/�÷ ‘5Ø Ÿ]™]×1Ñ1°(Õ;�FØ16·±¸Q¶Ø16·±¸Qµð'A�Oð ×,Ñ,¨_Ø-4÷6ô 6à"1˜Ø'5×';Ñ';¸FÓ'C˜à" fÔ,·°ó ,2Ø+0¯;©;°q®>Ø+7×+=Ñ+=¸aÕ+@ð+B›Køó ,2Ø+0¯;©;°q­>ð+;›KñC ðH Ðr    c                ó4  € V P                   P                  pV P                  VR4      pW!9  d    \        P                  ! RV,          4       R# W,          P
                  '       g3   \        P                  ! RV,          4       RpVP                  W#4       R# R# )zZEnsure the linux metapackage is installed for the newest_kernel
installed. (LP: #1509305)
Fz$linux metapackage (%s) not availableNz installing linux metapackage: %sz8linux metapackage may have been accidentally uninstalled)r   r5   rE  r$   r%   r8   r›   )r   r5   Úlinux_metapackageÚreasons   &   r   re   Ú,DistUpgradeQuirks._install_linux_metapackageò  s‡   € ð —‘×%Ñ%ˆØ ×7Ñ7¸¸uÓEÐð Ô)Ü�LŠLÐ?Ø*õ+ô ,áàÕ'×4×4Ð4Ü�LŠLÐ;Ø*õ+ô ,àOˆFØ×ÑÐ0Ö9ñ	 5r    c                ó:  € V P                   P                  '       g   \        P                  P                  P                  R4      '       gN   RpVR,          p\        P                  ! V4       \        P                  P                  P                  RR4       R# R# R# )zHensure that on a desktop install recommends are installed
(LP: #759262)
zApt::Install-Recommendsz%Apt::Install-Recommends was disabled,z! enabling it just for the upgradeÚ1N)	r   Ú
serverModer/  r0  r   Úfind_br$   r¶   rn   )r   rú   s   & r   Ú+ensure_recommends_are_installed_on_desktopsÚ=DistUpgradeQuirks.ensure_recommends_are_installed_on_desktops  sr   € ð �‰×)×)Ð)Ü—;‘;×%Ñ%×,Ñ,Ð-F×GÒGØ=�ØÐ:Õ:�Ü—’ Ô$Ü—‘×"Ñ"×&Ñ&Ð'@À#ÖFñ	 Hñ *r    c                ó  € VP                  RR4      p\        V\        4      '       g   V.pV FU  pW0P                  P                  9  d   K  V'       d.   V P                  P                  V,          P
                  RJ d   KT   R# 	  R# )zsHelper function that checks if the given deb2snap entry
has at least one metapkg which is installed on the system.
ÚmetapkgNFT)r·   Ú
isinstancer†   r   r5   r8   )r   Údeb2snap_entryÚmetapkg_listrR  s   &&  r   Ú_is_deb2snap_metapkg_installedÚ0DistUpgradeQuirks._is_deb2snap_metapkg_installed  sr   € ð &×)Ñ)¨)°TÓ:ˆÜ˜,¬×-Ò-Ø(˜>ˆLã#ˆGØŸo™o×3Ñ3Ô3ÙßØ—O‘O×)Ñ)¨'Õ2×?Ñ?À5ÓHÙâñ $ñ r    c                óŽ  € ^ RI p/ p/ p \        P                  P                  \        P                  P	                  \        P                  P                  \        4      4      R4      p\        VR4      ;_uu_ 4       pVP                  VP                  4       4      pRRR4       XR,           FÂ  pVR,          V,          pV P                  V4      '       g   K,  VP                  RR4      p	VP                  RR4      P                  V P                  P                  R7      p
VP                  R	R
4      P                  V P                  P                  R7      pVP                  RR4      pWšW¼3W'&   KÄ  	  VR,           Fy  pVR,          V,          pVP                  RR4      p	V P                  V4      '       g   K>  XP                  RR4      P                  V P                  P                  R7      p
Wš3W7&   K{  	  W#3#   + '       g   i     ELi; i  \          d*   p\"        P$                  ! RT,          4        Rp?Y#3# Rp?ii ; i)r   Nzdeb2snap.jsonr�   Úseededr#  Úfrom_channelzstable/ubuntu-{FROM_VERSION})ÚFROM_VERSIONÚ
to_channelzstable/ubuntu-{TO_VERSION})Ú
TO_VERSIONÚforce_switchFÚunseededz%error reading deb2snap.json file (%s))r  r9   r:   ÚjoinrÈ   ÚabspathÚ__file__r¢   r  r¤   rV  r·   r‰   r   ÚfromVersionÚ	toVersionrQ   r$   r¶   )r   r  Úseeded_snapsÚunseeded_snapsÚdeb2snap_pathrª   Úd2srL   Úseedr#  Ú	from_chanÚto_chanr^  ÚunseedrR   s   &              r   Ú_parse_deb2snap_jsonÚ&DistUpgradeQuirks._parse_deb2snap_json#  s  € ÛØˆØˆð-	IÜŸG™GŸL™LÜ—‘—‘¤§¡§¡´Ó 9Ó:ØóˆMô �m S×)Ô)¨QØ—j‘j §¡£Ó*�÷ *ð ˜HŸ˜�Ø˜8•} TÕ*�Ø×:Ñ:¸4×@Ò@ÙØ—h‘h˜u dÓ+�ð
 !ŸH™HØ"Ø2ó÷ ‘&Ø!%§¡×!<Ñ!<ð ó ð ð Ÿ(™(Ø Ø0ó÷ ‘&Ø#Ÿ™×8Ñ8ð ó ð ð  $Ÿx™x¨¸Ó>�Ø&)°gÐ%L�Ó"ñ- &ð0 ˜JŸ˜�Ø˜Z�¨Õ.�Ø—j‘j ¨Ó-�Ø×:Ñ:¸6×BÒBÙØ ŸH™HØ"Ø2ó÷ ‘&Ø!%§¡×!<Ñ!<ð ó ð ð ),Ð'7�Ó$ñ (ð Ð+Ð+÷U *×)Ð)ûôN ô 	IÜ�OŠOÐCÀaÕG×HÐHàÐ+Ð+ûð	Iús1   ŠA2H Á< G<ÂEH Ç<H	È	H ÈIÈH?È?Ic           	     ó¸
  € / V n         V P                  4       w  rRp\        P                  ! RR.R\        P                  R7      P                  4       pV'       d�   V^ ,          P                  R4      ^R#  Uu. uF  pVP                  4       ^ ,          NK  	  ppV FG  pWa9   g   Wb9   d   K  RRV P                  P                   2RV P                  P                   2R	3W&   KI  	  V P                  P                  \        R
4      4       VP                  4        EFâ  w  rgVw  r‰r«/ p\        P                  ! RRV.R\        P                  R7      P                  4       pV P                  P                  4        \        P                   ! RV^ ,          \        P"                  4      '       d†   \$        P&                  ! RV,          4       \        P                   ! RV	,          V^ ,          \        P"                  4      '       g)   \$        P&                  ! RV,          4       V'       g   EK  RVR&   M¹V P                  P(                  pV'       dA   WŽ9  g   Wè,          P*                  '       g#   \$        P&                  ! RV: RV: R24       EKu  \        P                   ! RV^ ,          4      pV'       g!   \$        P&                  ! RV,          4       EK»  RVR&   WŒR&   V^,          VR&   W¬R&   WÀP                   V&   EKå  	  VP                  4        EF4  w  pw  r‰/ p\        P                  ! RRV.R\        P                  R7      P                  4       pV P                  P                  4        \        P                   ! RV^ ,          \        P"                  4      '       g   K’  \$        P&                  ! RV,          4       \        P                   ! RV	,          V^ ,          \        P"                  4      '       g!   \$        P&                  ! RV,          4       EK	  RVR&   \        P                  ! RRV.R\        P                  R7      P                  4       pV P                  P                  4        V^ ,          P                  R4       Fª  pVP                  4       p\-        V4      ^8w  d   K%  V^,          pV^,          pVP/                  VR,           4      '       g   KW  VP                  R4      ^ ,          pVR8w  g   Kx  VV9  g   K�  \$        P&                  ! RV: R V: R!24       RVR&   R"VR&    M	  WÀP                   V&   EK7  	  V P                   # u upi )$zšHelper function fetching all required info for the deb-to-snap
migration: version strings for upgrade (from and to) and the list
of snaps (with actions).
r9  rL   r†   T)r   r   rÅ   Nzstable/ubuntu-FzChecking for installed snapsr%   z^installed: zSnap %s is installedz^tracking:.*%sz+Snap %s is not tracking the release channelr!  rþ   zDeb package z) is not installed. Skipping snap package z installationzsnap-id:\s*(\w*)z'Could not parse snap-id for the %s snaprÿ   r#  r  r  rÎ   ÚconnectionsÚ:r-  zSnap z is being used by z. Switching it to stable trackÚstableéÿÿÿÿ)r   rm  rO   r   r   r   Úsplitr   rc  rd  r   r  rv   r  r$  rp   rñ   rò   r$   r&   r5   r8   Úlenrõ   )r   re  rf  Ú	snap_listÚlineÚsnaps_installedrL   Úpropsr#  rZ  r\  r^  r  Ú	snap_infor5   rr   ÚconnsÚconnÚ	conn_colsÚplugÚslotÚ	plug_snaps   &                     r   r  Ú0DistUpgradeQuirks._prepare_snap_replacement_dataY  sx  € ð
 ˆŒà'+×'@Ñ'@Ó'BÑ$ˆàˆ	ä×$Ò$ f¨fÐ%5Ø8<Ü,6¯O©Oô=ç=H¹[»]ð 	÷ ð ,5°Q­<×+=Ñ+=¸dÓ+CÀAÀbÑ+IóKÙ+I 4ð  $Ÿz™z›|¨AŸ˜Ù+Ið ð Kó (�ØÔ'¨4Ô+AÙð Ø(¨¯©×)DÑ)DÐ(EÐFØ(¨¯©×)BÑ)BÐ(CÐDØð	*�LÓ&ñ	 (ð 	�
‰
×Ñ¤Ð"@Ó AÔBØ'×-Ñ-×/‰KˆDØ<AÑ9ˆS 
ØˆKä"×(Ò(¨&°&¸$Ð)?Ø<@Ü0:·±ôAçALÁÃð ð �J‰J×$Ñ$Ô&Ü�yŠy˜¨)°A­,¼¿¹×EÒEÜ—’Ð4°tÕ;Ô<ä—y’yÐ!2°\Õ!AØ!*¨1¥¬r¯|©|÷=ò =ä—M’MÐ"OØ$(õ#)ô *÷ (ò !à)1�˜IÒ&ð Ÿ™×-Ñ-�ß˜SÔ-°UµZ×5L×5LÐ5LÜ—M“MÛDGËð#Oô PâäŸ	š	Ð"5°yÀµ|ÓD�ßÜ—M’MÐ"KØ$(õ#)ô *âØ)2�˜IÑ&Ø%(˜EÑ"Ø).¨q­�˜IÑ&Ø%/˜	Ñ"Ø$/�O‰O˜DÔ!ñO 0ðP *8×)=Ñ)=×)?Ñ%ˆDÑ%�3ØˆKä"×(Ò(¨&°&¸$Ð)?Ø<@Ü0:·±ôAçALÁÃð ð �J‰J×$Ñ$Ô&Ü�yŠy˜¨)°A­,¼¿¹×EÔEÜ—’Ð4°tÕ;Ô<ä—y’yÐ!2°\Õ!AØ!*¨1¥¬r¯|©|÷=ò =ä—M’MÐ"OØ$(õ#)ô *âà)1�˜IÑ&ô #×(Ò(¨&°-ÀÐ)FØ<@Ü0:·±ôAçALÁÃð ð —
‘
×(Ñ(Ô*à! !�HŸN™N¨4Ö0�DØ $§
¡
£�IÜ˜9“~¨Ô*Ù Ø$ Q�<�DØ$ Q�<�Dà—‘ t¨c¥z×2Ô2Ø$(§J¡J¨s£O°AÕ$6˜	Ø$¨Ö+Ø$¨NÖ:Ü#ŸM›Mã-1³9ð+>ô ?ð 6>˜K¨	Ñ2Ø5=˜K¨	Ñ2Ù!ñ! 1ð$ )4—‘ Ô%ñU *@ðV �‰ÐùòEKs   Á8 Uc                óê  € R p\         P                  ! V4      pVR,          VR,          V3 Fç  p VR,          pVP                  4       pVP                  RRR7      P	                  4       ^ ,          P                  4       pV Uu. uF  pV'       g   K  VR8w  g   K  VNK  	  p	pWy8X  d   \        P                  ! RV4       MQVP                  R	4      p
V
P                  V4       VP                  R
P                  V	4      P                  R4      4        R# 	  \        P                  ! RV4       R# u upi   \         d     EK  \         d%   p\        P                  ! RXY²4        Rp? R# Rp?ii ; i)zQYou may need to remove zswap.zpool=z3fold from cmdline.txt on your boot partitionÚnewÚcurrentzcmdline.txtr�   Úreplace)Úerrorszzswap.zpool=z3foldzno z3fold usage found in %sz.txt.distUpgrader‚   Nz2failed to update kernel command line in %s: %s; %sz(failed to locate kernel command line; %s)ÚpathlibÚPathÚ
read_bytesrˆ   Ú
splitlinesrt  r$   r¶   Úwith_suffixÚwrite_bytesr`  ÚencodeÚFileNotFoundErrorr¥   rœ   )r   Úboot_dirÚfailure_actionÚ	boot_rootÚ	boot_pathÚcmdline_pathÚold_contentÚ
old_paramsÚparamÚ
new_paramsÚbackup_pathÚexcs   &&          r   rG   Ú DistUpgradeQuirks._remove_z3foldÍ  sl  € ð%ð 	ô —L’L Ó*ˆ	Ø# eÕ+¨Y¸Õ-BÀIÓNˆIðØ(¨=Õ8�Ø*×5Ñ5Ó7�ð  ×&Ñ& w°yÐ&ÓAß‘Z“\ !õ%ß%*¡U£Wð ñ ",óá!+˜Üô à!&Ð*>Ñ!>÷ �EÙ!+ð ð ð
 Ô+Ü—O’OØ5°|õEð #/×":Ñ":Ð;MÓ"N�KØ×+Ñ+¨KÔ8Ø ×,Ñ,ØŸ™ Ó,×3Ñ3°GÓ<ô>âñ/ Oô< 	�ŠÐ@Ø$ö	&ùò)øô %ô ÛÜô Ü—’ð +Ø,8¸#ôOæûðúsC   °AD5Â
D0ÂD0ÂD0Â!A1D5Ä0D5Ä5E2ÅE2ÅE2ÅE-Å-E2c                óî  €  VR ,           p\        VRRR7      ;_uu_ 4       pVP                  V4       RRR4        \        TRRR7      ;_uu_ 4       pTP                  T4       RRR4       R#   + '       g   i     LC; i  \         d$   p\        P                  ! RXYt4        Rp?R# Rp?ii ; i  + '       g   i     R# ; i  \         d$   p\        P                  ! RY7T4        Rp?R# Rp?ii ; i)z.distUpgraderÄ   r�   r    Nz0unable to write boot config backup to %s: %s; %sz-unable to write new boot config to %s: %s; %s)r¢   rÉ   ÚIOErrorr$   rœ   )r   Ú
old_configÚ
new_configÚboot_config_filenamer�  Úboot_backup_filenamerª   r™  s   &&&&&   r   Ú_replace_pi_boot_configÚ)DistUpgradeQuirks._replace_pi_boot_configú  sÍ   € ð	Ø#7¸.Õ#HÐ ÜÐ*¨C¸'×BÕBÀaØ—‘˜
Ô#÷ Cð	EÜÐ*¨C¸'×BÕBÀaØ—‘˜
Ô#÷ CÑB÷ C×Bûäô 	Ü�MŠMÐLØ.°ôEåûð	ú÷
 C×BÐBûäô 	EÜ�MŠMÐIØ.°^÷Eò Eûð	Eúsh   ‚B ¡A.³B ¼C ÁB2Á$C Á.A>	Á9B Á>B ÂB/ÂB*Â*B/Â2C	Â=C ÃC ÃC4ÃC/Ã/C4c                óÖ  € R p \         P                  P                  VR4      p\        VRRR7      ;_uu_ 4       pVP	                  4       pRRR4       RP                  R XP                  R	R
7       4       4      pYe8X  d   \        P                  ! RT4       R# T P                  YVY24       R#   + '       g   i     Lk; i  \
         d    \        P                  ! RXT4        R# i ; i)zfYou may need to replace the vc4-fkms-v3d overlay with vc4-kms-v3d in config.txt on your boot partitionú
config.txtr�   r�   r    Nú+failed to open boot configuration in %s; %sr9  c              3   óþ   "  € T Fs  pVP                  R 4      '       d!   RV,           VP                  R R4      ,           M6VP                  R4      '       g   VP                  4       R8X  d
   RV,           MTx € Ku  	  R# 5i)zdtoverlay=vc4-fkms-v3dz0# changed by do-release-upgrade (LP: #1923673)
#údtoverlay=vc4-kms-v3dzgpu_mem=z	start_x=1z1# disabled by do-release-upgrade (LP: #1923673)
#N)rõ   r…  Úrstrip©Ú.0rw  s   & r   Ú	<genexpr>Ú:DistUpgradeQuirks._replace_fkms_overlay.<locals>.<genexpr>  sz   é € ð 
ñ >�ð �‰Ð7×8Ò8ð @À$ÕFØ�L‰LÐ1Ð3JÓKöLð �‰˜z×*Ò*¨d¯k©k«m¸{Ô.Jð AÀ4ÖGàô	ó >ùs   ‚A=ž6A=Á(A=T)Úkeependsz3no fkms overlay or camera firmware line found in %s)r9   r:   r`  r¢   r¤   rŽ  r$   rœ   rŠ  r¶   r¡  )r   r�  r�  rŸ  rª   Úboot_configrž  s   &&     r   rF   Ú'DistUpgradeQuirks._replace_fkms_overlay  sÚ   € ð?ð 	ð	Ü#%§7¡7§<¡<°¸,Ó#GÐ ÜÐ*¨C¸'×BÕBÀaØŸf™f›h�÷ Cð —W‘Wñ 
ð $×.Ñ.¸Ð.Ô=ó
ó 
ˆ
ð  Ô$Ü�OŠOð $Ø%9ô;áØ×$Ñ$ØÐ%9ö	K÷7 C×Bûä ô 	Ü�MŠMÐGØ.°ô@âð	ús.   „6C ºB.ÁC Â.B>	Â9C Â>C Ã#C(Ã'C(c                óH  a
a€ R p. ROo
 \         P                  P                  VR4      p\        VRRR7      ;_uu_ 4       pVP	                  4       pRRR4       R oT
T3R	 lpXP                  4        Uu. uF  qwP                  4       NK  	  ppT! T4      pRP                  R
 T 4       4      p	Y•8X  d   \        P                  ! RT4       R# T P                  YYY24       R#   + '       g   i     L™; i  \
         d    \        P                  ! RXT4        R# i ; iu upi )zbYou may need to add dtoverlay=vc4-kms-v3d to an [all] section in config.txt on your boot partitionr9  r¤  r�   r�   r    Nr¥  c                 óN  € R p^ p\        V 4       F‘  w  r4VP                  4       pV'       dp   TpVP                  R4      '       d   Vu # VP                  R4      '       d   VP                  R4      '       d   VR8H  pKo  VP                  R4      '       d   RpKŠ  KŒ  VR8H  pK“  	  V# )Tr§  Ú[Ú]ú[all]zinclude F)Ú	enumerater¨  rõ   Úendswith)ÚlinesÚin_allÚlastÚindexrw  s   &    r   Úfind_insertion_pointÚ@DistUpgradeQuirks._add_kms_overlay.<locals>.find_insertion_pointJ  sš   € ð ˆFØˆDÜ(¨Ö/‘�Ø—{‘{“}�ßØ �Dà—‘Ð'>×?Ò?Ø#šØŸ™¨×-Ò-°$·-±-À×2DÒ2DØ!%¨¡šØŸ™¨×4Ò4ð "'šñ	 5ð " W™_’Fñ  0ð  ˆKr    c                 ó„   <€ S! V 4      p W,          P                  R 4      '       d   V #  SWV% V #   \         d     Li ; i)r§  )rõ   Ú
IndexError)r·  Úinsert_pointÚadded_linesr»  s   & €€r   Úadd_kms_overlayÚ;DistUpgradeQuirks._add_kms_overlay.<locals>.add_kms_overlayb  sW   ø€ Ù/°Ó6ˆLðØÕ&×1Ñ1Ð2I×JÒJØ �Lð Kð
 0;ˆE˜|Ð,ØˆLøô	 ô áðús   ‹1 ¨1 ±?¾?c              3   ó2   "  € T F  qR ,           x € K  	  R# 5i)rÅ   N© r©  s   & r   r«  Ú5DistUpgradeQuirks._add_kms_overlay.<locals>.<genexpr>o  s   é € Ð;±U¨T DŸ[š[³Uùs   ‚z)no addition of KMS overlay required in %s)z,# added by do-release-upgrade (LP: #2065051)r§  zdisable_fw_kms_setup=1r9  z[pi3+]údtoverlay=vc4-kms-v3d,cma-128r9  z[pi02]rÆ  r9  r´  )r9   r:   r`  r¢   r¤   rŽ  r$   rœ   rŠ  r¨  r¶   r¡  )r   r�  r�  rŸ  rª   r®  rÁ  rw  r·  rž  rÀ  r»  s   &&        @@r   rH   Ú"DistUpgradeQuirks._add_kms_overlay0  s  ù€ ð3ð 	ò
ˆð	Ü#%§7¡7§<¡<°¸,Ó#GÐ ÜÐ*¨C¸'×BÕBÀaØŸf™f›h�÷ Cò	ö0		ð ,7×+AÑ+AÔ+CÓDÑ+C 4—‘–Ñ+CˆÐDÙ Ó&ˆØ—W‘WÑ;±UÓ;Ó;ˆ
àÔ$Ü�OŠOÐGØ0ô2áØ×$Ñ$ØÐ%9ö	K÷e C×Bûä ô 	Ü�MŠMÐGØ.°ô@âð	üòP Es5   Š6C5 Á C"ÁC5 Á5DÃ"C2	Ã-C5 Ã2C5 Ã5#DÄDc                óp  € V P                   P                  pRpRpV F'  pWA9   g   K  W,          P                  '       g   K%  Tp M	  Vf   R# \        P                  ! RV4       RV9   dK   VR,          P                  '       g0   \        P                  ! R4       VR,          P                  4        R# R# R# )z”
Force installation of dracut over initramfs-tools.

At present this is only used on the Raspberry Pi images. See
LP: #2148475 for further details.
Nz4Raspberry Pi seed detected (%s), switching to dracutr¾   zMarking dracut for installation©rC   rB   ©r   r5   r8   r$   r&   r›   ©r   r5   Úraspi_seedsÚmeta_pkgr{   s   &    r   rh   Ú'DistUpgradeQuirks._force_dracut_installx  s›   € ð —‘×%Ñ%ˆàEˆØˆÛˆCØŽ| ¥
× 7× 7Ò 7Ø�Ùñ ð
 ÒÙä�ŠØBÀHô	Nà�uÔ U¨8¥_×%A×%AÐ%AÜ�MŠMÐ;Ô<Ø�(�O×(Ñ(Ö*ñ &BÑr    c                óp  € V P                   P                  pRpRpV F'  pWA9   g   K  W,          P                  '       g   K%  Tp M	  Vf   R# \        P                  ! RV4       RV9   dK   VR,          P                  '       g0   \        P                  ! R4       VR,          P                  4        R# R# R# )z`
Force installation of piboot-try over flash-kernel.

This is required in the resolute upgrade.
NzERaspberry Pi seed detected (%s), switching flash-kernel to piboot-tryz
piboot-tryz#Marking piboot-try for installationrÉ  rÊ  rË  s   &    r   rg   Ú+DistUpgradeQuirks._force_piboot_try_install‘  s¡   € ð —‘×%Ñ%ˆàEˆØˆÛˆCØŽ| ¥
× 7× 7Ò 7Ø�Ùñ ð
 ÒÙä�ŠðØ"ô	$ð ˜5Ô ¨¨|Õ)<×)I×)IÐ)IÜ�MŠMÐ?Ô@Ø�,Õ×,Ñ,Ö.ñ *JÑ r    c                óô  € RpV P                   '       d   R# V P                  P                  RR4      R29   d   R# V P                  P                  4       f   \        P
                  ! R4       R# RpV P                  P                  RR4      P                  R4      pR	V9   g   R
V9   d   RpM	RV9   d   Rp\        \        . R3O4      \        V4      ,          4      pV P                  P                  RRV R.\        P                  RR7      pVP                  P                  R4      P                  R4      w  rgpT;'       g    Rp \        V4       \        P
                  ! RV RV RV RV R2	4       V P                  P                  RRV RRV RV R2.4      pVP"                  ^ 8w  d   \        P
                  ! RV RV 24       R# RV n         \$        P&                  P)                  V P                  P+                  4       R4      p	\$        P,                  ! \$        P&                  P/                  V	4      RR7       \0        P2                  ! V	4      P5                  R R!7       \$        P6                  ! V	V P                  P                  4       V P                  P9                  4       4       V'       dz   R"p
\$        P,                  ! \$        P&                  P/                  V
4      RR7       R#p\;        V
R$4      ;_uu_ 4       pVP=                  R%V R&V R'V RV R(V R)24       RRR4       R# R*p\$        P,                  ! \$        P&                  P/                  V4      RR7       \;        VR$4      ;_uu_ 4       pVP=                  R+V R,V RV R-24       RRR4       V P                  P?                  R..4       V P                  P?                  R/\$        P&                  PA                  V4      .4      pVP"                  ^ 8w  d:   \        P
                  ! R0\$        P&                  PA                  V4       R124       R# R#   \          d    Rp ELþi ; i  + '       g   i     R# ; i  + '       g   i     LÚ; i)4z“Due to changes to the Ubuntu font we enable a generic font
(in practice DejaVu or Noto) during the upgrade.
See https://launchpad.net/bugs/2034986
ÚSansNÚXDG_SESSION_TYPEr9  z3Cannot determine non-root UID, will not change fontzorg.gnome.desktop.interfaceÚXDG_CURRENT_DESKTOPrq  ÚMATEÚUKUIzorg.mate.interfaceú
X-Cinnamonzorg.cinnamon.desktop.interfacez/usr/bin/gsettingsr·   z	font-namer�   )r   r¡   z'
r‚   ÚUbuntuÚ11zSetting generic font z& during the upgrade. Original font is Ú.rn   Ú"zFailed to change font to Tz!.config/upgrade-need-font-restorerÂ   i¶  )Úmodez//etc/xdg/autostart/upgrade-restore-font.desktopz'$HOME/.config/upgrade-need-font-restorerÄ   zˆ[Desktop Entry]
Name=Restore font after upgrade
Comment=Auto-generated by ubuntu-release-upgrader
Type=Application
Exec=sh -c 'if [ -e "z" ]; then gsettings set z font-name "z	";rm -f "z"; fi'
NoDisplay=true
z2/usr/lib/systemd/user/upgrade-restore-font.servicezù# Auto-generated by ubuntu-release-upgrader
[Unit]
Description=Restore font after upgrade
After=graphical-session.target dconf.service
ConditionPathExists=%h/.config/upgrade-need-font-restore

[Service]
Type=oneshot
ExecStart=/usr/bin/gsettings set z font-name 'zm'
ExecStart=/usr/bin/rm -f %h/.config/upgrade-need-font-restore

[Install]
WantedBy=graphical-session.target
zdaemon-reloadÚenablezFailed to enable z%. Font will not be restored on reboot)r9  Útty)ÚBudgieÚLXQtrÕ  rÖ  r×  ÚXFCE)!r   r   Úget_user_envÚget_user_uidr$   r&   rt  Úboolrn   Úrun_as_userrO   r   r   r   Ú
rpartitionr  rÜ   r&  r9   r:   r`  Úget_user_homerÇ   rÈ   r‡  rˆ  ÚtouchÚchownÚget_user_gidr¢   rÉ   Úsystemctl_as_userr£   )r   Ú	temp_fontÚschemaÚdesktopsÚuse_autostartr�   Úfontrv   r
  Úneed_font_restore_fileÚautostart_fileÚflagrª   Ú	unit_files   &             r   rY   Ú#DistUpgradeQuirks._set_generic_fontª  s  € ð
 ˆ	à× × Ð Ùà�?‰?×'Ñ'Ð(:¸BÓ?À;ÔNñ à�?‰?×'Ñ'Ó)Ò1Ü�MŠMØEôñ à.ˆà—?‘?×/Ñ/Ø! 2ó
ç
‰%�‹*ð 	ð
 �XÔ ¨8Ô!3Ø)‰FØ˜XÔ%Ø5ˆFô ÜÒHÓIÜ�(‹mõó
ˆð
 �O‰O×'Ñ'Ø! 5Øˆx˜+ð'ä—?‘?Øð	 (ó 
ˆð Ÿ(™(Ÿ.™.¨Ó0×;Ñ;¸CÓ@‰ˆ�$Ø×Ð�xˆð	Ü�ŒIô 	�ŠÐ-¨i¨[¸¸$¸ð @3Ø37°&¸¸$¸¸qðBô 	Cð �O‰O×'Ñ'Ø  %¨F¨8Ø˜1˜Y˜K q¨¨¨aÐ0ð)
ó ˆð �<‰<˜1ÔÜ�MŠMÐ5°i°[ÀÀ$ÀÐHÔIÙà $ˆÔô "$§¡§¡Ø�O‰O×)Ñ)Ó+Ø/ó"
Ðô 	�Š”B—G‘G—O‘OÐ$:Ó;ÀdÕKÜ�ŠÐ+Ó,×2Ñ2¸Ð2Ô>Ü
�ŠØ"Ø�O‰O×(Ñ(Ó*Ø�O‰O×(Ñ(Ó*ô	
÷ ØNˆNÜ�KŠKœŸ™Ÿ™¨Ó7À$ÕGØ<ˆDÜ�n c×*Ô*¨aØ—‘ð-ð .2¨FÐ2JØ�h˜l¨4¨&°°$°ð 8Ø"˜Vð $'ð'ô	÷ +ñ ð Iˆ	Ü
�Š”B—G‘G—O‘O IÓ.¸Õ>ä�)˜S×!Ô! QØ�G‰Gð4ð �(˜-¨ v¨Q¨t¨fð 56ð6ô÷ "ð& 	�‰×)Ñ)¨?Ð*;Ô<Ø�O‰O×-Ñ-Ø”r—w‘w×'Ñ'¨	Ó2Ð3ó
ˆð �<‰<˜1ÔÜ�MŠMÐ-¬b¯g©g×.>Ñ.>¸yÓ.IÐ-Jð K@ð @ö Añ øôa ô 	Ø‹Dð	ú÷D +Ö*ñ ú÷ "×!ús*   ÅP? Ì"QÍ9Q'Ð?QÑQÑQ$	Ñ'Q7	c                ó�  € V P                   P                  P                  p VR,          P                  '       g   R# VR,          P                  pV UUu. uF&  w   r4VP
                  P                  '       g   K$  VNK(  	  ppp\        T4      '       gš   \        P                  ! R4       T P                   P                  R,          P                  RR7       \        P                  ! T P                   P                  4      P                  T P                   P                  R,          4       R# R# u uppi   \         d     R# i ; i)ze
Prevent postfix from being unnecessarily installed, and leading to a
debconf prompt (LP: #2060578).
zgpg-wks-serverNzmail-transport-agentzENo mail-transport-agent installed, marking gpg-wks-server for removalFr–   )r   r5   Ú_cacheÚcurrent_verÚprovides_listÚ
parent_pkgr  Úanyr$   r%   Úmark_deleter/  ÚProblemResolverÚprotect)r   r5   Úprovides_mtarv   ÚverÚinstalled_mtas   &     r   r^   Ú.DistUpgradeQuirks._maybe_remove_gpg_wks_server1  s  € ð —‘×%Ñ%×,Ñ,ˆð	ØÐ)Õ*×6×6Ð6áà Ð!7Õ8×FÑFˆLá%1ôÙ%1™	˜˜1Ø—>‘>×-Õ-÷ �¡\ð ñ ô �=×!Ò!Ü�LŠLð5ôð
 �O‰O×!Ñ!Ð"2Õ3×?Ñ?ÈÐ?ÔOÜ×Ò §¡× 5Ñ 5Ó6×>Ñ>Ø—‘×%Ñ%Ð&6Õ7öñ "ùóøô ô 	âð	ús.   ¢D6 ½D6 Á!D0Á;D0ÂD6 Ä0D6 Ä6EÅEc                ó:  € \         P                  ! 4       pVP                  V P                  P                  4      ;'       g    Rp \
        P                  ! 4       p TP                  4        R#   \         d%   p\        P                  ! RT 24        Rp?R# Rp?ii ; i  \         dp   p\        P                  ! RT 24       T P                  P                  \        RT 24      \        R4      4       T P                  P                  4         Rp?R# Rp?ii ; i)z³
With release Ubuntu 25.10 we have raised the ISA profile requirement
on RISC-V to RVA23U64. Prevent systems that don't implement RVA23U64
from upgrading beyond Ubuntu 24.04 LTS.
únext releasezRVA23 check: Nú%Sorry, cannot upgrade this system to zÐOn Ubuntu 25.10 and later, RISC-V systems are required to support the RVA23U64 profile, but your system does not. Please, see https://discourse.ubuntu.com/t/questing-quokka-release-notes for more information.)Údistro_infoÚUbuntuDistroInforô   r   rµ   r   Úread_cpuinfor	   r$   r&   Úassert_rva23_readyrœ   r   rv   rw   )r   Údirô   ÚcpuinfoÚexs   &    r   r.   Ú)DistUpgradeQuirks._test_and_fail_on_rva23T  sî   € ô ×)Ò)Ó+ˆØ—*‘*˜TŸ_™_×3Ñ3Ó4×FÐF¸ˆð	Ü"×/Ò/Ó1ˆGð	$Ø×&Ñ&Ô(Ùøô %ô 	ä�MŠM˜M¨"¨Ð.Ô/Ýûð	ûô %ô 	$Ü�MŠM˜M¨"¨Ð.Ô/Ø�J‰J×ÑÜØ;¸G¸9ÐEóô ðJóô	
ð �O‰O×!Ñ!×#Ò#ûð	$ús1   ÁA. ÁB  Á.BÁ9BÂBÂ DÂ+A$DÄDc                óv  € V P                   P                  R8w  d   R# \        4       pVf   \        P                  ! R4       R# V\
        P                  8¼  d   \        P                  ! R4       R# V P                  P                  \        R4      \        R4      4       V P                   P                  4        R# )z¡
With release Ubuntu 26.04 we have raised the ISA generation
requirement on s390x to z15. Prevent systems that are below z15
from upgrading beyond Ubuntu 25.10.
Ús390xNz3s390x generation check: cannot determine generationz2s390x generation check: generation is z15 or newerz5Sorry, cannot upgrade this system to Ubuntu 26.04 LTSzØOn Ubuntu 26.04 and later, s390x systems are required to be z15 or newer, but your system is not. Please, see https://documentation.ubuntu.com/release-notes/26.04/#ubuntu-26-04-lts-release-notes for more information.)r   r  r   r$   r&   r
   ÚZ15r   rœ   rv   rw   )r   Ú
generations   & r   r0   Ú'DistUpgradeQuirks._test_and_fail_on_z13w  sœ   € ð �?‰?×Ñ 7Ô*Ùä-HÓ-Jˆ
ØÒÜ�MŠMØEôñ àœ×,Ñ,Ô,Ü�MŠMØDôñ à�
‰
×ÑÜØGóô ðHóô	
	
ð 	�‰×ÑÖr    c                ól  € V P                   P                  R9  d   R# \        P                  ! V4      p \	        VR,          P                  4       P                  R4      P                  R4      4      p\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       g   R# RV9   d   RR	rTMR
V9   d   RRrTMR# \        P                  ! V\        P                  R7      p^ RIp TR,          R,          R,          pTP                  RTP                  4       4      ^ ,          p	Y”8¼  d   R#  T P                   P#                  \%        R4      \%        R4      P'                  YeR7      4       T P                   P)                  4        R#   \         d     R# i ; i  \         d     Lyi ; i)zË
Ubuntu 26.04 has minimum EEPROM requirements, partly for the "tryboot"
facility of the bootloader (for the Pi 4) and partly for kernel version
7 compatibility (for the Pi 5).

LP: #2130734
LP: #2146383
NÚ
compatibleó    c              3   óB   "  € T F  qP                  R 4      x € K  	  R# 5i)s   raspberrypi,N©rõ   )rª  Úss   & r   r«  ÚDDistUpgradeQuirks._test_and_fail_on_pi_old_eeprom.<locals>.<genexpr>±  s   é € ÐI¹j¸—|‘| O×4Ð4»jùs   ‚TFs   brcm,bcm2711iÕž€ci.ƒ  s   brcm,bcm2712iOƒ«giOÀ  )ÚtzÚchosenÚ
bootloaderzbuild-timestampz>Iz'Newer Raspberry Pi boot EEPROM requireda\  For Ubuntu 26.04, this Raspberry Pi requires the boot EEPROM to be dated at least {minimum_dt:%c %Z} or later. If you wish to proceed with the upgrade, once this upgrader exits, run "sudo rpi-eeprom-update -a" and reboot. Afterwards, you should be able to proceed with this upgrade. Please see https://launchpad.net/bugs/{bug} for more information.)Ú
minimum_dtÚbug)ÚarmhfÚarm64)r   r  r‡  rˆ  rn   r‰  r¨  rt  rû  r   Úfromtimestampr   ÚutcrŽ  ÚstructÚunpackr   rœ   rv   r‰   rw   )
r   Údt_dirÚdtr  Úminimum_builtr  r  r#  Útimestamp_nodeÚbuilts
   &&        r   r1   Ú1DistUpgradeQuirks._test_and_fail_on_pi_old_eeprom›  sy  € ð �?‰?×ÑÐ'9Ô9Ùô
 �\Š\˜&Ó!ˆð	PÜØ�\Õ!§:¡:£<·±°u³¿e¹eÀE»lóLˆJ÷
 “3ÑI¹jÓI—3—3’3ÑI¹jÓI×IÒIÙØ *Ô,Ø%/°™sØ  JÔ.Ø%/°™sáÜ!×/Ò/°Ä(Ç,Á,ÔOˆJó 	ð	Ø  8�m¨lÕ:Ð=NÕNˆNØ—M‘M $¨×(AÑ(AÓ(CÓDÀQÕGˆEð Ô%Ùð &ð 	�
‰
×ÑÜØ9óô ðIó÷ ‰f 
ˆfÓ4ô	
ð 	�‰×ÑÖøôO !ô 	Úð	ûô& !ô 	Ùð	ús#   µ>F Ã2>F% ÆF"Æ!F"Æ%F3Æ2F3c                ó6  € \         P                  P                  R4      '       dô   RV P                  P                  9   d×   V P                  P                  R,          P
                  '       d¨   \        P                  ! R4       \        P                  ! 4       pVP                  V P                  P                  4      ;'       g    RpV P                  P                  \        RV 24      \        R4      4       V P                  P                  4        R# R# R# R# )z
LP: #2065229
z/snap/pc-kernelzubuntu-desktop-minimalzDetected TPM FDE systemr  r  z�Upgrades for desktop systems running TPM FDE are not currently supported. Please see https://launchpad.net/bugs/2065229 for more information.N)r9   r:   r;   r   r5   r8   r$   r&   r  r  rô   rµ   r   rœ   rv   rw   )r   r
  rô   s   &  r   r4   Ú+DistUpgradeQuirks._test_and_fail_on_tpm_fde×  sÖ   € ô
 �G‰G�N‰NÐ,×-Ò-Ø$¨¯©×(=Ñ(=Ô=Ø�O‰O×!Ñ!Ð":Õ;×H×HÐHä�MŠMÐ3Ô4ä×-Ò-Ó/ˆBØ—j‘j §¡×!7Ñ!7Ó8×JÐJ¸NˆGà�J‰J×ÑÜØ;¸G¸9ÐEóô ð,óô	
ð �O‰O×!Ñ!Ö#ñ% Iñ >ñ .r    c                ó^  € RV9  d   R# VR,          pVP                   '       d   \        P                  ! R4       R# VP                  '       d_   \        P                  ! R4       \        P
                  ! RRR7      pVP                  pV^ 8w  d   \        P                  ! RV 24       R# R# R# )	z0Disable kdump-tools if installed during upgrade.zkdump-toolsNz-kdump-tools already installed. Not disabling.z1installing kdump-tools due to upgrade. Disabling.zOecho "kdump-tools kdump-tools/use_kdump boolean false" | debconf-set-selectionsTrÖ   z-kdump-tools debconf-set-selections returned: )r8   r$   r%   rt   rO   r‡   r&  r&   )r   r5   r{   r*  Úret_codes   &&   r   rZ   Ú1DistUpgradeQuirks._disable_kdump_tools_on_installò  s›   € à Ô%áà�MÕ"ˆà××ÐÜ�LŠLÐHÔIÙØ××ÐÜ�LŠLÐLÔMÜ—>’>ð0ð ôˆDð —‘ˆHØ˜1Œ}Ü—’ð&Ø&. Zð1öñ ñ  r    c                ó^  € V P                   P                  R8w  d   R# RV P                   P                  9   du   V P                   P                  R,          P                  '       gF   \        P
                  ! R4       V P                   P                  R,          P                  RR7       R# R# R# )zLP: #2089759 ÚoracularNzlinux-sysctl-defaultsz Installing linux-sysctl-defaultsFr–   )r   rš   r5   r8   r$   r&   r›   r(   s   &r   r_   Ú0DistUpgradeQuirks._install_linux_sysctl_defaults  sˆ   € ð �?‰?×#Ñ# zÔ1Ùð $ t§¡×'<Ñ'<Ô<Ø—‘×%Ñ%Ð&=Õ>×K×KÐKä�MŠMÐ<Ô=à�O‰O×!Ñ!Ð"9Õ:×GÑGØð Hö ñ	 Lñ =r    c                ó˜  € V P                   P                  pR
pRpV F'  pWA9   g   K  W,          P                  '       g   K%  Tp M	  Vf   R# \        P                  ! RV4       RV9   dI   VR,          P                  '       d0   \        P                  ! R4       VR,          P                  RR7       RV9   dI   VR,          P                  '       g0   \        P                  ! R4       VR,          P                  RR7       W,          P                  '       g0   \        P                  ! R	V4       W,          P                  4        R# R# )z¨
For Kubuntu and Ubuntu Studio, switch from apport-core-dump-handler
to systemd-coredump. These flavors use DrKonqi for crash handling
which requires systemd-coredump.
Nz7KDE flavor detected (%s), switching to systemd-coredumpzapport-core-dump-handlerz,Marking apport-core-dump-handler for removalFr–   zsystemd-coredumpz)Marking systemd-coredump for installationz/Re-marking %s for upgrade after coredump switch)zkubuntu-desktopzubuntustudio-desktop-core)	r   r5   r8   r$   r&   rü  r›   Úmarked_upgradeÚmark_upgrade)r   r5   Úkde_flavor_pkgsrÍ  r{   s   &    r   rf   Ú=DistUpgradeQuirks._switch_to_systemd_coredump_for_kde_flavors  s  € ð —‘×%Ñ%ˆð
ˆð ˆÛ"ˆCØŽ| ¥
× 7× 7Ò 7Ø�Ùñ #ð
 ÒÙä�ŠØEØô	
ð '¨%Ô/ØÐ,Õ-×:×:Ð:ä�MŠMÐHÔIØÐ,Õ-×9Ñ9À5Ð9ÔIð  %Ô'ØÐ(Õ)×6×6Ð6ä�MŠMÐEÔFØÐ$Õ%×2Ñ2¸EÐ2ÔBð �×-×-Ð-Ü�MŠMØAÀ8ôð �O×(Ñ(Ö*ñ	 .r    c                óÚ  € \        R4      ;_uu_ 4       pVP                  4       pRRR4       X F1  p VP                  4       P                  4       w  rErgr‰Ye3R8X  g   K0   R# 	  V P                  P                  \        R4      \        R4      4       V P                  P                  4        R#   + '       g   i     L‘; i  \         d    \
        P                  ! RT R24        Kº  i ; i)z˜
Starting in 26.04 LTS, systemd requires cgroupv2 unified hierarchy,
and will refuse to start under other configurations which were
previously allowed.
z/proc/mountsNzcould not parse z from /proc/mounts, ignoringz1Cannot upgrade without unified cgroupv2 hierarchyzôBeginning with Ubuntu 26.04 LTS, it is required that the system is booted with a unified cgroupv2 hierarchy, but this system is not.

See https://documentation.ubuntu.com/release-notes/26.04/#ubuntu-26-04-lts-release-notes for more information.)Úcgroup2z/sys/fs/cgroup)r¢   Ú	readlinesr   rt  rÜ   r$   r¶   r   rœ   rv   r   rw   )
r   rª   Úmountsrw  ÚwhatÚwhereÚfsÚoptsÚaÚbs
   &         r   r/   Ú1DistUpgradeQuirks._test_and_fail_without_cgroupv2R  sÔ   € ô �.×!Ô! QØ—[‘[“]ˆF÷ "ó ˆDðØ04·
±
³×0BÑ0BÓ0DÑ-�˜b¨ð ˆ{Ð;Ö;âñ ð 	�
‰
×ÑÜØCóô ð)óô		
ð 	�‰×ÑÖ÷= "×!ûô ô Ü—’Ø& t fÐ,HÐIôò ð	ús   ”B.³"CÂ.B>	Ã%C*Ã)C*c                óº  € ^ RI pV P                  P                  R8w  d   R# RV P                  P                  9   d.   V P                  P                  R,          P                  '       g   R#  \
        P                  ! . ROR^\
        P                  R7      pVP                  VP                  P                  R4      4      pX Uu/ uF  pVR
,          VR,          R8H  bK  	  ppVP+                  4        UUu0 uF  w  rhV'       g   K  VkK  	  p	pp0 Rmp
0 Rmp\-        W·P/                  4       ,          4      pV
P1                  V	4      '       d    V'       dg   VP1                  V	4      '       gN   \#        R4      p\#        R4      pV P$                  P'                  WE4       V P                  P)                  4        R# R# R#   \        \
        P                  \        TP                  3 df    \        P                   ! R4       \#        R4      p\#        R	4      pT P$                  P'                  YE4       T P                  P)                  4         EL�i ; iu upi u uppi )zf
RabbitMQ can only be upgraded to 4.X (the version in resolute) if a set
of feature flags is enabled.
Nr°   zrabbitmq-serverT)r"  Útimeoutr   r�   z&Failed to query RabbitMQ feature flagszUnable to upgrade RabbitMQzªThe RabbitMQ feature flags could not be detected.

Please follow the instructions at https://discourse.ubuntu.com/t/77271 to prepare RabbitMQ for the upgrade, then retry.rs   ÚstateÚenabledzçYour RabbitMQ server installation requires manual preparation before it can be upgraded to the newer version.

 Please follow the instructions at https://discourse.ubuntu.com/t/77271 to prepare RabbitMQ for the upgrade, then retry.)z/usr/sbin/rabbitmqctlz--formatterr  Úlist_feature_flags>   Úrestart_streamsÚstream_filteringÚstream_update_config_commandÚ$stream_sac_coordinator_unblock_group>   Úmqtt_v5Úrabbit_mqtt_qos0_queueÚdelete_ra_cluster_mqtt_node)r  r   rµ   r5   r8   rO   r‡   r   r  r   rˆ   r¥   ÚSubprocessErrorÚUnicodeDecodeErrorÚJSONDecodeErrorr$   rÝ   rv   r   rœ   rw   r  rä  ÚkeysÚissubset)r   r  ÚresultÚ	raw_flagsrù   Úmessageró  Úfeature_flagsrF  Úenabled_flagsÚcore_required_flagsÚmqtt_required_flagsÚhas_mqtts   &            r   r2   ÚMDistUpgradeQuirks._test_and_fail_rabbitmq_server_installed_and_not_upgradablex  s  € ó
 	à�?‰?×!Ñ! ZÔ/Ùð  §¡×!6Ñ!6Ô6Ø�O‰O×!Ñ!Ð"3Õ4×A×AÐAáð	$Ü—^’^òð ØÜ!—‘ô
ˆFð Ÿ
™
 6§=¡=×#7Ñ#7¸Ó#@ÓAˆIñ( "ó
á!�ð ��L˜4 �=¨IÑ5Ò5Ù!ð 	ð 
ð "/×!4Ñ!4Ô!6ô
á!6‘�Ü÷ ˆDÙ!6ð 	ñ 
ò
Ðò
Ðô
 Ð+×.@Ñ.@Ó.BÕBÓCˆð %×-Ñ-¨m×<Ò<ßÐ1×:Ñ:¸=×IÒIäÐ4Ó5ˆGÜð/óˆGð �J‰J×Ñ˜WÔ.Ø�O‰O×!Ñ!Ö#ñ J‰Xøô[ Ü×&Ñ&ÜØ× Ñ ð	
ô 	$ô ×ÒÐFÔGÜÐ4Ó5ˆGÜð/óˆGð �J‰J×Ñ˜WÔ.Ø�O‰O×!Ñ!×#ð	$üò"
ùó
s&   Á-AF? ÃIÃ7IÄIÆ?BIÉIc                óH  € \         P                  ! R\         P                  4      p \        P                  ! RR.R\        P
                  \        P                  RR7      pRpTP                  P                  4        F€  pTP                  TP                  4       4      pT'       g   K,  TP                  R4      '       d   RpKG  TP                  R4      e%   TP                  R4      P                  4       R	9   pK~  RpK‚  	  T#   \        \        P                  3 d     R# i ; i)
zª
Check whether mysql_native_password is explicitly enabled in the
MySQL server configuration with my_print_defaults.
This is a valid workaround in MySQL 8.4 on resolute.
zb^--(?:loose[-_])?(?P<negate>skip[-_]|disable[-_])?mysql[-_]native[-_]password(?:=(?P<value>\S+))?$Úmy_print_defaultsÚmysqldT©r"  r   rì   r   FÚnegateÚvalue)ÚonÚforceÚforce_plus_permanent)rp   rq   Ú
IGNORECASErO   r‡   r   ÚDEVNULLr¥   rO  r   rŠ  rr   r   r.  Úlower)r   r|   rT  rF  rw  rr   s   &     r   Ú/_check_mysql_native_password_explicitly_enabledÚADistUpgradeQuirks._check_mysql_native_password_explicitly_enabledÐ  sú   € ô —*’*ð%ô �M‰Móˆð	Ü—^’^Ø$ hÐ/ØÜ!—‘Ü!×)Ñ)Ø#'ô)ˆFð ˆØ—M‘M×,Ñ,Ö.ˆDØ—M‘M $§*¡*£,Ó/ˆEßÙØ�{‰{˜8×$Ò$Ø’Ø—‘˜WÓ%Ò1ØŸ+™+ gÓ.×4Ñ4Ó6ð ;;ñ ;’ð ’ñ /ð ˆøô œ×3Ñ3Ð4ô 	Úð	ús   §9D ÄD!Ä D!c                ój  €  \         P                  ! RR.R\         P                  \         P                  R7        \         P                  ! . R
OR\         P
                  \         P                  RR7      pTP                  P                  4        Uu. uF  q"P                  4       '       g   K  TNK  	  ppTP                  R R7       \        T4      ^8”  d   TR,          R	.,           # T#   \        \         P                  3 d    . u # i ; i  \        \         P                  3 d    . u # i ; iu upi )zá
Get the list of up to 3 MySQL accounts still using the
mysql_native_password authentication plugin. Returns an empty list if
the pre-upgrade server is not running or the query fails. Adds ... if
there are more than 3 users.
Ú
mysqladminÚpingT)r"  r   rì   r`  c                 ó.   € V P                  R 4      '       * # )Úrootr  )Úusers   &r   Ú<lambda>ÚDDistUpgradeQuirks._get_mysql_native_password_users.<locals>.<lambda>  s   € ¨¯©¸Ó(?Õ$?r    )Úkey:Né   Nz...)Úmysqlz%--defaults-file=/etc/mysql/debian.cnfz--batchz--skip-column-namesz-ezVSELECT CONCAT(User, '@', Host) FROM mysql.user WHERE plugin = 'mysql_native_password';)rO   r‡   rg  r¥   rO  r   r   rŠ  r   Úsortru  )r   rT  rw  Úuserss   &   r   Ú _get_mysql_native_password_usersÚ2DistUpgradeQuirks._get_mysql_native_password_usersô  s  € ð	Ü�NŠNØ˜vÐ&ØÜ!×)Ñ)Ü!×)Ñ)õ	+ð	Ü—^’^ò<ð Ü!—‘Ü!×)Ñ)Ø#'ô)ˆFð #)§-¡-×":Ñ":Ô"<ÓMÑ"<˜$Ç
Á
Ç—�Ñ"<ˆÐMð 	�
‰
Ñ?ˆ
Ô@äˆu‹:˜Œ>Ø˜•9 ˜wÕ&Ð&àˆøô3 œ×3Ñ3Ð4ô 	ØŠIð	ûô œ×3Ñ3Ð4ô 	ØŠIð	üò Ns.   ‚8C* »9D ÂD0Â,D0Ã*D
Ä	D
ÄD-Ä,D-c                óº  € V P                   P                  pRV9  g   VR,          P                  '       g   R# \        R4      pV P                   P                  R8X  d`   V P                  4       '       d   R# V P                  4       pV'       g   R# RP                  V4      p\        R4      P                  VR7      pMhV P                  4       '       g   R# V P                  4       pV'       g   \        R4      pM,RP                  V4      p\        R	4      P                  VR7      pV P                  P                  W%4       V P                   P                  4        R# )
zé
MySQL Server installations with accounts using the
'mysql_native_password' authentication plugin will have those accounts
locked out completely in MySQL 9.7 and will have them locked out
without enabling it explicitly in MySQL 8.4.
zmysql-serverNzUnable to upgrade MySQLr°   rÅ   a  The following MySQL accounts use the mysql_native_password authentication plugin, which is disabled by default in the version of MySQL shipped with this release:

{users}

These accounts would be locked out after the upgrade. Please use a separate authentication method for them, such as caching_sha2_password, or explicitly enable mysql_native_password in your MySQL server configuration, then try the upgrade again.

For more information, see https://documentation.ubuntu.com/release-notes/26.04/summary-for-lts-users/#mysql)rw  zúYour MySQL server configuration currently has the mysql_native_password plugin enabled, which is no longer a supported configuration option in the version of MySQL shipped with this release. Please remove the config entry, then try the upgrade again.a�  The following MySQL accounts use the mysql_native_password authentication plugin, which is removed in the version of MySQL shipped with this release:

{users}

These accounts would be locked out after the upgrade. Please use a separate authentication method for them, such as caching_sha2_password, and disable the plugin in your MySQL server configuration, then try the upgrade again.)r   r5   r8   rv   rµ   ri  rx  r`  r‰   r   rœ   rw   )r   r5   rù   Únative_password_usersrw  rV  s   &     r   r3   ÚIDistUpgradeQuirks._test_and_fail_mysql_server_using_mysql_native_password  s/  € ð —‘×%Ñ%ˆØ Ô&Ø˜^Õ,×9×9Ð9ÙäÐ-Ó.ˆð �?‰?×!Ñ! ZÔ/à×CÑC×EÒEÙà$(×$IÑ$IÓ$KÐ!ß(Ùà—I‘IÐ3Ó4ˆEäð
Có÷ ‰f˜5ˆfÓ!ñ ð$ ×GÑG×IÒIÙà$(×$IÑ$IÓ$KÐ!ß(Üð9ó:‘ð Ÿ	™	Ð"7Ó8�äð	ó÷ ‘&˜u�&Ó%ð ð 	�
‰
×Ñ˜Ô*Ø�‰×ÑÖr    )	r   r   r   r   r   r   r   r   r   N)z /etc/X11/default-display-managerz+/etc/systemd/system/display-manager.service)z/boot/firmware)z/proc/device-tree)9Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r)   r?   rI   rS   r[   rb   ri   r6   r7   r`   r­   rD   ra   r'   rN   rW   rX   rÛ   rV   r<   r=   rE   r6  rE  re   rO  rV  rm  r  rG   r¡  rF   rH   rh   rg   rY   r^   r.   r0   r1   r4   rZ   r_   rf   r/   r2   ri  rx  r3   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r   '   s1  ø‡ € ñò*
&ò'ò"2òH(ò0<ò"4ò 2ò%ò-(ò^0
òdô<ò8Sòjò<;ò";òBòFò	òOòF$òP&*òP"LòH=ò .ò`:ò&	Gòò&4,òlrôh+&òZEô"#KôJFKòP+ò2/ò2EAòN!òF!$òF" ôH: òx$ò6ò:ò 1+òf$ òLV$òp"òH'÷RI ð I r    r   )r/  rÙ   r  ræ   r$   r9   rp   rO   r‡  r   r   r   r   ÚDistUpgradeGettextr   rv   r   r	   r
   r   Úobjectr   rÄ  r    r   Ú<module>r‡     s?   ðó, Û Û Û Û Û 	Û 	Û Û ß "ß 'å ,ß ?ß Kô ˜ö  r    