transactional-update-4.1.6-150400.3.6.1 >  A e#-p9|D%}:W#P/y!M>GS|<#O@ ± xA̻Vw PNj:cDOӹ7}j$ pui/aҁpIB@? ,1{3ߧvCX/“:emL:e+-O*>V wOUX j}z@iE 4gвB'[-P c p=+~[lE !TC6Jikae29d972af61be1d7170703f4e0df6fac80a7180113b9883a0b0776cf205129f61015123d8f2295afdd3e8201d4e1a5dede3f5f92:e#-p9|=_Y\vFym o$\A쿚Mn]5x(ҩ"B-inp38s /?"K8U仴Q'HlZ1ǻ^.8G^]9JЯK(7t XrFW=Y K<A%eʾMH`sIyL~nAثQ ȯTTlWKdYuo}%׼ '|C#&"#KxI:pL8?(d * Y5 KWE=d   T  h  | !0!!""d"#($$8$,{9&{:.{=>?@FGHlIXY\]h^7 b7cdefluv wx,y|z$Ctransactional-update4.1.6150400.3.6.1Transactional Updates with btrfs and snapshotstransactional-update is a tool to update a system in an atomic way with zypper, btrfs and snapshots.e#h01-ch3aSUSE Linux Enterprise 15SUSE LLC GPL-2.0-or-later AND LGPL-2.1-or-laterhttps://www.suse.com/System/Basehttps://github.com/openSUSE/transactional-updatelinuxx86_64: if [ -x /usr/bin/systemctl ]; then test -n "$FIRST_ARG" || FIRST_ARG="$1" [ -d /var/lib/systemd/migrated ] || mkdir -p /var/lib/systemd/migrated || : for service in transactional-update.service transactional-update.timer ; do sysv_service=${service%.*} if [ ! -e /usr/lib/systemd/system/$service ] && [ ! -e /etc/init.d/$sysv_service ]; then mkdir -p /run/systemd/rpm/needs-preset touch /run/systemd/rpm/needs-preset/$service elif [ -e /etc/init.d/$sysv_service ] && [ ! -e /var/lib/systemd/migrated/$sysv_service ]; then /usr/sbin/systemd-sysv-convert --save $sysv_service || : mkdir -p /run/systemd/rpm/needs-sysv-convert touch /run/systemd/rpm/needs-sysv-convert/$service fi done fi : if [ -x /usr/bin/systemctl ]; then test -n "$FIRST_ARG" || FIRST_ARG="$1" [ -d /var/lib/systemd/migrated ] || mkdir -p /var/lib/systemd/migrated || : for service in transactional-update-cleanup.service transactional-update-cleanup.timer ; do sysv_service=${service%.*} if [ ! -e /usr/lib/systemd/system/$service ] && [ ! -e /etc/init.d/$sysv_service ]; then mkdir -p /run/systemd/rpm/needs-preset touch /run/systemd/rpm/needs-preset/$service elif [ -e /etc/init.d/$sysv_service ] && [ ! -e /var/lib/systemd/migrated/$sysv_service ]; then /usr/sbin/systemd-sysv-convert --save $sysv_service || : mkdir -p /run/systemd/rpm/needs-sysv-convert touch /run/systemd/rpm/needs-sysv-convert/$service fi done fi: if [ -x /usr/bin/systemctl ]; then test -n "$FIRST_ARG" || FIRST_ARG="$1" [ -d /var/lib/systemd/migrated ] || mkdir -p /var/lib/systemd/migrated || : if [ "$YAST_IS_RUNNING" != "instsys" ]; then /usr/bin/systemctl daemon-reload || : fi for service in transactional-update.service transactional-update.timer ; do sysv_service=${service%.*} if [ -e /run/systemd/rpm/needs-preset/$service ]; then /usr/bin/systemctl preset $service || : rm "/run/systemd/rpm/needs-preset/$service" || : elif [ -e /run/systemd/rpm/needs-sysv-convert/$service ]; then /usr/sbin/systemd-sysv-convert --apply $sysv_service || : rm "/run/systemd/rpm/needs-sysv-convert/$service" || : touch /var/lib/systemd/migrated/$sysv_service || : fi done fi : if [ -x /usr/bin/systemctl ]; then test -n "$FIRST_ARG" || FIRST_ARG="$1" [ -d /var/lib/systemd/migrated ] || mkdir -p /var/lib/systemd/migrated || : if [ "$YAST_IS_RUNNING" != "instsys" ]; then /usr/bin/systemctl daemon-reload || : fi for service in transactional-update-cleanup.service transactional-update-cleanup.timer ; do sysv_service=${service%.*} if [ -e /run/systemd/rpm/needs-preset/$service ]; then /usr/bin/systemctl preset $service || : rm "/run/systemd/rpm/needs-preset/$service" || : elif [ -e /run/systemd/rpm/needs-sysv-convert/$service ]; then /usr/sbin/systemd-sysv-convert --apply $sysv_service || : rm "/run/systemd/rpm/needs-sysv-convert/$service" || : touch /var/lib/systemd/migrated/$sysv_service || : fi done fi: test -n "$FIRST_ARG" || FIRST_ARG="$1" if [ "$FIRST_ARG" -eq 0 -a -x /usr/bin/systemctl ]; then # Package removal, not upgrade /usr/bin/systemctl --no-reload disable transactional-update.service transactional-update.timer || : ( test "$YAST_IS_RUNNING" = instsys && exit 0 test -f /etc/sysconfig/services -a \ -z "$DISABLE_STOP_ON_REMOVAL" && . /etc/sysconfig/services test "$DISABLE_STOP_ON_REMOVAL" = yes -o \ "$DISABLE_STOP_ON_REMOVAL" = 1 && exit 0 /usr/bin/systemctl stop transactional-update.service transactional-update.timer ) || : fi : test -n "$FIRST_ARG" || FIRST_ARG="$1" if [ "$FIRST_ARG" -eq 0 -a -x /usr/bin/systemctl ]; then # Package removal, not upgrade /usr/bin/systemctl --no-reload disable transactional-update-cleanup.service transactional-update-cleanup.timer || : ( test "$YAST_IS_RUNNING" = instsys && exit 0 test -f /etc/sysconfig/services -a \ -z "$DISABLE_STOP_ON_REMOVAL" && . /etc/sysconfig/services test "$DISABLE_STOP_ON_REMOVAL" = yes -o \ "$DISABLE_STOP_ON_REMOVAL" = 1 && exit 0 /usr/bin/systemctl stop transactional-update-cleanup.service transactional-update-cleanup.timer ) || : fi: test -n "$FIRST_ARG" || FIRST_ARG="$1" if [ $1 -eq 0 ]; then # Package removal for service in transactional-update.service transactional-update.timer ; do sysv_service="${service%.*}" rm "/var/lib/systemd/migrated/$sysv_service" || : done fi if [ -x /usr/bin/systemctl ]; then /usr/bin/systemctl daemon-reload || : fi if [ "$FIRST_ARG" -ge 1 ]; then # Package upgrade, not uninstall if [ -x /usr/bin/systemctl ]; then ( test "$YAST_IS_RUNNING" = instsys && exit 0 test -f /etc/sysconfig/services -a \ -z "$DISABLE_RESTART_ON_UPDATE" && . /etc/sysconfig/services test "$DISABLE_RESTART_ON_UPDATE" = yes -o \ "$DISABLE_RESTART_ON_UPDATE" = 1 && exit 0 /usr/bin/systemctl try-restart transactional-update.service transactional-update.timer ) || : fi fi : test -n "$FIRST_ARG" || FIRST_ARG="$1" if [ $1 -eq 0 ]; then # Package removal for service in transactional-update-cleanup.service transactional-update-cleanup.timer ; do sysv_service="${service%.*}" rm "/var/lib/systemd/migrated/$sysv_service" || : done fi if [ -x /usr/bin/systemctl ]; then /usr/bin/systemctl daemon-reload || : fi if [ "$FIRST_ARG" -ge 1 ]; then # Package upgrade, not uninstall if [ -x /usr/bin/systemctl ]; then ( test "$YAST_IS_RUNNING" = instsys && exit 0 test -f /etc/sysconfig/services -a \ -z "$DISABLE_RESTART_ON_UPDATE" && . /etc/sysconfig/services test "$DISABLE_RESTART_ON_UPDATE" = yes -o \ "$DISABLE_RESTART_ON_UPDATE" = 1 && exit 0 /usr/bin/systemctl try-restart transactional-update-cleanup.service transactional-update-cleanup.timer ) || : fi fi``H//A큤A큤A큤e#e#e#e#e#e#e#e#e#e#e#eIe#e#eIe#e#e#e#e#23a08d3f2ffb6f3c5a4faa7c308adb908804547a814bf8e6ee46d9d4481b25dc6cf5fc61b4db3bfbff5ae6b6bfc0713bcb975fb846e480ba5ae5c111628eab03b6be6c251c3efab512a5a0865a3fb7436d39afc344148edd5425d38219798c191364d259643691e2f2f5b633279df22f53b3826867df1724c538a037a44ec883a4dbd8bc49e207e0178385c4588466853118a5af1253204bc3d737d8e22248f3521f0892ae8a7ad78b2e94c574d573be75c4f76c70d9620c79891e584b4653b8ce6b2cf0140f8325733c93a7ac3711b54d5d7ae92367cfbe01842913d8448e780d52a2d47f70baaeb9c369ddbb15251fc206d60bfdddd88c9fdc9949a1c58d83d77fc3cebb7c1c69f0fd1bf742bc9edef93e2931a756301020c6c4ee1f830a588219ef8c377ae316a01bfc558440e4c018e7323f985734b529c8763cc6f60fdd483dcf796bf90d6b3013cb3a0c3fa0338d8825606af06782449bd50e041f3d004ec94987f3af0b357c6af2280ebcb5b352e6c5fd51f4c33eed6e89d8f20ccb6cf6f73bbcb1b4124f85ec5d8e234426cff0d036bb049afd7bb0ae5a280ed8273571044574c91caea668c903581ef94020ffa7db2751805289a46295255ef90221eb1124a2ff49049b3ec8e8f2045a5a3e44673ffa5def8399e4c3f1be39f88b45eb1124a2ff49049b3ec8e8f2045a5a3e44673ffa5def8399e4c3f1be39f88b45@rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootroottransactional-update-4.1.6-150400.3.6.1.src.rpmconfig(transactional-update)transactional-updatetransactional-update(x86-64)@      /bin/bash/bin/sh/bin/sh/bin/sh/bin/sh/usr/bin/bcconfig(transactional-update)dracut-transactional-updatelogrotatelsofpsmiscrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)tukitzypper4.1.6-150400.3.6.14.1.6-150400.3.6.13.0.4-14.6.0-14.0.4-14.0-15.2-14.1.6-150400.3.6.14.14.3e@ccvc@c6@ccobbb@bq@b$@a@aa@araexaLl@aD@a<@a6a,@a /a /a@`@`\{@`KW`KW`H`H`>(`-@`*b@`&m`"y@`>`@`@`@`U_/@_@__t@_@_o-@_h_h_3_+_$_{^^^@^|@^ku^^F^V]^r]X]V]v>\\@\@\\\}@\eX@\eX@\N[[k@[[z@[#@[{@Zz@Z@Z@Z@Z@ZlZ@ZkZZ@ZqZTZ&@Z@Z@YYYV=@YS@YRHYP@Y0X@XX @XXXXX*X@X@X~@XWXRXN@XF@X5X2X2X-X@X@Xx@iforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comschubi@suse.comfvogt@suse.comiforster@suse.comschubi@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comaplanas@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comngompa13@gmail.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comkukuk@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comkukuk@suse.deiforster@suse.comiforster@suse.comkukuk@suse.deiforster@suse.comiforster@suse.comiforster@suse.comjengelh@inai.deiforster@suse.comiforster@suse.comiforster@suse.comiforster@suse.comkukuk@suse.deiforster@suse.comiforster@suse.comkukuk@suse.dekukuk@suse.dekukuk@suse.derbrown@suse.comrbrown@suse.comkukuk@suse.dekukuk@suse.dekukuk@suse.comkukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.dekukuk@suse.comkukuk@suse.dekukuk@suse.de- Version 4.1.6 - Use permissions of real /etc when creating overlay [bsc#1215878] - Version 4.1.5 - Add support for configuration file snippets - Version 4.1.4 - Workaround for broken Tumbleweed package libfdisk1- Version 4.1.3 - Suppress SELinux relabelling output in quiet mode - Documentation readability improvements- Version 4.1.2 - Don't try to mount user mounts if they don't exist [boo#1207366]- Version 4.1.1 - Mount user specific binddirs last: Prevously the internal mounts would potentially overwrite user bind mounts [boo#1205011] - selinux: Relabel shadowed /var files during update to make sure they don't interfere with the update [boo#1205937] - Clean up /var/lib/overlay more aggressively [boo#1206947] - tukit: Merge /etc overlay into parent if --discard is used together with --continue - previously the files were incorrectly always merged with the currently running system - status: do not execute the status command if experimental - Don't delete created mount point dirs any more - Small code optimizations- Version 4.1.0 - t-u: Add a "setup-kdump" command; implements [jsc#PED-1441] - Export TRANSACTIONAL_UPDATE_ROOT (the path to the snapshot) in the update environment; implements [jsc#PED-1078] - Add support for "notify" reboot method for desktop use [gh#openSUSE/transactional-update#93] - Fix kdump initrd recreation detection; the check was performed in the active snapshot instead of the target snapshot - Document register command [bsc#1202900] - Avoid unnecessary snapshots for register command [bsc#1202901] - Various optimizations for register command - Remove bogus error message when triggering reboot - Rework /etc overlay documentation in "The Transactional Update Guide" - Fix incorrect manpage formatting - Remove leftover "salt" reboot method in configuration example file - Replace deprecated std::mem_fn with lambdas- Migration of logrotate configuration to /usr/etc: Saving user changed configuration files in /etc and restoring them while an RPM update.- Version 4.0.1 - create_dirs_from_rpmdb: Just warn if no default SELinux context found [gh#openSUSE/transactional-update#88], [bsc#1188215] - create_dirs_from_rpmdb: Don't update the rpmdb cookie on failure [gh#openSUSE/transactional-update#88] - Handle directories owned by multiple packages [gh#openSUSE/transactional-update#90], [bsc#1188215]- Version 4.0.0 - Last minute interface change: Changed "List" method of Snapshot D-Bus interface to return a map of properties instead of a comma separated list of strings; this will allow retrieving the snapshot properties even if they contain a comma in their value [boo#1202147] - Remove "Snapshot.hpp" as a public API for now - all public functionality is part of SnapshotManager.hpp - Add header file documentation for SnapshotManager.hpp - Add method to delete snapshot [gh#openSUSE/transactional-update#52] - Allow setting description of snapshot [gh#openSUSE/transactional-update#55] - create_dirs_from_rpmdb: set SELinux file context of missing directories [gh#openSUSE/transactional-update#84], [bsc#1197242] - Fix broken logrotate due to typo in config file [gh#openSUSE/transactional-update#87] - create_dirs_from_rpmdb: Fix handling return code of create_dirs() [gh#openSUSE/transactional-update#86] - Fix broken "shell" prompt after selfupdate - Add documented D-Bus interface definition files - Add tukit_sm_get_current and tukit_sm_get_default to C interface - Fixed typos- Moved logrotate files from user specific directory /etc/logrotate.d to vendor specific directory /usr/etc/logrotate.d.- Version 4.0.0~rc4 - Fix building with GCC 12 - Fix stack overflow with very long commands / ids [bsc#1196149] - Use separate mount namespace for chroot, allowing overwriting the bind mounts from the update environment - this could have lead to data loss of the bind mount previously - Fix C error and exception handling for snapshots- Version 4.0.0~rc3 - Add Snapshot interface - Reworked signal handling: All public signals are sent from the main thread now, keeping the same sender for everything - Implement D-Bus call "Execute" for Transactions - Implement interface for listing Snapshots - Implement Reboot interface - Fix bug when using --continue on old snapshots - Fix hypothetical integer overflow in snapshot list [bsc#1196826] - Fix wrong sort order in status command [gh#openSUSE/transactional-update#80]- Version 4.0.0~rc2 - Fix missing prompt in "shell" command [bsc#1196580] - Add output of tukit commands to log file - Fix compilation error with GCC12 [boo#1194876] - Fixed (non-critical) security review comments [boo#1196149] - Fixed selfupdate - Code cleanup- Version 4.0.0~rc1 This release is API, but not ABI compatible with previous releases; existing applications will have to be recompiled against this new version. Major features: - Introduces a D-Bus service to access the libtukit API via the org.opensuse.tukit.Transaction interface - Introduces a C binding via libtukit.h. Other changes: - t-u: Rework --quiet handling to make sure no output is shown even in error cases; this is necessary for automation, e.g. with Salt. [gh#openSUSE/transactional-update#73] - tukit: Allow storing command output into variable by introducing a new optional parameter for "execute" and "callExt". - Replace multiple and non-standalone occurenses of {} in "callExt" argument. - Split transactional-update.timer into transactional-update.timer and transactional-update-cleanup.timer; the later will clean up old snapshots even when the system does not do automatic updates. - tukit: Remove legacy alias "setDiscard" for "setDiscardIfUnchanged". - Throw exception if snapshot is not found. - Fix various compiler warnings - Update spec file: - Include tukitd D-Bus daemon - Only install one version of the library (as there are no breaking API changes yet) - Add %pre scriplets for systemd services - Replace %systemd_postun scriptlets with %systemd_postun_with_restart to satisfy rpmlint checks - Add transactional-update log file as %ghost file- Version 3.6.2 - Bind mount root file system snapshot on itself, this makes the temporary directory in /tmp unnecessary; also fixes [boo#1188110] to return the correct snapshot's working directory via API call. - Use separate mount namespace for transactional-update; this should fix several applications that fail to run if a mount point has the 'unbindable' mount flag set- Version 3.6.1 - Fix rsyncing /etc into the running system with - -drop-if-no-change [bsc#1192242]- Version 3.6.0 - Simplify mount hierarchy by just using a single slave bind mount as the root of the update environment; this may avoid the error messages of failed unmounts May fix [boo#1191945]- Version 3.5.7 Various fixes affecting Salt support: - t-u: Don't squash stderr messages into stdout - t-u: Correctly handle case when the snapshot has been deleted due to using --drop-if-no-change: Don't show reboot messages and avoid an awk error message [bsc#1191475] - tukit: Make inotify handler less sensitive / ignore more directories [bsc#1191475]- Version 3.5.6 - tukit: Add S/390 bootloader support [bsc#1189807] - t-u: support purge-kernels with t-u patch [bsc#1190788]- Version 3.5.5 - t-u: Use tukit for SUSEConnect call [bsc#1190574] Correctly registers repositories- Version 3.5.4 - tukit: Fix resolved support [boo#1190383]- Version 3.5.3 - t-u: Purge kernels as part of package operations Required for live patching support [bsc#1189728]- Version 3.5.2 - tukit: Fix overlay syncing errors with SELinux [bsc#1188648] - Don't print message for `shell` with --quiet [gh#openSUSE/transactional-update#69]- Version 3.5.1 - t-u: Disable status file generation by default The new experimental `status` command requires the availability of /etc/YaST2/control.xml, which is not present on all systems. Hide the creation of the corresponding status file behind a new EXPERIMENTAL_STATUS option to try out this functionality. - Increase library version- Add tukit.conf to spec file- Version 3.5.0 - Add alias setDiscardIfUnchanged for setDiscard. The old method name wasn't really clear and will be removed if we should have an API break in the future - Replace mkinitrd with direct dracut call [boo#1186213] - tukit: Add configuration file support (/etc/tukit.conf) - Allow users to configure additional bind mounts (see /usr/etc/tukit.conf for an example and limitations) [bsc#1188322] - Add 'transactional-update status' call. This is a POC for obtaining a hash of a system to verify its integrity. The functionality is still experimental! - Internal bugfixes / optimizations- Version 3.4.0 - Apply SElinux context on /etc in transaction [boo#1185625], [boo#1185766] [bsc#1186842], [boo#1186775] - Implement inotify handling in C instead of Bash; this makes the - -drop-if-no-change option work on SLE Micro [bsc#1184529] - Use `tukit call` for up, dup and patch to allow resuming an update after zypper updated itself in the snapshot [bsc#1185226] - Fix obsolete output type messages in initrd [boo#1177149] - Make different base snapshot warning more visible [bsc#1185224]- Version 3.3.0 - Add support for more package managers by bind mounting their directories - Support snapshots without dedicated overlay [boo#1183539], [bsc#1183539] - Link RPM database correctly with older zypper versions [boo#1183521] - Don't discard manual changes in fstab [boo#1183856], [bsc#1192302]- Revert inotify-tools dependency: The package is not available in SLE. This will probably have to be implemented as a native C version.- Version 3.2.2 - Don't skip patches with rebootSuggested flag [bsc#1183442]- Version 3.2.1 - t-u: Forward --quiet option to tukit - Regression: Add /opt as bind mount into update environment - Remove output indicators of the called command to not tamper the result line - Fix /etc syncing with --drop-if-no-change- Requires inotify-tool to have --drop-if-no-change available- Version 3.2.0 - tukit: Add new command 'callext' to execute an application while the snapshot is mounted. '{}' as a parameter will be replaced with the path of the bind mount. - Fix --drop-if-no-change [boo#1182525] - Check whether self-updated version is executable (e.g. on noexec /tmp) [bsc#1173842] - Fix overlay synchronisation with SELinux (again) - Always overwrite supplemental files (e.g. for network configuration) even if they exist in the snapshot already [boo#1182544] - Improve logging and error messages- Version 3.1.4 - SELinux: Fix syncing of SELinux attributes when using overlays - SELinux: Tag the overlay directory itself (again)- Version 3.1.3 - Fix overlay syncing on SELinux systems - Fix resuming transactions where the parent does not exist any more- Version 3.1.2 - libtukit: Report when application was terminated due to a signal, and return the signal number as a return value. This will cause the transaction to be aborted when called via `execute`. - libtukit: Set PATH variable for internal commands to fixed value to find the helper applications, as in some environments such as PolicyKit PATH wouldn't be set. - Fix compiler warnings- Version 3.1.1 - Fix hang in tukit on aarch64 [bsc#1181844] - Prevent deletion of snapshots when resuming a snapshot where no transaction is open - Make tukit work in non-dbus environments [boo#1181934]- Version 3.1.0 - t-u: Support installing RPMs from the user's directory again - Adapt selfupdate to new packaging - Implement signal handling - Remove empty text files- Add libselinux build time dependency - Remove RPM version check- Fix libstdc++ filesystem ABI incompatibility by using newer gcc version on old distributions. [boo#1181582]- Rework packaging based on Fedora packaging to separate all the components to remove the intrinsic requirement for Zypper- Version 3.0.0 - This release changes the internal structure, but should be identical to the previous release feature wise. - Major parts of the previous Bash only application have been rewritten in C++ with the goal to provide an API around transactions; the transactional-update script is using that new interface internally already, however the API should be considered experimental for now - if you are interested to use it, please notify us in https://github.com/openSUSE/transactional-update/issues/52 - A new tool called "tukit" provides a C++ tool that can be wrapped by scripts to leverage the functionality. Please consider it experimental for now, the commands may still change. - Bugfixes: - Implement support for system offline update [boo#1180808] - Add statistics files to update environment [boo#1173282]- Version 2.38.3 - SELinux: Make synchronisation work for both pre-SELinux snapshots and later snapshots; SELinux support should be ready for most tasks now.- Version 2.28.2 - SELinux: Exclude security.selinux attribute from rsyncing (again)- Version 2.28.1 - SELinux: Fixed changing the wrong grub configuration file - SELinux: Move /.autorelabel file to writeable location- Version 2.28 - Add 'setup-selinux' command for easy setup of a SELinux system - Allow complex commands for the 'run' command - SELinux: Fix /etc / overlay labeling- Version 2.27 - Add support for network systemd-resolvd network connections in t-u environment - Mount /var/lib/ca-certificates read-write to prevent SELinux error - Prevent calling transactional-update from within transactional-update- Version 2.26 - Fix broken sync for second snapshot [boo#1176989] - Add new options to allow separate cleanup of snapshots and overlays - Check for existence of inotifywait before using it - Check that mount options don't exceed maximum length- Version 2.25.1 - Fix inotify watcher setup - Use log_{info,error} for more messages to avoid messing up Salt logs- Version 2.25 - Reduce number of overlays: Instead of using transparent overlays for all previous layers only add the previous snapshot's overlay; this will greatly reduce the number of overlays while still making sure that /etc changes in the running system will be visible in the next snapshot - When using --drop-if-no-change synchronize potential /etc changes with running system - Exclude all non-root-fs mounts from inotify watcher- Version 2.24.1 - SELinux: adjust labels for etc, fstab and grub.cfg- Version 2.24 - Add partial SELinux support- Version 2.23 - Add "run" command to be able to execute a single command in a new snapshot - Add "--drop-if-no-change" option to discard snapshots if no changes were perfomed (BETA, required for Salt integration) - Removed previous CaaSP Salt support (gh#openSUSE/transactional-update#33) - Avoid "file not found" message on systems without /var subvol- Remove unused attr requires - Change bc to file requires- Version 2.22 - Use pkgconf to determine installation paths - Enable SSL connections in update shell [boo#1149131] & [boo#1133891] & [boo#1192078]- Version 2.21.1 - Rework error messages on failing umount [boo#1168389]- Update to version 2.21 - Use slave mounts for /proc, /sys & /dev- Update to version 2.20.4 - Mount efivarfs on EFI systems to make sure the bootloader will be installed correctly [boo#1162320] - Fix removal of existing overlay directories- Add dependencies to btrfsprogs, zypper and snapper - most of the functionality is not usable if those applications are not installed. [boo#1166502]- Update to version 2.20.3 - Reintroduce compatibility with RPM < 4.15 for inclusion in SLE / Leap 15.2 - Prepare for removal of /var/lib/alternatives [jsc#SLE-9101]- Update to version 2.20.2 - Use full names for zypper options [bsc#1164543] - Ignore /var/lib/rpm in shadowed file output - Optimize create-dirs-from-rpmdb- Update to version 2.20.1 - Add missing documentation about --continue option - Avoid error message about missing fstab file on first snapshot creation. [boo#1160213]- Update to version 2.20 - Add the option `--continue` to extend an existing snapshot. This can be used to perform multiple operations before rebooting into the new state. [gh#openSUSE/transactional-update#16] - Make sure the dracut service to print warnings on /etc overlay conflicts also runs in the pre-made images. - Add "none" reboot method - Remove conflicting overlay artifacts in case an existing overlay directory will be reused- Update to version 2.17 - Provide network in shell on systems where resolv.conf is pointing to /run directly [boo#1151081] - Print new snapshot number at the end - Always mount /root subvolume when using shell command to preserve history- Update to version 2.16 - Use default command if options, but no command was given [boo#1146116] - Make sure only one process appears in `ps` output [boo#1111897] - Move update check: If a new repository is added (and ZYPPER_AUTO_IMPORT_KEYS is set) adding the new repository key won't fail any more - Avoid unnecessary snapshots / reboots by detecting zypper operations without changes more reliably (e.g. when installing an already installed package) - Update the manpage accordingly - Bugfixes: - Ignore commented lines in fstab when checking for shadowed files - Avoid warning when copying network config - Remove Perl dependency - Building documentation requires Python 3 now- Update to version 2.15 - Move description of interactiveness [boo#1132438] - Enable network during update [boo#1137890] - Add compatibilty with new overlayfs versions [boo#1140057] - Allow updates of the bootloader on EFI systems [boo#1139015] - Add support for /boot/writable [boo#1138725]- Update to version 2.14.2 - Prevent unnecessary error message on systems not installed with YaST (e.g. KIWI)- Add requires for bc, needed for some calculations- Update to version 2.14.1 - Improve non-root fs changes checker based on feedback - Disable snapper's zypper plugin during transactional-update run - Allow parallel installation with snapper's zypper plugin (useful on read-write systems).- Update to version 2.14 - Warn user if contents of /var have been changed during update - Noteworthy: swapped position of upperdir and lowerdir in fstab for better readability - Major update to the transactional-update guide- Update to version 2.13.2 - add hooks for telemetrics- Update to version 2.13.1 - Bugfix: Clean up empty /etc snapshot directories again - Use official release files from GitHub for building- Update to version 2.13 - Fix a serious data loss problem (deleting all files in /etc overlays) in case /var/lib/overlay/etc is not part of any snapshot any more. - Avoid error message in case a system has no /etc/fstab.sys- Update to version 2.12 - Implements support for needs-restart (Fate#326451) - Adds easy rollback to last known working snapshot by using "last" as the snapshot number - Migrate /etc/fstab.sys entires to /etc/fstab for systemd being able to create mount units; this will prevent errors on unmount - Remove implicit --no-allow-vendor-change - this option can be configured in zypper's configuration file now - Add support for mounting the /etc overlay file system as a systemd unit in /etc/fstab on a read-only system (replacing /etc/fstab.sys in the long run) - Various bugfixes: - Only remove /etc overlays on read-only root file systems [boo#1122455] - Disable "Persistent" flag in systemd timer unit to prevent updates during or immediately after the boot phase - Don't set global zypper options during migration - this is not supported by the migration plugin - Fix error handling when interrupting while rsync is running - Filter out security.selinux attributes during rsync- Use noun phrase in summary.- Update to version 2.11 - Update man page to explain new /etc overlay handling - Add special handling for migrating away from old overlay directory - Read default update method for systemd service from config file - Add package "transactional-update-zypp-config" to prevent accidental transactional-update uninstallation on transactional systems (boo#1111319) - Use "up" for systemd service on non-rolling release distributions (boo#1111321)- Update to version 2.10 - Introduce /etc overlays - Each root file system snapshot now has a dedicated /etc overlay in /var/lib/snapshots//etc - Changes in older snapshots will be visible in newer snapshots (if the file hasn't been changed in both snapshots), but not the other way around; this makes it possible to roll back to a previous snapshot even if the configuration is broken - The /etc state of the oldest active snapshot will be synchronized into the new snapshot to prevent ever growing overlays - Removed creation of /etc backup snapshots - Removed complex overlayfs cleanup handling during dracut early boot; only thing left is to output a warning if files have been changed in old and new overlay after snapshot creation - Unused overlays will be removed during "cleanup" operation - Add compatibility with snapper >= 0.7.0 - Correctly detect BTRFS ID when using multiple snapper configurations - Fix disappearing prompt in "shell" command when application was updated - Prevent accidental rollback on fast reboots (boo#1111786) - Use zypper attribute packages-to-change if available (boo#1105992 & boo#1097619) - Add kexec as reboot alternative - Added explicit --with-doc / --without-doc build configure opttions for enforcing or excluding documentation build - Removed precompiled documentation (boo#1088676) - Added more dependency checks to configure script - Small improvements to documentation - Restored compatibility with older rsync versions not supporting the -x filter - Small bugfixes for cleanup in error situations - Fix possible incorrect detection of snapshots numbers during cleanup - Mention parent in snapshot description - Add dependencies for documentation build (boo#1088676)- Update to version 2.6 - Add --interactive and --non-interactive options to change the default interactivity for zypper calls. For previously non-interactive calls (e.g. dup) these options makes it possible to pick the correct solution in case of conflicts or make sure that a script will never be stuck at an input prompt. - Add kured reboot support - Tries to clean up temporary files and mount points if transactional-update quits unexpectedly - Remove trancactional-update-helper (replaced by zypper options) - Create /var/lib/zypp if not available (boo#1104452) - Robustify parsing zypper output (boo#1105992) - Various small fixes - Changed permissions of systemd script again- Update to version 2.5 - Support for overlayfs attributes like trusted.overlay.opaque - this will avoid disappearing configuration files on system updates - Documentation update - Only sync /etc if it's on an overlayfs mount - Use correct locale for zypper - thus updating locale specific packages and avoiding "empty" updates where transactional-update didn't see the change - Add dependency to attr - Fix permissions of systemd script- Update to version 2.4 - Bug fix release- Update to version 2.3 - Reformat help text / synopsis - More detailled output (use --quiet for less output) - Log all error messages into log file - Avoid potential lock file race condition on self update - Accept package names with whitespace - Don't wait for user input during self-update - Fix broken error message output when creating new snapshot without reboot - Fix erroneous mounting of stale grub mounts- Update to version 2.2 - Fix security issue in self update [boo#1091316] - Create dirs in /var more reliably by sorting the list - Rebuild initrd (needed since 2.0)- Update to version 2.1 - Cleanup the code cleaning up /etc- Update to version 2.0 - Create missing directories from rpm database during boot - Merge /etc overlay with root subvolume during update- Update to version 1.29 - Implement self-update - Disable optical media on dup - Ignore certain zypper return codes- Add conflicts with snapper-zypp-plugin- Require perl-HTML-Parser (needed since 1.26) [boo#1085764]- Update to version 1.28 - Adjust for latest grub2- Update to version 1.27 - Fallback to snapper without dbus support if dbus fails - Add workaround for update-alternatives - Add support for /usr/etc/transactional-update.conf- Use %license instead of %doc [bsc#1082318]- Update to version 1.26 - Auto accept repo keys config option - Detect broken snapshots after abort - Ignore user deleted snapshots - Include all error messages in main log file - Add configuration file - Correctly implement migration of major OS versions - Default reboot strategy is configuration option - Salt option is deprecated- Update to version 1.25 - preliminary SELinux support - support for seperate /var subvolume- Update to version 1.24 - Don't save unused snapshots if we may delete them again. Partly fixes [bsc#1071038] - Copy passwd, group and shadow to /usr/etc if modified- Update to version 1.23 - Fix re-registration in rollback case - Fix problems with updating the grub2 bootloader - Add support for migration of products with SCC/SMT - Re-add support to re-write bootloader [bsc#1068933]- Update to version 1.22 - Rewrite cleanup code to be more aggressive- Update to version 1.21 - Reset salt grains even if no update was found- Update to version 1.20 - Improve documentation - Add pkg update option- Update to version 1.19 - Add 'shell' option for debugging and testing- Update to version 1.18 - Auto accept product license in non-interactive mode- Update to version 1.17 - copy modified bootloader config into snapshot - unit file cleanup, no change of behavior- Update to version 1.16 - internal changes [bsc#1045942]- Update to version 1.15 - Rename option ptf to pkg - Add option to set salt grains- Update to version 1.14 - Fix check of return values of commands in pipes [bsc#1034900]- Update to version 1.12 - minor bug fixes- Update to version 1.11 - use --no-allow-vendor-change with "zypper dup" - update manual page- Update to version 1.10 - implement and document rollback option- Update to version 1.9 - fix umounting of special filesystems and subvolumes - fix interactive installation of PTFs [bsc#1023026] - fix dependencies of systemd service- Add Requires for lsof and fuser- Update to version 1.8 - fix references in html docu - build kdump initrd if we build standard initrd, too- Update to version 1.7 - build html docu, too- Update to version 1.6 - Add support for kdump [bsc#1018098]- Update to version 1.5 - Install PTFs in interactive mode - Sync state file between current and new snapshot- Update to version 1.4 - Fix wrong error messages - More debug output if umount fails - Try a second time if umount fails- Update to version 1.3 - Add initrd option- Do some spec file cleanup- Update to version 1.2 - suppport ro-subvolume with overlayfs- Update to version 1.1 - bug fix release - implement lock- Update to version 1.0 - implement and document PTF options- Update to version 0.99 - Support for rebootmgr - Write real manual page- Add empty directory /etc/systemd/system/transactional-update.timer.d/ so to make it easier to override transactional-update.timer entries.- Update to version 0.90 - Finish normal options - Implement support for PTFs- Disable restart on update for post install scripts- Implement activating the new snapshot as new root filesystem- Initial version/bin/sh/bin/sh/bin/sh/bin/shh01-ch3a 1696851480 4.1.6-150400.3.6.14.1.6-150400.3.6.14.1.6-150400.3.6.1 transactional-updateetctransactional-update.conftukit.conftransactional-update-cleanup.servicetransactional-update-cleanup.timertransactional-update.servicetransactional-update.timertransactional-updatetu-rebuild-kdump-initrdtransactional-updateNEWStransactional-update.txttransactional-updateCOPYINGtransactional-update.conf.5.gztransactional-update.8.gztransactional-update.service.8.gztransactional-update.timer.8.gztransactional-update.log/etc/logrotate.d//usr//usr/etc//usr/lib/systemd/system//usr/sbin//usr/share/doc/packages//usr/share/doc/packages/transactional-update//usr/share/licenses//usr/share/licenses/transactional-update//usr/share/man/man5//usr/share/man/man8//var/log/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:30989/SUSE_SLE-15-SP4_Update_Products_Micro53_Update/e77f9178c1c7bf97b71b50b0659a86b6-transactional-update.SUSE_SLE-15-SP4_Update_Products_Micro53_Updatecpioxz5x86_64-suse-linuxASCII textdirectoryBourne-Again shell script, ASCII text executableASCII text, with very long linestroff or preprocessor input, ASCII text (gzip compressed data, max compression, from Unix)troff or preprocessor input, ASCII text, with very long lines (gzip compressed data, max compression, from Unix)cannot open `/home/abuild/rpmbuild/BUILDROOT/transactional-update-4.1.6-150400.3.6.1.x86_64/var/log/transactional-update.log' (No such file or directory)RR8}uB`Wd'H inotify-toolsrebootmgrtukitd4.1.6-150400.3.6.1utf-85bf2e71541c866f26b16952823c7af410595b5bd1371d89f4934d0ede7f8709f?@7zXZ !t/ێ] crv(vX0q8ee:cwď7-<1N]m D^MㅿN8 g@o=B C"6CvM9#2|,6S; @@@}msy~Ӻ 87!(K86 4s&ۙĭ`@iqZ x0?dkFEN$ϓK.ekM->yF`s58Q~ηX5`x3tàݏjŊ2E M.`t&.MϪŃ;jc>M`q aSؐ`Hent-`Կ\9x&Qk5|,MzBB<#׌isv=~Lꚋk3.8*Vciǫ޹WoYo<3mHl ;zԌ{ЁtY?R]jxzL5{"l2zIhZ $V6@9*߀U'~rp##^NF21c8OFF: 6"i\[d5v~9;dEps;3}jf9E˞k4ބO 68*Bki 2}纃ڪ44ņe7Ù h>!1!R $9lE w@ZI*ge{L8a 4OƊjRf[>葇0]p{K&n2k=x@?nUT~aUȹvخ!}qLqV"GG2eH*KZ8=@)TFuכڞޑL Пi€ 1LMv4u%jjsa6>0mńldQl(bZrQuIJ-+"],[n1p~j䅀K GՕAqʦ'@߇!%: Ȱ2Lܭ|f_y%fjWF@>IHIW:\s"16$d L(7TB+s&Rf=YXD(opG0bl[9Wup+*H[soe;cTIj͊~u.K즘K/I^6{Y4$fFQ2uDd~ti'W0 7ʸ1X̷A?)HuSb<0&sg.'U'=OXJYA4 ^jIly: mRq[+V3]qa`ZuB`O*&=?%6 WzK틐K,֗e3Q}MOǔqZ,?T) 52r/42%1e 1s1Җ<K9[=2d#Pf_=v /Z5\ ?&Ƽ9 ʢN:`ywǰ@DH=؜"SSkLذGb`G Կܚ+qm3L\ 'B>ubG{6[>"s hڠTԃc;]U}1͈#'%J5uC5;%SuÛ+FGv3p7/_]&o.J7L iaUϵ% V]U #9-cGI QIa j L߸2(M]D3-<I6T!<-`LZȩ"JDO%J|FpxW8׹ E&|2:>\\ѬGij[ț3~?!N"d0-#flލ@z)Z-̤}T 0nKy Eu qZ0-")tx1[T6v'#|N Ljl] ܸ R$,hG ([^R'@ 'FzFs8B''aws( /_D|֚ a; yr R kf巐_|5έUht5y+0|ܙmTK͊z'^G(eAg &sqA1|'M+jy"6Y,`7GgS[>TGt%!c `6-߳lkVTS ӌ:VSV $.ɲO_JD08$ @;.\y/HRkڀP;@7if',mVա~yrxdIll!pʊ ԒǹܨTa+ul jzR#VON"_)Vk[׊9gXbS!>LDEtD?Ls}@ʫU>i71m=mhS#T[xd_Bت[8Wck\;!`\O,{ dݻgep/Ӱ'J{re\#)|]o4#Rz;#s{'O.5tǼ~Wz%fbL0l'a F:A-H-ղ,J"B4E"E +dG&c<FoߩuKDQWŀ ?KP֦-hbS'"4 =1d vŸbPli䑎cM߿{4z{+cE|>0dAz$d}V!+5}HD@1 &TH SH|;QT|ӬtTY]T.]+GV] FY_ѸVd6ДVyS/˒Cq99"?q9P逤u ت+Σ3[_lZl]m(MtR=p̑ݼRgUBw ,=yD11N&9@מ/k`9TdP"G"PR?  q43dLE>-Á[W>\0F3=`j0Fb6Z⧸F?/xY,M/H>% JS ?dZ؁?Eg?W?>@+Q:KO&槹E0=`+۷t]&'8QS4*Qs Q2L | vm}qHi&nدq) pQ q;j9ڪH{o%Oq4;S4MfaM>,{t~ҋE-2]8f H/;4PHPk-`CubG\{V2|%y(S@YxL4ߝ8p?Yf> ̉fSg00$lmN?ИnS'Ll/K2f}S6vɾ.Ԛǣ++ 4@y^G!o- v@ "fRFJTSri?aKGAjfE[]t'w'гWեJa\X_'yxuK0Ez4C sWV^ efoI1/eU><h#u3a{#;{'ZTf_{)r2a҇(p%Ij6S-nZKڌe`r; ceJf0D%p^:ɝptS]/vFFQ}&9WRΧ{A7{D-/WLeNl`B\m'D#K -BH} >J@|| ~ O|q)ꬳ^(uy ΫE$7M5C\M kibZ;k*G$A`N`ͭ쮄OBE)e)} t3lઔ;^)k;mTOܟtY0iاFpncag8^2k L|aVq{ \`3 xvh VlWdZ"ޠ.z0ξP.G #ӥޗ}pt[̰pm+p{@Ɇf#Gp>vw" 1c@թ u_(~p ŰZ'S#{{E?tpC'rdd8*0>tN=Bj- O(*1CYc9-v\>~ z)fYWLaܵk=;W5nm͛[囹㨛Sb`]avvBHCL wLt > '+F2Fl\R, 4K'a?+Ϫ8;%uucQ I>~]Oxs3)'z¥-@ ` qدuagXn&tnUעt+/Ꞔq&02l]}ZG,{sW}bg5tZ5 z1IV-R1͜QT7'$'ێe=Bԧ7tgʉ%I1IϜ:hu4[0Q:5 C{ YRhaƑU=^RxmDTJ#lK k̡+f}ژ*:-֠%(Hb KLe ۤ;D?Z>$aZR3W' S]( 5{ڪмR>;(wр[.O}n NTdWeCᣈy-+`&p̷ ( ?k 8R (2d.d uܟ?h$ȹ|p}:c1,uHǙti['펎 e#2P+ޱi42Ԉ9R/* Cn2%˜$]zƪbð 9C(Wu=K±"_ qfgU@l~wxXvw,',Qv=K\tt&ȀWӪ~ ^^~w#j:J jhkH 闉͔Xj{s-C(Ⱥ8w&6f.@+/zݙabGsz.JXjx:5@p!0U;owPnr9HŒ J\G4~8I*i$&z{ܧF`#MvmG]Nlwm;q- m{ʠlt5$8<Dd0N<̼2w@@P[Nj 4C(7q"F1W!<2Bv;?ϝӼ/ y{Zv2x%wCɊ1NJH+l0YiwQBg:QOlBIvWƧ$/Z_$)4/\paHd(m*kV.Bq\5rQ~r@H;T[kПzO,qN PmM='?H]/ ucS%{v8m/OI;v|nȡ@XE_h\{JQ"$QjrLvG(P]gre̺MT$k=!pxQt3FӷÂ#w%g Ze| ؤ?5󻶎!z[*ւ!O-x8z>. &Ko=^,PdB p2 X(I=6?Q0vImLM8 gy &BY}" [ab3J'$QXQW]ܗaVxŘ|MgGNp%JXTUXZ[M}ԊAjclX23Jxvs<̦rF:1(EY =%΄50&g֣n"-rR(TUM6[E}txy3즂+z+Y V4)'5W>#RsN'.*m~ugX =`QB2JJ*3LBW陎R_Zcqxm vj%ab9n.U_C-6"KzT]+vKHV\A$/t{53Rb|f)FQZGs K$߮v0$b.@/mBQK= S^ei888R̀fMhIEhWSLA 8Q14ѯa 1c84&kgGe>a2eO7ͱ_(n_7[˒ҬHutxfqXX/ SqX8)->˒!VQwv7Ux/Of<KqU,,!~\Dzr3=3;D*-83j% CZopi1 KVRjVS_Sa-I暨L@8cЯ :^GkVJM~13 ,(i9;'c,}ߟz5T EM^@Yj#Ko(j㬉X|sF:pr&ɽ1zs}=-(7=alkn5C< >xRO]U;DfCs\E&7 v7/h'f/-x_ZL[8>x{zFq`PM*߁D}Uzmct_mj2Vwլ6yؕ,}ӷ_/NW^=(gs|C4*n,VrX#&|*J&H$Oβh2C'Ľ:*&CR.{ ?FJڹo;3M,%])M֘R=I|22d՘KߴaqdŹ)3j5hR*H#ZUsw #LC$B̍3oROLZQv-ԧ%O6iۘUxk vz]t⾱wK8<9~"j ֛u>X"/-5>+Mf'̘tJH-p$?ƘAQVj-`^fvL磒"ְV,8yCGˬ0ZA8cK"j4qmJ4Z}k3s?*Oօo^!1u½R1#Ku^ü&ԃ441fG҅RnGZzTv'MJPj!3ĵ-dDBuHNJ5tsN/N -Ľ*6C=epgs txo B`ey~WcǭA Y]o rS摻n:JlO"Fp!!6׏"]r*4ou}qI~!qU"WK0&G F9`me JzVghd_@'fՉ]ĕH*XWeػ+u.^B NZU ރ$ TGAYj2뵭JГ-zi"6*ӆfY0" d^|cE$&0 a0µ *TqL1WwR '5yb@Qe@\9j 6˶oQ6"H܄Q,ZIuÎ$~Ϻj&S ^Ԛ!G*!Zfa}.8:I:lrwjǝSǶ2XLi0JƛǍy{И4ww&/DWO L[uaXuaUեg/U_(8{ЋZ5cY@ñGwd*fʹM.2!RM G~zVj<1nuvv9M/؄87#Dr~E%0z F9tUDZAUZN Lԏ9aT ZtW~rXu<Ѣx(S|J̟ Mq(S{Azꪋmh)Vu%xѩ ü~WR&(|m!ʕ1J~^VQwj}5`/NS'I%!]>k ?ߚʁ9x B{dOۈtO-wl[Pyq$?UqG@FU(.agtˡR4/?Qu/̜;^v&ru+lc$h v71h ?0P^>dJsa0tw-Xe?,HiDW.`}"`S:hilj*ˡagܬ(lyX _y*cSGL G~+*}eR?zЖ|@s3a!}JNx4|2 @ƗB~Pv +)qqx*'90G6 +8Hrk@EhdΗHIs!VhP {CG9e-s襆Z$ѓUT$ݩ"Ms|fkPƎzOC.>h9y0طAǰbۿD*p^6Sy ^-4MHZhHߒRz #5O74:hpΈV!@ JBN]ߙȁz,CUR[cU Vόh.uWud{qꔘf,|vϦ%Z-ֳ3ttk6P̄p(hTCgHB }`2.6CcHgh|d!_׆Fm{'vCUwpx^K4n+K"ay?Ns3H9u'jgO甓F$ Z𣙵i~t̥4uip4yG߶"g%x$! `]ҟ@-Dttv NPQT&\#?YJX& KQ]gUf6LC3*m~PDm"VM+E%HMhj3)S!iDD% uy\īyyY. ,Nh*Έ*ͥq8Ƙ/aZb5SHc f>[ONA1)F NX{2k5޾Eh_ o7Bq˖1I=M Y>$mxDF#}+ vК96uACرiwTnٮ`a7^*.w%PLӃQY9)y9Ed5x73Ј;*dA3vZJX: x7'<#ȩr %ܪ)Zg#ƦG<2LWJ{zCpTo |$e$eHރ\ْ1"a+JgeZo6>) 5t35{̜Z &8.`" $P -8v˃ܪ@; c!w0%}u5Wr)gW+ CyxQjH!ebV~ҜJf< ߼oڽQ _-27K6A3l?{*Џ>?Z2Y$Xsd۰y%!kЀ&B$E!{C[e 8xAATg&ʅ9 7C,]`<.D0m[$qݾx:A(1+/hM4fǣk"$Qz!(Ԑ* $ٮyx>VM!V84L{ $c+9C!rN}?bTiv_)1HN}ahF3N]'u;g3+WU>A<m|y<.bfc5Uw8P=X?z =\3zKv\*7t#:w˽yd^w<$1C=&@i\_0oH^m?kiruˠn"`GdF`@p,x=}潒nXrInLV:KEkN_KC" 8&XX[nG9ռƍ*u~ct]A[jN[r~?OG|`P.\pago8;+~4+SKPUţR=%WnUM>DlsC3q^g>;%'*.ΜB4Hy"9Us`<(gؾ,R$8K?6_"ԾlM|,hqcʳƨ^2/E>pv 26Dy%Pc9cwD\wOpqKlFRɂbpCQ#\5[Ѵ ne:1#mO\0v$&{->G> s&F宼: }%C1 6difNm:|OFbs!CE`ț2,9TA0paY*#*Q=[*E-m:yt'NؙzS}:*Hs?/]J&3Yb;fq`?Zv- бOI5BZ̖pKVK)H)J!I]C Q({H~#.w]~J~ 58r48릌>T_erSuȟUbӡ8jشˠҮQ h]PSUJQ~. %R2&@ ]ld,NUy?elR˸|Ã^@ yÂJ}lgk7Q+XtՑ4, H"f%_*jA0 y*Ax'Ih/ C3SRx٪[h<[0!cdǴ^8lQc&%pSU4{ `thQ2Ik宿ȥ8vU>_FcHK}??p|z`#"< 0 qzR P^xZ{r5u&py~4ojLmى0Zѷ[ՠy$=-Z@-=G?AQLE懅tZI^cgF)! k+`$9RGKcqN1ԗq2G6i:篂H3 s`dN8iilg|xx.fNE X]M4>;4; J k Lʦݳ tNoϙ-+[`$9aeZ/TQ|: dnMi'APƑȱj]wp7}63oݩøAL̉g3d NzSC2xdȝpkQЦPKk;^[;?AC}1.H,dgi ǁ[{!ab)6q0a&u*m: za OpĔ})6dYrD7duW'G3rZi@.mϡm&Y%+ 7[6臾j`JJ)9  O~]w&D/[({ C<}p/&s&NǴT^lY"ֶ؈e% ?R DICk gϕ3Ux=Ǯ>:kˏ e^&Y7!f+J"n=Qp)@0"z%|PӞV29([l/1QHYM3; *d% k+&s0Nfq2dQ[ [Tac%ÇF=y뒖ޭg`. 3N'ÇqU|KEd,3w,}b^wZz:⸾q=E1NUPhc!>GS["j`S?]$:GsLP_d.fҍ3wi,T =Xe<`|iyLGT\co^ڏ;ƠsN4aM[귪׏߲Ϗw kì<[})9n^h%d.X0>ɛㆴN)ײ?hE&?^MW^@ HmsGNWΔѨ3$E%ȇ?(%(pz"=r4o'^r?yH Q߈g ˷rSpxȠ@JGyTThܦvNBNPNt2քYΣ"Ty.s@m]d\'kZߡP0Ɇ)u{v/NykCMȱυQRE(ՆxaR̜j{'JzLCzuJU.c9?G7Lڈ݌Pk{;o Z)%V~kڨ/K脣)/0c D[h< i~m[A򟻵I`T׺~"#(>;'hF#sǕ:bsw ,΋6u dgAct?S(^2gdW'1V;Pвqo ߽wP&5@ g?;4X9r:M:u`wi NY8ɰ͖SƢD9Otu Ü3q17 >dG*{Me<&dˡCRU 3 "$= {( dA06 slA%S+wqX[8&X<˻Yi'v"Pe4TSI;GD"*QN=)yؽ뤜[MG`"Ie nlU~Hr]UJjy@~43F8~A$bqwQ<<]/A 0sq׋D,;>s?;=[e  DQΞS`7t9i|FJ؁tyG#͠ޯQ\иC_utJYGhLۙ۫~'} W08+1N91-ڎx=Y,j,.(N̈́¾vA)bh;=H;L(lPTm֚q%:C.#RzV[<˙ʪGcI+ lt~fܺJ1DURP U; >URXFL/2A*64IdȄY1Fzd+¶b0%Vd\Pe_թ"E% cE:D˳EE2jkuYb 0x*TLk"W!RXa`Zc(ʚneIj:LfqdOsh[x..;:ԋqcr/"Ɉ^[ N}:4 a4Ewu@ǿMڄ$`c[vTkOJj;E\סg%qvBQ&'z7޳P!қݜ 05XRx"Zk'!|I೫|UR\ TPO kJ!d1a]PKq'ʬ16?T[wQ^@󍐓<(qjC3)70]83}5]Y)5X== ΤRrЎ-͒õrT!8; .t  w6}=p&&ȜkU}7҆A wV`GGE1z0h#UaK.n/D|w^F1랾ZnRcO|zF@W:6Ÿ!Je<µ:P|[8qκQٖ O3= 2c-$0x857Zd{Z;"+XwS.\0w+rVw0xxgʙn/¾`z$s:uco)LO1;!`𭅌"kT#gD*a7l9]i?[.u-Ӵc4W(:KG foL'PeHK߅)!ItUcg ݍ(eXl94ZQ@ӒMJR-oo֏m$|Ev,ncZs̴!p4Ge}h7@!o~ZA_G1?. !W@/C=@$Ԉ?kxqTcD3{XO!kɖ=ܣLdAXcilF\ -A5"?Ń%[ٓLYt\5 % mP&m̧d tV8 \k?yxZe:ee6,V5֬Crqj{q Lse +g9$Xi,LxF2|y>J=#uiGwmN{ճPGuuw /Arv֎mHyj(? zĭjhhaC U" g]Ğ\)¶`й1 ~<v8IqlD;u֛Py%/C 2'C.{/IҘ >|~z}^D6m=_m LmetzHQUJnǼB%WIKv~z]2z?ih9ũΗGH<+t edTY2G,ǦAP#'is](+:f痧Y 0^zb%бM.ccP!@mz lӑ<LJW"'dLα]@vK|%,>g E|Wf7k)jO`Hn;Gse6%/r|c]h`k(Y֙_D)uDO)^=.($80;r)uɈj)\ޒN0M g>ܽM{-LЉ6i MMvNO_Dp`.vz9gXOKp}gK.~⤰ٙ|z;)ޜ_DbKIwM$kUn 1o{$AoYdӭb(e4/|135 jx#ۭ*$;LƬ]o|4va?D-vNCqim&Enȶe`w|EcfzJ/MeS5 m]?CpP_%txkEMǘNj_ގE*DZ+"ͧט-< EǮfjǎ84p@g JEhwKS?\)d} Y K* EM[6+cԬ470qoSQ/O#sQLJ6v$ ~>aݟG^ Ҭ߹7Q8c>l~>kD=%,gw&]0L9+U&[]wk<]@E8mF"'qʾ<ZD&~ds_[I>Gl\Wo&[OV/LOص|H(y39LJ ?"_5SQٳt!Dp!Ԋoas*,w0g4@pI"啚euzQhrW4%ݬxEx5qjN:gd!E!H- UNuHՖ',:adOO<[c92=tCW>ufEsdr;}bǭw˹Elw,qEJK҇25_fgch)JTƙd!;p=D-dhLUz<̾ PZjӨI٧S!wn3)\8O9#9*o]Kn<%RO=1K] k+|ǚ:q\v5k,1hso{'*4B˷T9y@81Mxk<<+T4reB0>H۲jEx䝹mE^"d)j d!Mf$f|G̟}C<8 ,aL&kV~+*af,iƯ*;ØO E%be|&$:rۑT/HUp7B/O;h{Z"6=ꉾ!=WV\ ޤ3TdƙT4ؕ2dN/m^in?sMR۝ķtV1;4E eс9 /WtlDy^Y dQ#o*YLӦ~+~l?xr]|'U_aI`xߠ2hb7Ko?/m.JdJVt`Ԩ+4X6I9^nHgZ y8!iѺ LVGqo8c0Qb[K-ߌEuWy:̝F yktc-2/ *cA2h󀱒IJ.QˆPȴƸOkcI[Io,CrOmlt\`dNeC](EnI/,$8z~Fóf;<ݗ [FmLᦌ{Ű3p~rrD~L#u R)!9ƀXzdQ,mC,lJQYsQ<0~E'hMڨj/v,/\0 lt+ 6n&.+łP{AP%sw5؛2ZPKcS"b+'5@cI4{6.ᕨe=\ԡMetAey~Äz?HAk^n4G"5;B=ֈg&ô:> OAG>ZeF1SiᒠqM370$oXCɦ|k *[GcUb'IE4h9ieӔe.ol Ad\?D[%'߷-@Ü6YE/EygUb6jg8Ch3#rALk 3!qrA7=2ME_Bp$Cdג qir&AkW9\\M>G!#݀׏O%/ɛ%AL4߿9TP8KbTd7V9zD-wG7T<7 G$tQ/]^K~ؿ3:Kw\52JRv0"=T\t<bt\~ f+BW벲 Ԯ|W@C07*\' ZGjVTvvvj3}Yн vf dJ%9c/6Z9;WG+Pid>yÒ͑e$$W%>]]:iI @}!puЖ8!UͫZ->R$^闍0)EgsFJv$oD*0qsY,}J0r[ABJc QRk3mvpF:6r>.Ac6?4O:Y ~e1z[2|l~UUA@r83MY4Ow|DxB}MmQsLyyyÀY)єZUHƫ3? /P5'L k\o&vI!vVk0+'69 Z݆I0`0hІ 4ۦ;lKd䄳͒!US>Bҝcf7QIցZ&?b'f̢.5XFI1/Xkrv~r+oiąՀX"9iO1<NZI ;'vV<`Rd\ 7%"y|OzeA m2 PـjXF;TعEdtHCX%'G$`Qڱ Q?UQ2cUbg;s&.!'d{_a2Siv?;6M=QpS&A9ܦ)g|{Ԛ\-RӳӘuj {@(x֬y I{FD]/ uPn6ξAqrۇm4 P ²9 @=xopѕ%CP{892W~0Qd`N˃lޭ:{@ T`OߚaH͌&+%̈S kmo!za+yM#RmzNȗ;}ۂH d1+Iw @:z>Ej{9Fo-@ߛK,MCDuV+#s+gV4kiʥ!SL,P h="yue$k Ra?ЎAPMet%lوE᣹3W)"BIu:<˝?,ћ"j 됺gc+1JxE:+6X'6PlOk 3jg.}XeRڡ[7*~tߵtI$#l3Z2cryj K`BV<6}8xxh뉍-vb՝;H;B߁w6fbØ%{'>8'D 6VOiϧ({#H`n\[)Wy/I{E~Q <0ٍr-q9Au0KLjI|D>U 3V!H]Ap:Pi9E;hۉ]a3E7*]l5ޢۇ+QUEp2VoK6^ Cb)ܱtjCpIn&bAY:e2 #o΂6zdniK/H O$|fS6t`>L(ut&0Gjr@X S5`BeDfc,3!_~+ڷoufY]^zinZwM3ᒰnj ju,"u};H]z5,a+;wl֎$́NO =re|[g%w]Mksׅ BeKk;DVuSvdZ(U@'-j 6N%l@ºu6R-ĊΊ茤S? Wщo.2-iJ3|՜*ўl)׳V2N Q2c%L+EL][-8\m kl\!##*V'JMI8RM#_?pp0 ,+1S]W:?ވLaɘ@!+5Dfd R4A8LмL:mtIC.YߊK$(QF<23t8t?y70C=vӐkTLͱNyTW҂J %~*1p2|av&RyրJ^E}[s :QY9_ӶZUPx̹r ؎Qod* .eFeKg1(ڋ3*!Ɍ'Le9wu~h"@ }r<Ŭ#[L`,'Cޗ*Z%S4iѪN1^t.GT@h+3gA م'tRzS'7;Ė*WZ -+ G07I(4}&IĢza*۹09Vue˼rߔ 3 W抧.uAD)DmKz qe0j#|1-urg{&U1T1bPw y }iĴh?SC6oԻ@yhPO0Z$]jؐA ;XXg" eq-u:Db+gfu7ElsuO9~GNTggMK#~X˅ҽf].LRB}4W+)ܥ}f섎PsGYA 5tH6@,q9Vb/cw!G@VZT0_Fd;;,z7 ɩɘ\&J„YfoQd=&6^B8 @62B1hWYԪ_[zD:)YŦRRYtw'PcQr= ;UCJo[#?&gb\oԫЃRXvW᪰M{@':WY~%_0.`i='JY=3ɩ,`GZ^[= ES}_)‚H~Q#]&~m4 %{ K!=;'Ib&C_$Nx.ڃk1vKӥ~]ɱ\~PړηuݵW1z'*"ݻNY]sQD.n-C&?307$84ht́pnyfUH:鐛:pb" 1#A$gSy%zҨUT9N%M%<ƽXg7-z %%ʪ,Ҡ{\ڲW/.!gnff~ې WezUL0ma-gHڀ$8'0Š!dc ~ւڗ(YFŨp!eqD; ʿOA v?G?;إ\͘Eع3hq-9Wf:qO<j\1|k׈i3[uް6ں"Z yr&M.YPr p6}T~?.I]?w6&Azi_ hUiAnRzZLJɃff^.?4D5 SY~C٩Hhth?WA.Km qɣOx1CI0XG϶u33< мm{0[f= {=Pq6]]g)$ͫ 4H߆jV}XNJ"ET8X؅i"\; [ƈQ!8'8]\ 2I%=5z| ՘c$?"yy((Gt+#Hjѽʹu{.)>mB5okx rK'Nje*,ߑ8h,#3sNqaSU8AFP bitu mZO*>mEީ;y5 xH H[ϐb.}|h?9qN[ӝ<=pO)$L :Hs[omӼM٣;:^lX_m?33bnsت8#;e= i#kX/i V]3Z48!g EhR Ֆ0g ΉˏiQ 8kɐW%+"c OVņWퟛWmaSbw}AI1`yD_|VLXɯyS{( B]EĆ'jGO(UέTS@36eO~N2@ާ˄#zN "_D._JH2EE%fc1xC7=Qt~/!AjcqEjZ„M L9LF~}Ut.3FW–`M^M hj JrqzX 㛻a0sek?1$okh-vKR!K"Rӣ9*߰9K@{JÙV^{M8y*jcbs4GI9=@dvD%*LW)-a k3RvQsƳ8˓Ղkdey;,`< X(81|ॐ$҇쑇sz`~oSz}sjX\wgX&M`ML"EL^>mݬSt] /:f>a4.L;p,iedRP]@A hyֽt8PzɛLQwrЯLd#\"7dhobq7LUBMezFlt3\]].NS%LB+q0+FvY?'geptZ9Akiž U ` 8> uvP2Sݡi()[  LO`NTGmMTvX޷j|TD^4>;VS=e^K/h¸M7ЫDIh)z=~Q v 2y/6:ĉ|M07bG9` 6ŗ_D @!p3og Á:ґ=uO=L[73tu4םc$ YZ