JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/dnf-plugins/__pycache__/system_upgrade.cpython-39.opt-1.pyc

a

�i�k�@s�dZddlmZmZmZmZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZmZddlZddlZddlmZddlmZddlZddlmZmZddlZed	�e�d
�Ze�d�Ze�d�Ze�d
�Z eZ!dZ"ed�Z#ed�Z$ed�Z%dZ&d5dd�Z'dd�Z(gfdd�Z)d6dd�Z*dd�Z+Gdd�de,�Z-Gd d!�d!e,�Z.e.�Z/Gd"d#�d#ej0j1�Z2d$d%�Z3d&d'�Z4d(d)�Z5d*d+�Z6gd,�Z7Gd-d.�d.ej8�Z9Gd/d0�d0ej:j;�Z<Gd1d2�d2e<�Z=Gd3d4�d4e<�Z>dS)7zGsystem_upgrade.py - DNF plugin to handle major-version system upgrades.�)�call�Popen�check_output�CalledProcessErrorN)�journal)�_�logger)�CliError)�ucd)�serialize_transaction�TransactionReplayzthe color of the skyZ 9348174c5cc74001a71ef26bd79d302eZ fef1cc509d5047268b83a3a553f54b43Z 3e0a5636d16b4ca4bbe5321d06c6aa62Z 8cec00a1566f4d3594f116450395f06cz/usr/bin/plymouthz<Need a --releasever greater than the current system version.z�Download complete! Use 'dnf {command} reboot' to start the upgrade.
To remove cached metadata and transaction use 'dnf {command} clean'zESorry, you need to use 'download --releasever' instead of '--network'�FcCs@tjddd�rt�td��n|r0tddg�ntddg�dS)NZDNF_SYSTEM_UPGRADE_NO_REBOOTF)�defaultz!Reboot turned off, not rebooting.Z	systemctl�poweroff�reboot)�os�getenvr�inforr)r�r�>/usr/lib/python3.9/site-packages/dnf-plugins/system_upgrade.pyrEs
rc	Cs�d}dD]�}zvt|��Z}|D]D}|��}|�|�r|t|�d��d�Wd�WSqWd�n1sv0YWqty�YqYq0qdS)NzUPGRADE_GUIDE_URL=)z/etc/os-releasez/usr/lib/os-release�")�open�strip�
startswith�len�IOError)�key�pathZrelease_file�linerrr�get_url_from_os_releaseOs

Rrc	Csxtj�|�sdSt�|�D]X}tj�||�}||vr6qz(tj�|�rRtj�|�n
t�|�Wqt	ypYq0qdS�N)
rr�isdir�listdir�join�dnf�utilZrm_rf�unlink�OSError)r�ignore�entry�fullpathrrr�	clear_dir^sr+cCs6tj�|j�|jkrtt��|r2||jkr2tt��dSr )r$�rpm�detect_releasever�installroot�
releaseverr	�RELEASEVER_MSG�CANT_RESET_RELEASEVER)�conf�targetrrr�check_release_verosr4c
CsRztdd�}|�d�Wn4tyL}zttd�|�WYd}~n
d}~00dS)Nz	/dev/tty0�wbs[9;0]z%Screen blanking can't be disabled: %s)r�write�	Exception�printr)Ztty�errr�disable_blankingxs

r:c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e	d�Z
e	d�Ze	d�Ze	d�Z
e	d�Ze	d�Ze	d�Ze	d�Ze	d�Ze	d�Ze	d�Ze	d�Ze	d�Ze	d�ZdS)�StatecCs||_i|_|��dSr )�	statefile�_data�_read)�selfr<rrr�__init__�szState.__init__cCs�z:t|j��}t�|�|_Wd�n1s.0YWn@tyRi|_Yn*tyzi|_t�t	d�|j�Yn0dS)Nz;Failed loading state file: %s, continuing with empty state.)
rr<�json�loadr=r�
ValueErrorr�warningr)r?�fprrrr>�s.

�zState._readcCsZtj�tj�|j��t|jd��$}tj	|j
|ddd�Wd�n1sL0YdS)N�w�T��indentZ	sort_keys)r$r%�
ensure_dirrr�dirnamer<rrA�dumpr=)r?Zoutfrrrr6�szState.writecCs&tj�|j�rt�|j�|��dSr )rr�existsr<r&r>�r?rrr�clear�szState.clearcCs|Sr rrNrrr�	__enter__�szState.__enter__cCs|dur|��dSr )r6)r?�exc_type�	exc_value�	tracebackrrr�__exit__�szState.__exit__cs"�fdd�}�fdd�}t||�S)Ncs||j�<dSr )r=)r?�value��optionrr�setprop�szState._prop.<locals>.setpropcs|j���Sr )r=�getrNrVrr�getprop�szState._prop.<locals>.getprop)�property)rWrXrZrrVr�_prop�szState._prop�
state_version�download_status�destdir�target_releasever�system_releasever�gpgcheck�gpgcheck_repos�repo_gpgcheck_repos�upgrade_status�upgrade_command�distro_sync�poweroff_after�enable_disable_repos�module_platform_idN)�__name__�
__module__�__qualname__r@r>r6rOrPrTr\r]r^r_r`rarbrcrdrerfrgrhrirjrrrrr;�s*
r;c@s@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)�PlymouthOutputz�A plymouth output helper class.

    Filters duplicate calls, and stops calling the plymouth binary if we
    fail to contact it.
    cCsd|_t�|_d|_dS�NT)�alive�dict�
_last_args�	_last_msgrNrrrr@�szPlymouthOutput.__init__cGsf||j�|�k}|jr|r"|dkr`ztt|f|�dk|_WntyTd|_Yn0||j|<|jS)N�--pingrF)rrrYrpr�PLYMOUTHr')r?�cmd�argsZdupe_cmdrrr�	_plymouth�s
zPlymouthOutput._plymouthcCs
|�d�S)Nrt)rxrNrrr�ping�szPlymouthOutput.pingcCs4|jr |j|kr |�dd|j�||_|�dd|�S)Nzhide-messagez--textzdisplay-message)rsrx�r?�msgrrr�message�szPlymouthOutput.messagec	CsPd}z$ttdg�}t�dt|��r&d}Wnttfy>Yn0|�dd|�S)NZupdatesz--helpz--system-upgrade�system-upgradezchange-modez--)rru�re�searchr
rr'rx)r?�mode�srrr�set_mode�szPlymouthOutput.set_modecCs|�ddt|��S)N�
system-updatez
--progress)rx�str)r?�percentrrr�progress�szPlymouthOutput.progressN)
rkrlrm�__doc__r@rxryr|r�r�rrrrrn�s

rnc@s$eZdZdd�Zdd�Zdd�ZdS)�PlymouthTransactionProgresscCs|�||||�dSr )�_update_plymouth)r?�package�actionZti_doneZti_totalZts_doneZts_totalrrrr��sz$PlymouthTransactionProgress.progresscCsd|dkrdS|tjjkr0t�td||��nt�dtd||��t�|�||||��dS)N�g�V@�Zg$@)r$�callbackZ
PKG_VERIFY�Plymouthr��intr|�
_fmt_event�r?r�r��current�totalrrrr��sz,PlymouthTransactionProgress._update_plymouthcCs tjj�||�}d||||fS)Nz[%d/%d] %s %s...)r$�transactionZACTIONSrYr�rrrr�sz&PlymouthTransactionProgress._fmt_eventN)rkrlrmr�r�r�rrrrr��sr�ccsFt��}|j|jdd�d}|D] }|d}||kr6q |}|Vq dS)zVFind all boots with this message id.

    Returns the entries of all found boots.
    r)�
MESSAGE_IDZ_UIDN�_BOOT_ID)r�ReaderZ	add_match�hex)�
message_id�jZoldbootr)Zbootrrr�
find_bootss�r�cCspttd��d}ttt��D]:\}}td�|d|d|d|�dd�|�d	d���q|dkrlttd
��dS)Nz3The following boots appear to contain upgrade logs:���u){} / {.hex}: {:%Y-%m-%d %H:%M:%S} {}→{}r�r�Z__REALTIME_TIMESTAMP�SYSTEM_RELEASEVERz??�TARGET_RELEASEVERz-- no logs were found --)r8r�	enumerater��ID_TO_IDENTIFY_BOOTS�formatrY)�nr)rrr�	list_logs$s

�r�cCsZtt|��}z*|dkrt�|dkr*|d8}||dWStyTttd���Yn0dS)Nrr�r�z!Cannot find logs with this index.)�listr��
IndexErrorr	r)r�r�Zbootsrrr�	pick_boot2sr�cCsDtt|�}tdd|jg�}|��|j}|dkr@tj�t	d���dS)NZ
journalctlz--bootr�z%Unable to match systemd journal entry)
r�r�rr��wait�
returncoder$�
exceptions�Errorr)r�Zboot_idZprocess�rcrrr�show_logAs
r�)ZdownloadZcleanr�upgrade�logcs eZdZdZ�fdd�Z�ZS)�SystemUpgradePluginr}cs8tt|��||�|r4|�t�|�t�|�t�dSr )�superr�r@Zregister_command�SystemUpgradeCommand�OfflineUpgradeCommand�OfflineDistrosyncCommand)r?�base�cli��	__class__rrr@Rs


zSystemUpgradePlugin.__init__)rkrlrm�namer@�
__classcell__rrr�rr�Osr�cs(eZdZdZed�ZdZ�fdd�Zedd��Z	dd	�Z
d
d�Zdd
�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Z d6d7�Z!d8d9�Z"d:d;�Z#d<d=�Z$d>d?�Z%d@dA�Z&dBdC�Z'�Z(S)Dr�)r}�fedupz+Prepare system for upgrade to a new releasezvar/lib/dnf/system-upgradecsjtt|��|�tj�|jjj|j	�|_
tj�|j
d�|_tj�|jjjd�|_t
tj�|j
d��|_dS)Nzsystem-upgrade-transaction.jsonr�zsystem-upgrade-state.json)r�r�r@rrr#r�r2r.�DATADIR�datadir�transaction_file�
magic_symlinkr;�state)r?r�r�rrr@`s
zSystemUpgradeCommand.__init__cCs`|jdddtd�d�|jdddtd	�d�|jd
dtdd
�t�d�|jdttd�d�dS)Nz--no-downgraderg�store_falsez=keep installed packages if the new release's version is older)�destr��helpz
--poweroffrh�
store_truez1power off system after the operation is completed�tidr�z[%s]�|)�nargs�choices�metavarz--numberzwhich logs to show)�typer�)�add_argumentr�CMDSr#r�)�parserrrr�
set_argparserhs��
�z"SystemUpgradeCommand.set_argparsercCs(tj||tj|jj|jjtjjd�dS)zLog directly to the journal.)r�ZPRIORITYr�r�ZDNF_VERSIONN)	r�sendZ
LOG_NOTICEr�rar`r$�constZVERSION)r?r|r�rrr�
log_statusvs�zSystemUpgradeCommand.log_statuscCs|�d�|�d�dS)N�check�
pre_configure��	_call_subrNrrrr�s
z"SystemUpgradeCommand.pre_configurecCs|�d�dS)N�	configurer�rNrrrr��szSystemUpgradeCommand.configurecCs|�d�dS)N�runr�rNrrrr��szSystemUpgradeCommand.runcCs|�d�dS)Nr�r�rNrrr�run_transaction�sz$SystemUpgradeCommand.run_transactioncCs|�d�dS)NZresolvedr�rNrrr�run_resolved�sz!SystemUpgradeCommand.run_resolvedcCs.t||d|jjdd�}t|�r*|�dS)Nrr)�getattr�optsr��callable)r?r�Zsubfuncrrrr��szSystemUpgradeCommand._call_subcCs(|jjtkr$td�j|d�}t|��dS)NzFIncompatible version of data. Rerun 'dnf {command} download [OPTIONS]'��command)r�r]�
STATE_VERSIONrr�r	�r?r�r{rrr�_check_state_version�s
�z)SystemUpgradeCommand._check_state_versioncCs*|j|jj_|jjr|jjnd|jj_dSr )r�r�r2�cachedirr�r_rNrrr�
_set_cachedir�sz"SystemUpgradeCommand._set_cachedircCs�ttjjtjjg�}ttjj�}i}i}|jjjD]^}|j	|vrn|j
}|j|�|j
ji��t|�i�|j	<q4|j	|vr4|j|�t|j
�i�|j	<q4||fS)z�
        forward = {repoid:{pkg_nevra: {tsi.action: tsi.reason}}
        reverse = {pkg_nevra: {tsi.action: tsi.reason}}
        :return: forward, reverse
        )�setr$r�ZBACKWARD_ACTIONS�libdnfZ!TransactionItemAction_REINSTALLEDZFORWARD_ACTIONSr�r�r��pkg�reason�
setdefault�repo�idr�)r?Zbackward_actionZforward_actionsZforward�reverseZtsir�rrr�%_get_forward_reverse_pkg_reason_pairs�s 
���
z:SystemUpgradeCommand._get_forward_reverse_pkg_reason_pairscCs`|j|jj_|jjr|jjnd|jj_d|jjkrH|jjsHtt	d���nd|jjkr\d|j_dS)N�offline-distrosynczFCommand 'offline-distrosync' cannot be used with --no-downgrade option�offline-upgradeF)
r�r�r2r�r�r_r�rgr	rrNrrr�pre_configure_download�s�z+SystemUpgradeCommand.pre_configure_downloadcCs|��dSr �r�rNrrr�pre_configure_reboot�sz)SystemUpgradeCommand.pre_configure_rebootcCs.|��|jjr|jj|j_|jj|jj_dSr )	r�r�rir��repos_edr`r�r2r/rNrrr�pre_configure_upgrade�sz*SystemUpgradeCommand.pre_configure_upgradecCs|��dSr r�rNrrr�pre_configure_clean�sz(SystemUpgradeCommand.pre_configure_cleancCsd|jjksd|jjkr�t�td��t�}|rLtd�}t�|�t|���|j	�
�r�td�}|j	jjs�|j	j
jd�|�d�|�d�s�t�td	��t�d
�t|j	j|jjd�nd|jjkr�|j�|j�d
|jj_d
|jj_d
|jj_d
|jj_d
|jj_|j	jjdg7_dS)Nr}r�z\WARNING: this operation is not supported on the RHEL distribution. Proceed at your own risk.z-Additional information for System Upgrade: {}zyBefore you continue ensure that your system is fully upgraded by running "dnf --refresh upgrade". Do you want to continuez
{} [y/N]: z
{} [Y/n]: )r{Zdefaultyes_msgzOperation aborted.r�)r3r�T�test)r�r�rrDrrrr�r
r�Z
_promptWantedr2Zassumeno�outputZuserconfirm�error�sys�exitr4r/r�Z _populate_update_security_filter�demands�	root_user�	resolving�available_repos�sack_activationZfreshest_metadataZtsflags)r?Zhelp_urlr{rrr�configure_download�s,
�





z'SystemUpgradeCommand.configure_downloadcCsd|jj_dSro�r�r�r�rNrrr�configure_reboot�sz%SystemUpgradeCommand.configure_rebootcCs�d|jj_d|jj_d|jj_d|jj_|jj|j_|jj	durN|jj	|j
j_	|jjdur||j
j
��D]}|j|jjv|_	qf|jjdur�|j
j
��D]}|j|jjv|_q�|jj|j
j_d|jj_d|j
j_t�|jj_d|j
j_d|j
j_dS)NTF)r�r�r�r�r�r�r�rgr�rbr�r2rc�repos�valuesr�rd�
repo_gpgcheckrjZ	cacheonlyZ	assumeyesr�Ztransaction_displayZclean_requirements_on_removeZinstall_weak_deps)r?r�rrr�configure_upgrade�s&






z&SystemUpgradeCommand.configure_upgradecCsd|jj_dSrorrNrrr�configure_cleansz$SystemUpgradeCommand.configure_cleancCsdSr rrNrrr�
configure_logsz"SystemUpgradeCommand.configure_logcCs~|jjdksttd���|�|jj�|jj|jjkrRtd�j|jjd�}t|��t	j
�|j�rlttd���t
j�|j�dS)N�completezsystem is not ready for upgradezZthe transaction was not prepared for '{command}'. Rerun 'dnf {command} download [OPTIONS]'r�zupgrade is already scheduled)r�r^r	rr�r�r�rfr�rr�lexistsr�r$r%rJr�rzrrr�check_reboots�z!SystemUpgradeCommand.check_rebootcCs�tj�|j�s$t�td��td��t�|j�|j	krLt�td��td��t
jj�
|j�|jj}|sp|jj}|�|�|jjdks�td�j|d�}t|��dS)Nz-trigger file does not exist. exiting quietly.rz1another upgrade tool is running. exiting quietly.�readyz/use 'dnf {command} reboot' to begin the upgrader�)rrr	r�rrr�
SystemExit�readlinkr�r$ZyumZmiscZunlink_fr�rfr�r�r�rer�r	r�rrr�
check_upgrade!s
z"SystemUpgradeCommand.check_upgradecCs@t�|j|j�|j�}d|_Wd�n1s20YdS)Nr)r�symlinkr�r�r�re�r?r�rrr�run_prepare4sz SystemUpgradeCommand.run_preparecCsL|��|jjddksdS|jj|j_|�td�t�|j��t	�dS)NrrzRebooting to perform upgrade.)
rr�r�rhr�r�r�REBOOT_REQUESTED_IDr6rrNrrr�
run_reboot;s
�
zSystemUpgradeCommand.run_rebootcs��jjr�j��n
�j���jjdvr��j���fdd��jjjD�}|r\�j�|��fdd��jjj	D�}|r��j�|��j
�.}d|_�jjj
|_�jjj|_Wd�n1s�0YdS)N)r�r�cs$g|]}�jjj�|j�r|j�qSr)r��history�grouprYr���.0�grNrr�
<listcomp>T�z5SystemUpgradeCommand.run_download.<locals>.<listcomp>cs$g|]}�jjj�|j�r|j�qSr)r�r�envrYr�rrNrrrWrZdownloading)r�rgr�Zupgrade_allr�Z
read_comps�comps�groupsZenv_group_upgradeZenvironmentsr�r^r2r/r`r_)r?Zinstalled_groupsZinstalled_environmentsr�rrNr�run_downloadJs

z!SystemUpgradeCommand.run_downloadcCs�d}|j�}d|_|j}Wd�n1s,0Y|dkrHtd�}n|dkrZtd�}ntd�}|�|t�t��t�d�t�	|�t
�t|j|j
�|_|j��dS)	N�Z
incompleter�z1Starting offline upgrade. This will take a while.r�z4Starting offline distrosync. This will take a while.z0Starting system upgrade. This will take a while.r)r�rerfrr��UPGRADE_STARTED_IDr�r�r�r|r:rr�r��replayr�)r?r�r�r{rrr�run_upgrade`s $



z SystemUpgradeCommand.run_upgradecCsxt�td��t|jjjtj�	|jjj�j
g�|j�.}d|_d|_
d|_d|_d|_Wd�n1sj0YdS)NzCleaning up downloaded data...)rrrr+r�r2r�r$Z	persistorZTempfilePersistorZdb_pathr�r^r]rerfr_rrrr�	run_cleanzs
�zSystemUpgradeCommand.run_cleancCs |jjrt|jj�nt�dSr )r��numberr�r�rNrrr�run_log�szSystemUpgradeCommand.run_logcCs|j��dS)z5Adjust transaction reasons according to stored valuesN)r!Zpost_transactionrNrrr�resolved_upgrade�sz%SystemUpgradeCommand.resolved_upgradec
Cs�|jj��}|��s&t�td��dSt|�}z`t|j	d��,}t
j||ddd�|�d�Wd�n1sn0Yt
td��|j	��Wn>ty�}z&tj�td��t|����WYd}~n
d}~00tj�|jjj�}|j��}d	|_t|_|jj|_|jjj|_d
d�|jj� �D�|_!dd�|jj� �D�|_"||_#|jjj$|_%|jjj&|_&|jj'|_(|jjj)|_)|jj*|_+Wd�n1�s�0Yt,j|jj*d
�}t�|�|�-td�t.�dS)NzKThe system-upgrade transaction is empty, your system is already up-to-date.rFrGTrH�
zTransaction saved to {}.zError storing transaction: {}rcSsg|]}|jr|j�qSr)rbr��rr�rrrr�sz=SystemUpgradeCommand.transaction_download.<locals>.<listcomp>cSsg|]}|jr|j�qSr)rr�r(rrrr�sr�zDownload finished.)/r�rZget_currentZpackagesrrrrrr�rArLr6r8r�r'r$r�r	r�r,r-r2r.r�r^r�r]r�rgrbrrrcrdrar/r`rjr�rir_r�rf�DOWNLOAD_FINISHED_MSGr��DOWNLOAD_FINISHED_ID)r?r��data�fr9Z
system_verr�r{rrr�transaction_download�sB(0

�
�
*
z)SystemUpgradeCommand.transaction_downloadcCsX|jjrtd�}ntd�}t�|�|�|t�|��|jj	ddkrTt
|jj�dS)Nz1Upgrade complete! Cleaning up and powering off...z.Upgrade complete! Cleaning up and rebooting...rr�)r�rhrr�r|r��UPGRADE_FINISHED_IDr#r�r�r)r?Zupgrade_complete_msgrrr�transaction_upgrade�s

z(SystemUpgradeCommand.transaction_upgrade))rkrlrm�aliasesr�summaryr�r@�staticmethodr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr
rrrrr"r#r%r&r-r/r�rrr�rr�ZsH

	
 

(r�c@seZdZdZed�ZdS)r�)r�z%Prepare offline upgrade of the systemN�rkrlrmr0rr1rrrrr��sr�c@seZdZdZed�ZdS)r�)r�z(Prepare offline distrosync of the systemNr3rrrrr��sr�)F)N)?r��
subprocessrrrrrArZos.pathr~r�ZuuidZsystemdrZdnfpluginscorerrr$Zdnf.clir	Zdnf.i18nr
Zdnf.transactionZdnf.transaction_srrrZlibdnf.confr�ZUUIDr*rr r.r�rur0r)r1r�rrr+r4r:�objectr;rnr�r�ZTransactionProgressr�r�r�r�r�r�ZPluginr�r�ZCommandr�r�r�rrrr�<module>sj



���


	A.	s
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg