libfwupdplugin5-1.7.3-150400.2.7 >  A bwp{p9|&9NXh0}تDܞ!K()Y6o]3:1)vtO'gP SN]BtKgRFW,5Cyrدܙwr^=YW] < A, *j]m7NB"|;dz|YIOie ȰBN esHh|頻~a|Ŗ k XqENUv޴"n դ= |)80207dfd5edf606b47c7cf88698b1235f3109ec1a34f1be4c6fe9544071bea21625531579d0a03184e4272c970ebf469e564f6cbbwp{p9|H`FƻQ^&ֶ%[ 0␶ߓpHF|4wAKwk O+.ˆHd"VRd 3~u `ѯsz{r},)v!gPk~8)Sf~i&)}==l\hOcg;+q:܍Uʾu|rqdZ蒨;ݴ=35S?WϠU<{~<ܡHg>p@g?gd # T) ?Pcipx |     (; (D8DD(8[9[:C[>a!@a0Fa?GaTHa\IadXah;YbT;\b]b^bbbccdcecfclcud vdwdxdydzglg|gggClibfwupdplugin51.7.3150400.2.7Allow session software to update device firmwarefwupd is a daemon to allows session software to update device firmware on the local machine.bwps390zp36SUSE Linux Enterprise 15SUSE LLC GPL-2.0-or-later AND LGPL-2.1-or-laterhttps://www.suse.com/System/Librarieshttps://fwupd.org/linuxs390xbwpjbwp4598130637735ce614635c523f92adffa6c182f1d78cddb746e4bb102e4ea3dblibfwupdplugin.so.5.0.0rootrootrootrootfwupd-1.7.3-150400.2.7.src.rpmlibfwupdplugin.so.5()(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.1.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.6.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.7.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.7.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.8.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.9.3)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.9.5)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.9.7)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_0.9.8)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.3)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.4)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.5)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.6)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.8)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.0.9)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.1.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.1.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.1.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.2.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.2.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.2.4)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.2.5)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.2.6)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.2.9)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.3)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.4)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.5)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.6)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.8)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.3.9)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.4.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.4.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.4.5)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.4.6)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.4.7)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.3)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.4)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.5)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.6)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.7)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.5.8)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.6.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.6.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.6.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.7.0)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.7.1)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.7.2)(64bit)libfwupdplugin.so.5(LIBFWUPDPLUGIN_1.7.3)(64bit)libfwupdplugin5libfwupdplugin5(s390-64) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    /sbin/ldconfig/sbin/ldconfigfwupdlibarchive.so.13()(64bit)libc.so.6()(64bit)libc.so.6(GLIBC_2.2)(64bit)libc.so.6(GLIBC_2.2.3)(64bit)libc.so.6(GLIBC_2.4)(64bit)libc.so.6(GLIBC_2.7)(64bit)libfwupd.so.2()(64bit)libfwupd.so.2(LIBFWUPD_0.1.1)(64bit)libfwupd.so.2(LIBFWUPD_0.7.0)(64bit)libfwupd.so.2(LIBFWUPD_0.9.3)(64bit)libfwupd.so.2(LIBFWUPD_0.9.8)(64bit)libfwupd.so.2(LIBFWUPD_1.0.0)(64bit)libfwupd.so.2(LIBFWUPD_1.0.8)(64bit)libfwupd.so.2(LIBFWUPD_1.1.0)(64bit)libfwupd.so.2(LIBFWUPD_1.1.2)(64bit)libfwupd.so.2(LIBFWUPD_1.1.3)(64bit)libfwupd.so.2(LIBFWUPD_1.2.4)(64bit)libfwupd.so.2(LIBFWUPD_1.2.5)(64bit)libfwupd.so.2(LIBFWUPD_1.2.9)(64bit)libfwupd.so.2(LIBFWUPD_1.3.7)(64bit)libfwupd.so.2(LIBFWUPD_1.4.1)(64bit)libfwupd.so.2(LIBFWUPD_1.4.5)(64bit)libfwupd.so.2(LIBFWUPD_1.5.0)(64bit)libfwupd.so.2(LIBFWUPD_1.5.1)(64bit)libfwupd.so.2(LIBFWUPD_1.5.5)(64bit)libfwupd.so.2(LIBFWUPD_1.5.8)(64bit)libfwupd.so.2(LIBFWUPD_1.6.0)(64bit)libfwupd.so.2(LIBFWUPD_1.6.2)(64bit)libgcab-1.0.so.0()(64bit)libgcab-1.0.so.0(LIBGCAB1_0.0)(64bit)libgcab-1.0.so.0(LIBGCAB1_0.2)(64bit)libgcab-1.0.so.0(LIBGCAB1_0.6)(64bit)libgcab-1.0.so.0(LIBGCAB1_1.0)(64bit)libgio-2.0.so.0()(64bit)libglib-2.0.so.0()(64bit)libgmodule-2.0.so.0()(64bit)libgobject-2.0.so.0()(64bit)libgudev-1.0.so.0()(64bit)libgusb.so.2()(64bit)libgusb.so.2(LIBGUSB_0.1.0)(64bit)libgusb.so.2(LIBGUSB_0.1.1)(64bit)libgusb.so.2(LIBGUSB_0.1.7)(64bit)libgusb.so.2(LIBGUSB_0.2.8)(64bit)libgusb.so.2(LIBGUSB_0.3.1)(64bit)libgusb.so.2(LIBGUSB_0.3.3)(64bit)libjcat.so.1()(64bit)libjcat.so.1(LIBJCAT_0.1.0)(64bit)libpthread.so.0()(64bit)libpthread.so.0(GLIBC_2.2)(64bit)libxmlb.so.2()(64bit)libxmlb.so.2(LIBXMLB_0.1.0)(64bit)libxmlb.so.2(LIBXMLB_0.1.1)(64bit)libxmlb.so.2(LIBXMLB_0.1.12)(64bit)libxmlb.so.2(LIBXMLB_0.1.15)(64bit)libxmlb.so.2(LIBXMLB_0.1.2)(64bit)libxmlb.so.2(LIBXMLB_0.1.3)(64bit)libxmlb.so.2(LIBXMLB_0.1.4)(64bit)libxmlb.so.2(LIBXMLB_0.1.5)(64bit)libxmlb.so.2(LIBXMLB_0.1.6)(64bit)libxmlb.so.2(LIBXMLB_0.1.7)(64bit)libxmlb.so.2(LIBXMLB_0.3.0)(64bit)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)1.7.33.0.4-14.6.0-14.0-15.2-14.14.3bs@aaA@aaaaaaim@a^@`e`c`KW`6?`.V_S_м@_$_i_F@__@_O@_"@_"@_"@_@^א^א^1^@^h^)^ @]@]@]c]8H@] \\-@\@\Yz\73\\U@\ @[k@[Q@[\[h@[Xf@[GB[E@Zľ@ZlZ@Z`@Z1@Z1@Z1@Z;@Z8@Z2gYYYX @XX*X*X*X*X*X*X*X*X*Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@Vii@UeU+U+jlee@suse.comgmbr3@opensuse.orghpj@urpla.netbjorn.lie@gmail.combjorn.lie@gmail.comjlee@suse.comdimstar@opensuse.orgdimstar@opensuse.orgjsegitz@suse.comjlee@suse.comglin@suse.comglin@suse.comglin@suse.comglin@suse.cominfo@paolostivanin.comglin@suse.comglin@suse.comglin@suse.comglin@suse.comglin@suse.comdimstar@opensuse.orgdimstar@opensuse.orgqkzhu@suse.comdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgyfjiang@suse.comdimstar@opensuse.orgdimstar@opensuse.orgglin@suse.comglin@suse.comhpj@urpla.netstefan.bruens@rwth-aachen.debjorn.lie@gmail.comschwab@suse.debjorn.lie@gmail.comglin@suse.comglin@suse.commpluskal@suse.commaurizio.galli@gmail.comdimstar@opensuse.orgglin@suse.commail@bernhard-voelker.debjorn.lie@gmail.comglin@suse.comschwab@suse.deglin@suse.comndas@suse.denico.kruber@gmail.comjengelh@inai.denico.kruber@gmail.comtchvatal@suse.comoliver@getspam.deoliver@getspam.dedimstar@opensuse.orgmpluskal@suse.comantoine.belvire@opensuse.orgfcrozat@suse.comdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgstefan.bruens@rwth-aachen.defcrozat@suse.comstefan.bruens@rwth-aachen.dedimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgmpluskal@suse.comzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgzaitor@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.orgdimstar@opensuse.org- Add fwupd-bsc1193921-nvme-ignore-non-PCI-NVMe-devices.patch to ignore non-PCI NVMe devices (bnc#1193921)- Update to version 1.7.3: * This release adds the following features: + Add a sync-bkc subcommand to ensure a known set of firmware versions + Add FuArchiveFirmware for plugins that use archives as firmware files + Add quirkable page and sector size properties to FuCfiDevice + Make Upower and powerd support optional * This release fixes the following bugs: + Add some sanity checks to the elanfp firmware parser + Add the CFI JEDEC instance ID if using the vendor-extended version + Check the value range when parsing the quirk keys + Do not wait for a USB runtime if will-disappear is set + Enable the MOTD integration when using pam_motd + Fix DFU regression when merging the FuProgress work + Fix running the tests when fwupd is not installed + Fix the GLib error message when inotify max_user_instances is too low + Fix VLI VL820Q7 detection to fix flashing of the Lenovo TBT3 dock + Ignore a USB error for STM32 attach when the device goes away + Make the HSI tests optional for embedded targets + Make the plugin startup order deterministic + Set Thunderbolt ports offline on host controller + Use endian-safe version functions when enumerating Logitech hardware + Use lowercase flag names in intel-spi to prevent a runtime warning + Wait for the System76 Launch device to come back from DFU mode * This release adds support for the following hardware: + Most Nordic Semiconductor nRF Secure devices - Fix build when not on TW: add BR protobuf-c- Fix build issue in spec (references to libfwupdplugin2 -> libfwupdplugin5)- Update to version 1.7.2: * This release adds the following features: + Add a new HSI check that PCR registers 0-7 are not empty + Add several compile flags to reduce the install size by over 300Kb + Allow overriding HwId data from the daemon.conf config file + Allow overriding the firmware GType from a quirk file + Export the component release ID over DBus + Remove support for the SoloKey and ChaosKey devices + Show a daemon warning if quirk flags are malformed + Speed up the daemon startup by ~40% by doing less at startup * This release fixes the following bugs: + Be case insensitive when fixing the device model + Fix a critial warning in ccgx found by the fuzzer + Fix a DFU crash if the attach failed due to a hardware fault + Fix a Redfish crash when specifying a URL without a port + Fix CLI downloads when using fwupdmgr --ipfs + Fix critical warning when /etc/machine-id does not exist + Inhibit thunderbolt devices to correctly use UPDATABLE_HIDDEN + Set SSL_VERIFYHOST=0 when using Redfish to fix OpenBMC auth + Skip UEFI devices that fail coldplug * This release adds support for the following hardware: All exported MTD block devices - Changes from version 1.7.1: * This release adds the following features: + Allow specifying 'fwupdmgr device-test foo --json' for unattended testing + Allow using a filename when using set-approved-firmware + Inhibit ModemManager device in mbim-qdu + Share the Common Flash Memory Interface quirks between plugins + Show changes in HSI attributes when using 'fwupdmgr security' + Show the user a warning if updating may affect full-disk-encryption + Show translated firmware release notes when provided + Support loading remotes from /var/lib/fwupd/remotes.d * This release fixes the following bugs: + Fix a CCGX regression when loading firmware + Fix a potential crash when dumping Parade devices + Fix build error when sys/io.h is not available + Fix building the Synaptics RMI self tests on s390x + Fix the CSME CVE detection for new generations + Handle EPERM when running the self tests on systems with IPMI + Mark as SUPPORTED even if on battery power + Only save the HSI attributes to the database if different + Raise the client timeout value from 25 seconds to fix Redfish startup + Redirect the old HSI links to the correct place + Relax the ITE SuperIO signature checks for new hardware support + Set device time and timezone for logitech bulkcontroller devices + Set the verfmt of the returned device when the daemon device is unset * This release adds support for the following hardware: + Dell Atomic Dock + HP Thunderbolt Dock G4 + More PixArt devices + Steelseries Stratus + Wacom 3rd-gen Intuos BT - Changes from version 1.7.0: * This release adds the following features: + Add FuCfuPayload and FuCfuOffer for future usage + Add support for an 'unreachable' device flag + Add support for Logitech devices supporting the Unified Battery feature + Allow adding GUIDs to each HSI security attribute + Allow installing the LVFS remote, but with it disabled by default + Convert security attributes to JSON and write then to the database + Convert the device test script to a fwupdmgr subcommand + Create Redfish user accounts automatically using IPMI + Use an interactive request to restart some Logitech DFU devices * This release fixes the following bugs: + Abort on invalid SREC files early to avoid a fuzzing timeout + Allow using interrupt transfers for HID devices + Allow waiting for multiple devices to replug + Fix a critical warning on a Unifying flash failure + Fix a regression in flashing the Dell dock + Fix Thunderbolt host controller probing + Forcefully set checksums found in cabinet files to lowercase + Force UX-capsule over full size BGRT + Make the SuperIO ports and timeouts specific to the DMI model + Only probe SynapticsMST devices that have opted-in + Remove support for --ignore-power as it did not work for UEFI firmware + Reset the CMOS as required when changing system firmware branch + Restart the daemon if any of the the plugin config files are modified + Show HSiLevel=0 attributes in JSON security output + Update the child composite ID if the parent changes + Use a per-device global percentage completion + Write the BMP image upside down to avoid using a negative bitmap height * This release adds support for the following hardware: + A huge number of Synaptics CAPE devices + Elan fingerprint readers + Logitech Bolt peripherals, receivers and radio hardware + Logitech devices supporting the bulk controller protocol + More supported PixArt devices + More supported StarBook coreboot devices + Union Point SPI hardware - Add pkgconfig(libprotobuf-c) and pkgconfig(protobuf) BuildRequires: New dependencies. - Refresh patches with quilt. - Drop sub-package fwupdtpmevlog, no longer built. - Update URL in _service, new home.- Update to version 1.6.4: * Allow overriding the quirks directory at runtime * Fix a regression in flashing the Dell dock * Fix probing the Dell TPM * Show HSiLevel=0 attributes in JSON security output * Abort on invalid SREC files early to avoid a fuzzing timeout * This release adds support for the following hardware: + AVer ATLAS CAM/CAM520 Pro2 + Cayenne/Spyder Synaptics MST + VL819 USB devices - Changes from version 1.6.3: * This release adds the following features: Fall back to the parent if the child does not have a battery level set * This release fixes the following bugs: + Disable the uefi_capsule plugin if Redfish coldplug succeeded + Fix an elantp crash when starting the daemon + Fix compiling with old versions of libxmlb + Fix detection of 8Bitdo wireless usb adapter + Fix the 8bitdo N30 Pro 2 install duration + Fix the modem-manager report that failed to get device after update + Fix writing large redfish firmware files * This release adds support for the following hardware: + Poly Studio P21 + Realtek RTD2141B - Switch service to obs_scm, and recompress to buildtime. - Drop automatic changesgenerate, upstream have perfectly fine and human understandable release notes at https://github.com/fwupd/fwupd/releases that should be copied into .changes.- Add requires to udisks2 for dbxtool update. (bnc#1192344)- If the machine we install onto has shim installed, it is likely an EFI based system. Require fwupd-efi in this case (boo#1192206).- Require libfwupdplugin2 by the -devel package: the -devel package installs the .so symlink, thus we must guarantee the target library to be present.- Added hardening to systemd service(s) (bsc#1181400). Added patch(es): * harden_fwupd-offline-update.service.patch * harden_fwupd-refresh.service.patch- Update to version 1.6.2 - The fwupd efi program be separated to fwupd-efi package. - Removed pesign-obs-integration, moved needssslcertforbuild , SBAT and EFI signing stuff to fwupd-efi. - Moved libfwupdplugin1 to libfwupdplugin2 - Change log from upstream: https://github.com/fwupd/fwupd/blob/main/data/org.freedesktop.fwupd.metainfo.xml - This release adds the following features: * Add a plugin to check Lenovo firmware settings * Add initial support for the powerd daemon * Add support for CapsuleOnDisk * Add support for installing UEFI updates from GRUB * Add support for soft-requirements that can be ignored with --force * Allow devices to only accept version upgrades * Allow discovery of Redfish BMCs specified by VID-PID or MAC * Allow the daemon to request interactive action from the end user * Automatically connect the BMC network interface at startup * Show the build timestamp if set on the device * Show the user how to switch out of Wacom tablet Android-mode - This release fixes the following bugs: * Add the alternate vendor name into the 8BitDo allowlist * Allow multiple devices to set WAIT_FOR_REPLUG * Allow the client to watch for more property changes * Always ensure the SuperIO version string is NUL terminated * Automatically clear the update error as required * Disable all UX capsules for Lenovo hardware * Do not assume the metainfo file is NUL-terminated * Do not save invalid files on LVFS server error * Fix a VLI regression in enumerating the PD device * Fix a VLI regression when installing VL820Q7 firmware * Fix enumeration of the Synaptics Prometheus config child * Fix parsing Redfish USB/PCI network VID/PIDs * Fix the fwupdmgr progressbar spinner to actually work * Fix version number for legacy Wacom Bluetooth modules * Ignore virtual M.2 ATA devices * Preserve NEEDS_REBOOT on successful update * Prevent a corrupt PHAT table from allocating lots of memory * Read the Redfish SMBIOS table when required * Remove the vendor string from the device name where required * Save the update state to the database correctly all of the time * Switch from sysctl to ioctl for ESRT on FreeBSD * Try reading from /sys/class/dmi if SMBIOS direct access fails * Watch for children added or removed after setup has been completed * Work around a XCC-ism on Lenovo hardware - This release adds support for the following hardware: * ModemManager devices supporting Firehose or MBIM QDU * More models of RTS54HUB * More Poly DFU devices * Parade LSPCON * PixArt receiver and wireless hardware * Realtek MST with RTD2142 * SuperIO IT5570 * USB4 Dell dock- Remove valgrind from BuildRequires since it's not a hard requirement anymore. (bsc#1184248)- Update to version 1.5.8: New features: * Add a new internal flag to opt-in to GUID matching * Add D501 Baklava device support * Add fu_device_set_battery_level() * Add missing uint64 read and write helpers * Add Qubes wrapper source and create packages * Allow enabling plugins only matching a specific HwId * Prompt for unlock keypress if reset command is blocked * Remove obsolete dell-dock non-passive update flow support * Remove the Hughski public key * Show a warning when parsing invalid quirk files * Support for GATT characteristic signals/notifications * Support more than one protocol for a given device Fixes: * Align the CCGX DMC firmware to 64 byte chunks * Be more strict for custom quirk keys * Check pixart firmware compatibility with hardware before flashing * Correct a thunderbolt assertion if kernel failed FW read * Correctly erase STM32 devices when transfer size is less than sector size * Detect SREC overflow to avoid adding ~4GB of 0xFF padding * Do not show a critical error when flashing footer-less binary files * Don't allow device updates while needing activation * Fix a regression in the elantp defined IAP start address * Fix a regression where activate stopped working * Fix firmware update of pointing device on Lenovo ThinkPad Nano * Fix the HSI plugin 'Disabled' state * Fix the quirk key name for the Lenovo HDMI with power * Fix writing to the GD32VF103 bootloader * Only call elantp->detach() when writing a firmware blob * Updated StarLabs GUIDs * Wait a few ms for the Logitech hardware to settle after detach - Remove GPG-KEY-Hughski-Limited from the filelist - Drop upstreamed patch + fwupd-bsc1182057-fix-sbat-section-copy.patch- Add fwupd-bsc1182057-fix-sbat-section-copy.patch to set the proper section flags for .sbat section so that objcopy can copy it into fwupd*.efi (bsc#1182057)- Update to version 1.5.7: New features: * Add initial support for Bluez bluetooth devices * Add more supported pixart devices * Add support for the RTD21xx HDMI converter Fixes * Convert MBR types to GPT GUIDs to help find the ESP * Do not allow updating a synaptics-mst device with no customer ID * Drop unused heap pages after startup has completed * Ensure SBAT metadata is added correctly * Move the plugin build logic to the plugins themselves * Only allow verify-update for plugins that support CAN_VERIFY - Specify SBAT metadata for openSUSE/SLE (bsc#1182057) - Adjust the meson options + plugin_uefi => plugin_uefi_capsule and plugin_uefi_pk + plugin_synaptics => plugin_synaptics_mst and plugin_synaptics_rmi + Disable Intel AMT plugin in non-x86 systems- Update to 1.5.6: New features: * Add SBAT metadata to the fwupd EFI binary * Add support for GD32VF103 as found in the Longan Nano * Add support for RMI PS2 devices * Add support for the System76 Keyboard * Allow downloading firmware from IPFS * Install the UX data into a single .tar.xz file * Add a plugin to update PixArt RF devices * Add new hardware to use the elantp and rts54hid plugins * Allow specifying more than one VendorID for a device * Detect the AMD TSME encryption state for HSI-4 * Detect the AMI PK test key is not installed for HSI-1 * Add Maple Ridge Thunderbolt firmware parsing support * Add --no-remote-check to ignore checking for download remotes * Allow creating FMAP and Synaptics firmware using builder.xml Fixes: * Add support for the Starlabs LabTop L4 * Allow using an external ESP again * Ask the user to reboot when required if downgrading * Be more paranoid when parsing ASCII buffers and devices * Check if the fwupd BootXXXX entry exists on failure * Clear the pending flag if restarting the system * Do not allow flashing using flashrom if BLE is enabled * Do not allow Lenovo hardware to install multiple capsules * Do not parse the OptionROM image * Do not show Unknown [***] for every client connection * Fix dnload wBlockNum wraparound for ST devices * Fix OOM when using large ArchiveSizeMax values * Fix several crashes spotted by AddressSanitizer * Fix several places where the Goodix MOC plugin could crash * Include the PCR0 to the report metadata * Report the lockdown status from UEFI and SuperIO plugins * Show a console warning if the system clock is not set * Fix flashing a fingerprint reader that is in use * Fix several critical warnings when parsing invalid firmware * Fix updating DFU devices that use DNLOAD_BUSY * Ignore the legacy UEFI OVMF dummy GUID * Make libfwupd more thread safe to fix a crash in gnome-software * Never show unprintable chars from invalid firmware in the logs * Allow using fwupdtool as non-root for firmware commands * Do not trust the Block.HintSystem boolean for ESP filtering * Fix a memory leak when parsing Synaptics firmware * Fix a possible crash when reading the Goodix MOC USB request * Fix crashes when parsing invalid FMAP, DMC, Solokey and Synaptics images - Deprecate fwupd-bsc1179790-disable-hintsystem.patch- Add fwupd-bsc1179790-disable-hintsystem.patch to remove Block.HintSystem from ESP filtering (bsc#1179790)- Update to version 1.5.3: + Lower the CURL version required to fix build in RHEL + Do not use meson ternary operations to avoid bumping the required meson version + Added Lite Mk III + Allow setting the GMainContext when used for sync methods + Fall back to the misc device for serio devices + Actually implement rescan in FuUdevDevice + bcm57xx: Refactor CRC code to remove extra byteswap + bcm57xx: Fix CRC check + synaptics-rmi: Don't crash if calling ->to_string() before - >setup() + Fix a possible critical warning due to missing retval + Add the serio->firmare_id for UDev devices + Export the driver name from FuUdevDevice + Allow the client to send PKCS7 and GPG signatures + Force the remote kind to JCat server-side + Only parse the signature if the remote is JCat + fu-main: Fix sender_features insert with wrong size + make platform integrity plugin optional and disabled by default + Add quirk for Western Digital + Mark more user-visible strings as translatable + modem-manager: validate firmware update method combinations + modem-manager: remove unused byte counts in QMI/PDC update logic + modem-manager: make sure the correct interface number is used for QMI + modem-manager: udev monitoring only if device switches layout + modem-manager: plug udev client leak + Restrict loading component types of firmware - Enable supported_build to clarify that this package is supported (bsc#1179790) - Drop fwupd-platform-integrity.conf since upstream disables the platform integrity module by default now due to incompleteness. - Address fwupd-refresh.service in %preun, %pre, %post, and %postun and provide a rc link for it - Version "Obsoletes: dbxtool" and "Obsoletes: fwupdate"- Update to version 1.5.2: + ata: Add OUI quirk for Toshiba + libfwupd: Restore recognizing gpg and pkcs7 types still + Register the SoupSession gtype when required + Switch from libsoup to libcurl + Fix sync method when called from threads without a context + Move ABI check to Github actions + Enable github workflows + libfwupd: Add fwupd_client_download_file() + libfwupd: Add fwupd_client_get_user_agent() + Only download the remote metadata as required + Add breaks for fwupdate 12-7 (Closes: #960688) + Install modules-load configs in the correct directory + vli: Do not be clever replugging the MSP430 device + vli: Make some trivial debugging more specific to help debug an issue + make gcab optional + Fall back to FAT32 internal partitions for detecting ESP + Add a flag to indicate if packages are supported + uefi: a new option for uefi configuration to use UEFI removable path + Add a section to man page on scripting + synaptics-mst: Improve reliability by waiting 2 seconds after writing data + hailuck: Add an plugin for the Pinebook Pro laptop + Allow setting global flags for FuHidDevice + Set the SMBIOS chassis type to portable if a DT battery exists + colorhug: Don't set the version format to triplet at startup + Allow components to set the icon from the metadata + colorhug: Fix detection of version on older firmware versions + bcm57xx: Fix reading vendor/device ids from firmware. + Remove HSI update and attestation suffixes + trivial: make dbxtool executable to fix snap build + Ignore an invalid vendor-id when adding releases for display + Notify the service manager when idle-quitting - Refresh fwupd-bsc1130056-change-shim-path.patch - Changes in BuildRequires: + Replace pkgconfig(libsoup-2.4) with pkgconfig(libcurl) + Replace pkgconfig(systemd) with pkgconfig(libsystemd) - fwupd-msr.conf and fwupd-platform-integrity.conf are moved to %{_modulesloaddir}.- Obsoletes and Provides dbxtool since fwupd 1.5.0+ now embeds dbxtool in the dbxtool plugin- Amend the spec file (jsc#SLE-16818) + Only enable fish support for Tumbleweed + Only enable the MSR plugin for x86 + Only install dbxtool in the architectures with UEFI support- Update to version 1.5.1: + Use UDisks to find out if swap devices are encrypted. + Show a link to discover more information about a specific plugin failure. + updated fish completions to 1.5.0. + Remove the duplicate parent-child data in FwupdDevice and FuDevice. + Show a less scary fwupdate output for devices without info. + thunderbolt: recognize authorized value of '2' as well. + bcm57xx: Make hotplug more reliable. + Use a different Device ID for the OptionROM devices. + contrib/ci: switch TPM simulator from ibmswtpm to swtpm. + Delete unused EFI variables when deploying firmware. + Fix probe warning for the Logitech Unifying device. + Include the amount of NVRAM size in use in the LVFS failure report. + Add external interface messages.- Update to version 1.5.0: + Add a compatible re-implementation of the rhboot dbxtool. + Add async versions of the library for GUI tools. + Add commands for interacting with the ESP to fwupdtool. + Add firmware-extract subcommand to fwupdtool. + Add FwupdPlugin so we can convey enumerated system errors to the end user. + Add plugin for Goodix fingerprint sensors. + Add plugin that can update the BCM5719 network adapter. + Add plugin to update Elan Touchpads using HID. + Add support for a delayed activation flow for Thunderbolt. + Add support for ChromeOS Quiche and Gingerbread. + Add support for Hyper hardware. + Add support for the Host Security ID. + Add support for ThunderBolt retimers. + Add switch-branch command to fwupdtool and fwupdmgr. + Allow blocking specific firmware releases by checksum. + Allow contructing a firmware with multiple images. + Allow firmware to require specific features from front-end clients. + Allow updating the dbx using the LVFS, validating it is safe to apply. + Include the HSI results and attributes in the uploaded report. + Support loading DMI data from DT systems. + Support LVFS::UpdateImage for GUI clients.- Add fwupd-jscSLE-11766-close-efidir-leap-gap.patch: Set SLE and openSUSE esp os dir at runtime (jsc#SLE-11766) - Drop _multibuild and build option -Defi_os_dir="%{efidir}": with the above patch fwupd can detect esp os dir dynamically - Update the efidir related %post and %postun scripts in spec file- Update to version 1.4.5: * Add XB_QUERY_FLAG_FORCE_NODE_CACHE * Add support for a delayed activation flow for Thunderbolt * Allow firmware to require specific features from front-end clients * Allow multi-byte FuUdevDevice preads and writes * Be more defensive when remotes are missing required keys * Disable the SQLite lookaside cache * ccgx: Add more hybrid dock support * ccgx: Modify readme to remove customer info * ccgx: add new protocol for dmc dock * ccgx: remove verify flag in plugin * modem-manager: read the vendor ID directly from sysfs attribute Fixes: #2209 * thelio-io: Add the DFU instance ID as a counterpart only * thunderbolt: Add a new subclassed thunderbolt firmware update type * thunderbolt: Allow quirks to skip the authentication step * thunderbolt: drop support for force power * tpm-eventlog: fix PCR0 calculation * uefi: check for free space after cleaning up ESP * vli: Add dual-image feature for VL103 backup firmware * vli: Add the project ID shared SPI PD controllers * vli: Allow chained usb hub devices where the parent needs GPIOB reset * vli: Do not modify the class vfuncs depending on device type * vli: Do not use GUID matching for the MSP device * vli: Rename FuVliUsbhubI2cDevice to FuVliUsbhubMsp430Device * vli: Set FuQuirks on the shared SPI object * vli: Set the i2c instance IDs in probe() * vli: Use the GPIOB reset for the MiniDock VL103 * vli: Wait for the root device to be replugged when updating the MSP430- Update to version 1.4.4: * Release fwupd 1.4.4 * Fix regression when checking for downgraded metadata- Update to version 1.4.3: * Release fwupd 1.4.3 * ata: A OUI quirk for Kingston * ccgx: Fix a potential division by zero * Check the device requirements when returning from GetDetails * fu-engine: Allow --plugin-whitelist to use dashes instead of underscores * Always enforce the metadata signature has a valid timestamp * ccgx: modify install duration for dmc device * ccgx: Add support for HP DMC dock devices * dell-dock: prevent updates to occur via synaptics-mst plugin * dell-dock: Capture the dock SKU in metadata * synaptics-prometheus: Force the minor version from 0x02 to 0x01 to make sure the devices can be updated back to 0x01. * Generate a body for github releases (Fixes: #2034)- Build the package separately for openSUSE and SLE using _multibuild (jsc#SLE-11744).- Update to version 1.4.2: * vli: Add no-guid-matching for all VLI devices * vli: Remove a copy-and-paste mistake * Add two OUI quirks * ata: Add WD OUI quirk 000cca * synaptics-rmi: Essentially blacklist Dell K12A * dfu: Avoid communicating when bitManifestationTolerant is off * ata: Add OUI quirk for Western Digital * dfu: Support MATEKF722SE quirk * Fix various build issues with -Wdiscarded-qualifiers * thunderbolt/dell-dock: Delay activation for Thunderbolt updates * Switch the default of EnumerateAllDevices to false * Add OUI quirk for SanDisk * vli: Add two standard USB instance IDs for shared-PD devices * vli: Use GPIOB to reset the VL817 found in two Lenovo products * tpm-eventlog: Correct the display of final calculated PCRs * wacom-raw: fixup switching to bootloader mode- Update to version 1.4.1: * thunderbolt: Don't show safe mode errors for USB4 host controllers * ep963x: Various changes to make the plugin actually work on real hardware * Make tss2-esys conditional * ep963x: Remove some dead code spotted by Coverity * ccgx: Only update the FW2 partition of the ThinkPad USB-C Dock Gen2 * ccgx: Expand the FWImageType for future hardware * Allow specifying the device on the command line by GUID * Fix the DeviceID set by GetDetails * wacom-usb: Fix a theoretical buffer over-read to make GCC happy * vli: Only show the i2c devices on the USB3 hub * Allow devices to be updatable, but only when upgrading a proxy device * Reset the progressbar time estimate if the percentage is invalid * ccgx: Always report 100% when finished writing * Add a device quirk that forces an explicit device-id match * ccgx: Set the device name and summary from quirk files * vli: Only do the APP5 FW bug fix on affected hardware * vli: Show all the buffer when debugging with FWUPD_VLI_USBHUB_VERBOSE * fu-engine: Refresh device name and format before setting supported flag * Allow a device to set the logical or physical ID during ->setup() * ccgx: Split out a trivial helper to set the instance IDs * ccgx: Set the device name to be more useful * ccgx: Set the logical ID as the FwMode * ccgx: Split out a trivial function to set the version * ccgx: Do not reboot the device write after installing * ccgx: Do no show the flash parameters when unknown * Allow devices to match the proxy device by GUID * Do not skip attach() if the device is marked _WILL_DISAPPEAR * dell-dock: Port to using fu_device_get_proxy() * Allow adding a device 'proxy' device that can do actions on it * vli: Do not show the USB 2 recovery devices for USB 3 hubs * vli: Add metadata to identify which is the same physical device * uefi: correctly format firmware version of Dynabook (né Toshiba) X30, X40 and probably others * synaptics-cxaudio: Use the ->attach() device vfunc * synaptics-cxaudio: Wait for the device to reboot after writing firmware * logitech_hidpp: decrease verbosity of messages that hid++ ID is missing * Prefer to update the child first if the order is unspecified * Do not modify the device priority for child devices- Exclude fwupdate from the architectures without UEFI support.- Update to version 1.4.0: * Release fwupd 1.4.0 * Allow removing device flags from quirk files * Use black to format python source in a consistent manner * Define SOURCE_VERSION when building a package * Only set the parent when adopting children * Do not conditionalize attach() and detach() on IS_BOOTLOADER * Do not crash the daemon if a plugin does something dumb * wacom-usb: Add more sanity checks in case the daemon goes crazy * wacom-usb: Use a per-device cleanup function * Add some more device regression tests * wacom-usb: Add a lot of missing metadata about the devices * wacom-usb: Hide a lot of debugging behind FWUPD_WACOM_VERBOSE * Only auto-add counterpart GUIDs when required * ccgx: remove update message * ccgx: add parent guid for hybrid dock * ccgx: Use a smaller timeout for i2c read and write operations * ccgx: Retry the register read and write with a i2c reset * ccgx: Fix buffer overflow when reading out i2c status * ccgx: Retry the HID disconnect up to 5 times * ccgx: Show a better error message on failure * ccgx: Allow forcing firmware of the wrong app_type with fwupdtool * Modularize the hardware tests * Ignore indirect devices that replug during the composite firmware update * Export the device state as part of the D-Bus interface * Fix devices that use CounterpartGuid when more than one device is installed * Use the GUID as a fallback rather than the connection ID * ccgx: Fix critical warning on i2c write failure * logitech-hidpp: Do not add peripheral devices for receiver in BL mode * Install the installed-tests only if tests are enabled * Load the signature to get the aliased CDN-safe version of the metadata * vli: Only reboot the USB hub once * synaptics-cxaudio: Only use the PATCH2 address when the patch level is 2 * add STM32F745 stm dfuse quirk * dfu: Add a way to set the timeout from a quirk * Export the release urgency * Export the release creation time * Check the firmware requirements before adding SUPPORTED * data/motd/fwupd-refresh: Only order after network.target * ccgx: Do not add the HID device that will disconnect * ccgx: Use Silicon ID and Application type to set flash parameters * Add a new daemon configuration option to control EnumerateAllDevices * logitech_hidpp: set the bootloader protocol * Install meson from pip for LGTM * bash: add completion for fwupdtool reinstall * fu-tool: add reinstall command * fu-engine: export fu_engine_get_releases_for_device in header * vli: Wait for the VL103 to timeout to fix detach * ccgx: Show the UpdateMessage in the correct device mode * ccgx: Add extra instance IDs to match specific firmware * Use a static version number * thunderbolt: Rather than hardcoding to PCI slot numbers, use domain in GUID * Revert "thunderbolt: Create a unique GUID including Thunderbolt controller path" * dell-dock: Port to fu_device_retry() * nitrokey: Convert to use FuHidDevice * nitrokey: Port to fu_device_retry() * vli: Port to fu_device_retry() * Add fu_device_retry() helper functionality * ccgx: Implement writing firmware to flash * ccgx: Add i2c status check when reading or writing registers * ccgx: Add 5ms delay between read registers to avoid an i2c error * libfwupdplugin: Use fu_device_locker_close() * synaptics-mst: Use fu_device_locker_close() * Add fu_device_locker_close() * ccgx: Do not store the silicon ID in the image address * ccgx: Add device quirks for the Lenovo Hybrid Dock * ccgx: Switch HID mode to HPI mode at startup * ccgx: Clear the event queue when in startup * ccgx: Wait for hardware to settle when coming out of reset * ccgx: Do not mark the device as updatable when in boot mode * ccgx: Verify the firmware app type when preparing firmware * ccgx: Set the update message when running in backup firmware * ccgx: Read the FwAppType from the hardware * ccgx: Set the HPI version number for the current firmware * ccgx: Get the silicon ID to map the flash parameters * ccgx: Read the HPI device mode at startup * ccgx: Set up the HPI I²C config at startup * ccgx: Create devices when in HID and I2C modes * Add a new ChromeOS CI target to build without GPG and PKCS7 * Use Jcat files in firmware archives and for metadata - Removed fu-keyring-gpg which caused CVE-2020-10759 (boo#1172643) * csr: Allow truncated HID reads * vli: Only consider the high nibble when building the sub-version * csr: Parse the firmware as a DFU file * Add support for EP963x hardware * Add FuHidDevice abstraction * vli: Correctly attach VL103 after a firmware update * ccgx: Parse the metadata block in the firmware image * ccgx: Add a firmare parser for cyacd files * logitech: Correctly set the protocol * Add the optional device-id to the update --help output * Fix a difficult-to-trigger daemon hang when replugging devices * vli: Remove a dock device from the whitelist that is never going to be updated * vli: Add some trivial debugging to help track down a bug * vli: Never add USB hub devices that are not upgradable * uefi: Don't use shim for non-secure boot configurations * Start fwupd-activate.service after snapd.service * dfu: Actually reload the DFU device after upgrade has completed * dfu: Add one more m-stack device requiring a quirk * Apply version format to releases and devices at same time * Ensure that the DeviceID is set for child devices * Fix a daemon crash when removing children * Allow waiting for the parent device when replugging * Add fu_device_get_root() shared API * vli: Fix an error when detaching MSP430 * vli: Fix a critical warning when getting the USB speed * vli: Fix the error enum values for the MSP430 * Do not add blank lines when tokenizing Intel hex files * vli: Fix the version calculation for MSP430 * vli: Ignore one more error when attaching * vli: Always expect the VL103 header at 0x1003 or 0x4000 * vli: Do not fall back to the recovery write for usbhubs * vli: Only show the 2nd header if the device ID is valid * vli: Fix VL103 reboot from ROM mode to FW mode * vli: Add some better comments for writing GPIOs * Add a helper script to add a DFU header * Add 'firmware-convert' subcommand to fwupdtool * fu-engine: Make two passes of requirements checking * fu-engine: Copy the VersionFormat from the CAB if specified in `get-details` * Add a new plugin for CPU microcode * Don't build/install fwupdagent man page if agent build is not requested * Introduce a new VersionFormat for `hex` * Drop UEFI quirks we now inherit from metadata * ci: build Debian using libflashrom * When TPM PCR0 measurements fail, query if secure boot is available and enabled * fix fwupd.shutdown.in according to the movement of fwupdtool to bindir * ata: Add OUI quirk for Western Digital and Intel * improved fish shell completion * vli: Set the MSP430 version format to pair * Always return AppStream markup for remote agreements * ata: Add trivial OUI quirk for Micron * added completion script for fish shell * Do not fail loading in /etc/machine-id is not available * Use xb_builder_source_add_simple_adapter * Create FuCabinet and untangle a lot of legacy code * nvme: Do not try to handle integer version numbers * Allow server metadata to set the version format on some devices * fu-tool: Correctly append the release to devices in `get-details` * For the `get-details` command make sure to always show devices * fu-engine: Copy the version and format from donor device in get-details * fu-engine: Use unknown for version format by default on get-details * Inihbit all power management actions using logind when updating * Decouple the version format from the version itself * Add raw versions for bootloader and lowest * Allow server metadata to set the device name on some devices * Remove support for GCab less than v1.0 * fu-device-list: Check protocol before de-duping devices * Do not allow devices that have no vendor ID to be UPDATABLE * ata: Include a vendor ID for ATA hardware * ata: Switch off the verbose logging by default * Always check for PLAIN when doing vercmp() operations * Discard the reason upgrades aren't available (Fixes: #1678) * Improve the description of `fwupdtpmevlog` for man page * Move `fwupdtpmevlog` into `bindir` * uefi: Move `fwupdate` into `bindir` * Move `fwupdtool` and `fwupdagent` into `bindir` * Use the system provided flashrom on Fedora * Add a plugin vfunc to run after subclassed FuDevice creation * ci: use standalone script to generate build dependencies * Move the daemons from /usr/lib/fwupd to /usr/libexec/fwupd * Use the recently released flashrom v1.2 * Generate an additional UEFI quirk file using the stable LVFS metadata * uefi: Apply capsule update even with single valid capsule * Fix a critical warning when installing some firmware * ebitdo: Fix the endpoint address logged in the error message * uefi: Find the correct lds and crt name when specifying -Defi_ldsdir * upower: Move battery threshold declaration into a configuration file * upower: Decrease minimum battery requirement to 10% - Refresh fwupd-bsc1130056-change-shim-path.patch - Add new dependency: jcat- Update to version 1.3.9: * Release fwupd 1.3.9 * Always check for PLAIN when doing vercmp() operations * improved fish shell completion * vli: Set the MSP430 version format to pair * added completion script for fish shell * Always return AppStream markup for remote agreements * Do not fail loading in /etc/machine-id is not available * fu-engine: Fixup broken-ness from 0c0fada18fc9cb2a0efec351db67f0867bf045cd * Use xb_builder_source_add_simple_adapter * fu-tool: Correctly append the release to devices in `get-details` * For the `get-details` command make sure to always show devices * fu-engine: Copy the version and format from donor device in get-details * fu-engine: Use unknown for version format by default on get-details * Inihbit all power management actions using logind when updating * fu-device-list: Check protocol before de-duping devices * ata: Switch off the verbose logging by default * Discard the reason upgrades aren't available (Fixes: #1678) * Improve the description of `fwupdtpmevlog` for man page * Move `fwupdtpmevlog` into `bindir` * uefi: Move `fwupdate` into `bindir` * Move `fwupdtool` and `fwupdagent` into `bindir` * ci: use standalone script to generate build dependencies * Move the daemons from /usr/lib/fwupd to /usr/libexec/fwupd * Use the recently released flashrom v1.2 * uefi: Apply capsule update even with single valid capsule * Fix a critical warning when installing some firmware * ebitdo: Fix the endpoint address logged in the error message * fu-util: fix a logic error in report uploading introduced in e076d48afb74d1447936d353f12781755f13b047 * uefi: Find the correct lds and crt name when specifying -Defi_ldsdir * upower: Move battery threshold declaration into a configuration file * upower: Decrease minimum battery requirement to 10% - Update to version 1.3.8: * Release fwupd 1.3.8 * Do not use fu_common_vercmp() when the device verfmt is PLAIN * altos: Output raw buffer data when using FWUPD_ALTOS_VERBOSE * altos: Prefix an error to provide more context * altos: Add a trivial _to_string() implementation * synaptics-cxaudio: Make the verfmt match that of the existing Windows tools * synaptics-mst: Allow MST to fall back if no PCI device is marked as parent * Allow specifying a list of subsystems when setting a physical ID * synaptics-mst: Fix trivial thinko caused by the wrong dock connected * vli: Invert the logic to reboot the parent FuCliUsbhubDevice, not the child * vli: Switch around the hub tier values * uefi: Fix a build regression with Fedora 30 * logitech_hidpp: Ignore detach failures (Fixes: #1183) * logitech_hidpp: When detaching to bootloader use non-blocking IO and wait for timeout * vli: Show erase progress when doing a v2 recovery * uefi: Do not remove the 'Linux Firmware Updater' boot entry before update * uefi: Do not rewrite BootOrder in the EFI helper * vli: Add support for the PS186 device * Set up more parent devices for various Lenovo USB hubs * cxaudio: Set the update protocol to prevent a daemon warning * vli: Add support for Lenovo Modularized dock * Add an extra instance ID to disambiguate USB hubs * vli: Remove the unused tierX custom flags for each device * Revert "Correctly delete UEFI variables" * uefi: make debugging output more readable * vli: Fix a potential buffer-overflow when parsing firmware * tpm: Optimize the string parsing and fix the boolean logic * synaptics-rmi: Add a missing error enum value * synaptics-rmi: Correctly identify a checksum failure * synaptics-rmi: Fix Coverity issue that is impossible to hit in reality * solokeys: Parse old versions of the bootloader string * Add a plugin to update PD controllers by Fresco Logic * vli: Set the device progress correctly when erasing a PD device * vli: Use the correct command to get the device firmware version * vli: Correctly reset all VL100 devices * vli: Set all standalone PD devices to not do SPI auto-detection * vli: Mark standalone PD devices as updatable * vli: Set the protocol for FuVliUsbhubPdDevice types * Support the new gnuefi file locations * Cleanup ancient fwupdate-* EFI variables too (Fixes: #1739) * Detect kernel lockdown status * vli: Add the DEV instance ID to all devices * tpm-eventlog: Replay the TPM event log to get the PCRx values * tpm-eventlog: Store the eventlog hashes in binary form - Update to version 1.3.7: * Release fwupd 1.3.7 * Correctly delete UEFI variables * ci: allow working with podman w/o aliases * ci: fedora: force correct rpm package version * src: fu-engine: check version was updated by checking version * Correctly import PKCS-7 remote metadata * Add 'refresh' to fwupdtool * Add 'get-remotes' to fwupdtool * Generate a win32 setup binary * Fix display of UTF-8 characters on Windows * Move MOTD population into the daemon * fu-util: Discourage metadata refreshes more than once per day * Disable the battery percentage checks if UPower is unavailable * Allow getting the list of updates in JSON format from fwupdagent * Revert "trivial: Attempt to fix Debian CI" * fu-remote-list: emit a changed signal when modifying a remote * synaptics-mst: Skip self tests for systems with amdgpu * Allow applying all releases to get to a target version * Split up fu_engine_install() into two halves * logitech_hidpp: use the correct timeout for IO channel writes * Allow quirking devices that always require a version check * Shut down automatically when there is system memory pressure * Show the device parent if there is an interesting child * Allow the client to get the list of FwupdDevice children * Set the FwupdDevice parents in fwupdtool * Don't always get the vendor ID for udev devices using the parent * Add a runtime warning when adding a device without an vendor-id or protocol set * vli: Set more of the firmware max sizes automatically * vli: Add a SpiAutoDetect quirk for some of the PD devices * vli: Use a different protocol ID for i2c devices * vli: Add support for standalone Single PD devices * vli: Move generic SPI functionality into the FuVliDevice base class * vli: Remove the PD emulation code * vli: Use a more standard GUID for the child i²c and shared SPI devices * vli: Allow setting the device kind from a quirk * vli: Make more function names match the docs * vli: Move the SPI command quirking from FuVliUsbhubDevice down to FuVliDevice * vli: Rename FuVliUsbhubPdFirmware to FuVliPdFirmware * vli: Allow the device to specify the PD firmware header offset * vli: Add a FuVliDevice as a subclass to FuVliUsbhubDevice * vli: Define the device GType in the quirk file * vli: Move the CRC calculations out of usbhub scope * vli: Have one 'DeviceKind' for all objects * vli: Rename the `vli_usbhub` plugin to `vli` * Capitalize GNOME - package has grown a few new binaries: fwupdagent, fwupdate, fwupdtool and a tpm event debugging tool, that is packaged separately: fwupdtpmevlog- Drop docbook-utils-minimal build dependency, manpages are generated with gtk-doc.- Update to version 1.3.6: * plugins/coreboot: Add missing fu_hash dependency * trivial: synaptics-cxaudio: Add Google type C <-> 3.5mm adapter * fu-engine: don't expose bootloader version errors to users * trivial: dell-dock: drop unused quirk keyx * trivial: rename synapticsmst to synaptics-mst * trivial: actually set vendor ID for synaptics * fu-remote-list: Drop fallback path behavior * libfwupdplugin: Make sure systemd created environment variables exist * trivial: fu-remotes-list: drop usage of `FU_SELF_TEST_REMOTES_DIR` * trivial: synaptics-rmi: hardcode Vendor string * trivial: Set vendor ID for Dell WD19 to USB:0x413C (Fixes: #1653) * trivial: Document the use of vendor-id in each plugin * superio: Use the baseboard vendor as the vendor ID * uefi: Use the BIOS vendor as the vendor ID * coreboot: Use the BIOS vendor as the vendor ID * flashrom: Use the BIOS vendor as the vendor ID * dell: Hardcode a plausible vendor ID * emmc: Set the correct vendor ID prefix * fu-util-common: correct the default prompt for reboot/shutdown (Fixes: #1617) * Split out the remote loading from FuConfig * vli-usbhub: Fix the quirk for the legacy VIA 813 chip * Clarify error messages when no upgrades available * trivial: Don't handle a vendor-id requirement error that cannot happen * Only check the vendor ID if the device has one set * fu-install-task: Enforce that device protocol matches metadata * Add a new plugin that can parse the TPM event log * Allow other plugins to contribute report metadata * trivial: dell: hardcode the physical device ID for tpm to match the tpm plugin * Add a new plugin that exposes the system TPM device firmware version * Add fu_udev_device_set_flags() * trivial: Render large values of VersionRaw in a more portable way * trivial: wacom-raw: mark all Moffett SKUs as self recovery * Throw exit status 0 (instead of 2) if there is no firmware to be updated * Add a `dell-bios` version format * Add support for multiple LVFS::VersionFormat tags * Do not do semver conversion in fu_common_vercmp() * trivial: Deprecate fu_common_version_parse() * trivial: Support 'plain' in fu_common_version_from_uintXX() * Add the sysfs 'description' as the one-line device summary * trivial: Also print the parent keys when using FU_UDEV_DEVICE_DEBUG * trivial: Add fu_common_version_from_uint64() * trivial: Convert the VersionRaw value to a uint64_t for future use * Allow building on Windows with MinGW * synaptics-prometheus: Allow incremental version major and minor number * Replace 'scheduing' with 'scheduling' * Export the raw device version to the client --verbose output * trivial: Only dlopen the test plugin once * Export the device protocol to the client --verbose output * trivial: installed-tests: try to display journal for failed tests * trivial: ci: debian: enable verbose daemon logging for failure analysis * trivial: installed-tests: explicitly choose webcam device ID * trivial: debian: remove obj-* built files to fix back to back builds * trivial: ci: don't let bad symlinks cause debian build failures * trivial: debian: correct a dependency for libfwupdplugin-dev - Changes from version 1.3.5: * plugins: Fix potential use of NULL pointer in fu_dell_dock_mst_write_register * Fix shifting integer by more than 31 in fu_util_filter_device * synaptics-prometheus: Reload the device version after IOTA update * synaptics-prometheus: Reload the device version after update * trivial: wacom: remove coretronic config from Moffett scope * trivial: Fix a NULL/FALSE confusion * trivial: Add a BR for Fedora * trivial: Fix coreboot commit to fix CI * trivial: libfwupdplugin: clarify name of self test * plugins/coreboot: Improve version detection * plugins/coreboot: Get rid of FU_HWIDS_KEY_BIOS_VENDOR in coldplug * trivial: Move progressbar out of libfwupdplugin * trivial: Unexport fu_test_get_filename() * trivial: Unexport fu_test_compare_lines() * trivial: Unexport fu_test_loop_run_with_timeout() * trivial: Do not include non-introspectable functions in the GIR * trivial: Fix up a few introspection problems in FwupdPlugin * trivial: Include the Fwupd GIR in the FwupdPLugin GIR * trivial: Never add duplicate symbols to the map file * trivial: Properly namespace the defines in the exported header * Install development files for libfwupdplugin * Convert libfwupdprivate to a shared library libfwupdplugin * trivial: Allow building GCab from a subpackage * trivial: Fix under-include to define O_RDONLY * trivial: Allow compiling without * trivial: Do not use FuProgressbar in dfu-tool * synaptics-prometheus: Manually set the bootloader mode when attaching * trivial: Split out a new helper funtion * trivial: Add some optional debugging when hotplugging devices * trivial: Include the correct header for S_IRWXU * Always use the more portable 3-arg form for open() * trivial: Untangle FuHistory from FuPlugin * trivial: Allow compiling without * Revert "synaptics-rmi: Use the build ID as the version number to match the vendor tool" * Add missing documentation from the plugin interface * trivial: fu-udev-device: remove a prototype that was missed in b3d4d2ff * trivial: add missing gtk-doc fields for many files in src/ * trivial: fix compile failure without gudev * synaptics-prometheus: Mirror the _IS_BOOTLOADER from device to config * Allow setting the device flags using GObject properties * vli_usbhub: Set the composite parent at construction time * synaptics-prometheus: Set the composite parent at construction time * Allow plugins to set the parent during construction * vli-usbhub: Whitelist the PD and I²C devices * Set the protocol per-device not per-plugin * synaptics-rmi: Use the build ID as the version number to match the vendor tool * Create a REV_00 instance ID as this may be what the vendor needs to target * fu-util-common: Invert default behavior for reboot and shutdown prompts * trivial: fu-plugin-vfuncs: Add GTK documentation for all vfuncs * Make gudev a compile-time option * trivial: Set the offline trigger using an environment variable * trivial: ci: pull lintian from unstable for now. * trivial: stop including fu-hash.h as part of fu-plugin-vfuncs.h * Fix shebangs on scripts * trivial: Use prefixes for DATADIR in config.h for portability * Allow compiling GUsb as a subproject * trivial: fu-udev-device: add a to_string func for debugging * trivial: Don't assume that plugins end in .so * trivial: optionrom: remove unneeded includes * trivial: debian: ci: ignore library-not-linked-against-libc for more * trivial: remove version-format.md * trivial: Allow compiling without pwrite() * trivial: Allow compiling without * trivial: Allow compiling without realpath() * trivial: Allow compiling without HAVE_LC_MESSAGES * trivial: Allow compiling without getuid() * trivial: Allow compiling without * trivial: Allow compiling without * trivial: Allow compiling without * Ensure the _get_type() gets the same ABI version as the constructor * Use the correct unlocker when using GRWLock * trivial: plugins: only build coreboot when option set * fwupdtool: don't show a warning when calling `get-plugins` - Changes from version 1.3.4: * trivial: Don't force specific linker flash when cross building * dell: Use the more portable g_usleep() * trivial: Fix unused header includes * vli-usbhub: Make erasing less verbose and writing more obvious * vli-usbhub: Correctly print the 24-bit USB3 offset * vli-usbhub: Print the PD firmware offset and size for debugging * vli-usbhub: Open the parent device before attempting to read or write from the child * vli-usbhub: Set the install duration for the PD device * trivial: Fix a failed error prefix string * trivial: wacom-raw: Remove embedded from device name * wacom-raw: Correct HWID support * uefi: Just use a uint16_t for BootNext processing * uefi: Use a simpler entries set algorithm * vli-usbhub: Add support for writing using I2C passthru * vli-usbhub: Support updating PD devices that share the hub flash * vli-usbhub: Support the PD file format * trivial: uefi: correct a NULL pointer dereference * uefi: fall back to `ID_LIKE` when the path for `ID` doesn't exist (Fixes:# 1566) * uefi: Make generate_binary.sh more robust * Tokenize the Intel Hex file before parsing * trivial: Detect the USB version automatically * trivial: fu-util/fu-tool: explicitly block unsupported flags * Add support for matching requirements on device parents * Skip cleanup after device is done updating if `will-disappear` is set (Fixes: #1529) * efi: use a wildcard section copy for final EFI generation * modem-manager: explicitly use plain version format * modem-manager: add quirks for the Foxconn T77W968 modules * Allows confined snaps to activate fwupd via D-Bus * trivial: thunderbolt: clarify error message * Add a new property `Interactive` to the daemon * trivial: contrib/get-version.py: require git less hard * superio: Never read from port offset zero * superio: Fix regression when coldplugging superio devices * trivial: Fix Fedora CI build * trivial: Fix the autobuilt spec file with the new tarball version * Dynamically determine release version * trivial: synapticmst: allow missing `/proc/modules` * synapticsmst: filter invalid chip IDs * trivial: Provide some defines for common image names * Allow aborting early when using fu_archive_iterate() * Add fu_firmware_image_set_version() for future use * modem-manager: increase re-enumeration delay to 20000ms * modem-manager: add counterpart GUID for the DW5821e/eSIM * Add versions formats for the Microsoft Surface devices * usb: make loading vendor/product/serial strings non-fatal * trivial: Fix the protocol ID for VLI usbhub devices * trivial: wacom-raw: add more device IDs for Dell devices * trivial: contrib: don't require TSS for debian archs without EFI * fu-udev-device: Adjust bounds checking to be safer * fu-udev-device: Don't assume all devices have `device_file` * synaptics-rmi: correct an error cleaning up on probe * trivial: fu-udev-device: add some safety checks for fd * udev-device: fix offset of vendor id of hidraw devices * flashrom: switch to upstream source * trivial: fu-plugin: only show an error once "failed to open plugin" was being prefixed twice * trivial: debian: only use mingw-w64-tools in archs with UEFI plugin * fastboot: Fix a regression when updating modem firmware * trivial: conflict with old unifying plugin * Rename unifying plugin to logitech-hidpp (Fixes: #1329) * Add a new contrib script for installing a Dell BIOS from an EXE file * trivial: add-capsule-header: rename to make it easier to import * trivial: simple_client: make it easier to reuse code * trivial: firmware-packager: make it easier to reuse code * trivial: add-capsule-header: make it actually work * trivial: fix some gtkdoc sections * Bump the required gudev version * trivial: Fix a compile error with older versions of gudev * trivial: wacom: add vid/pid for panels in Moffett * trivial: post release version bump - Changes from version 1.3.3 * unifying: notify users to replug when using dfu control (Fixes: #1383) * trivial: 8bitdo: set a transient failure while waiting for user action * libfwupd: Add a new error type for user action needed * trivial: 8bitdo: show the same message for SN30pro and SN30pro+ * trivial: Fix up some typos from codespell * trivial: Ensure config.h is included in all source files * trivial: Fix up some NULL/FALSE confusion * trivial: Add all the _LAST enums that shouldn't be checked for ABI * trivial: Fix a typo that means that UEFI results were never cleared * Always report the update-error correctly for multiple updates * trivial: Fix fwupdmgr get-history if the firmware was not installed from the LVFS * trivial: Do not emit a warning if a child has no version number * Move the file descriptor lifecycle into FuUdevDevice * trivial: Fix some GtkDoc annotations * ebitdo: Modernize the plugin to use FuFirmware * nitrokey: Use fu_common_dump_raw() when debugging * thunderbolt: Create a unique GUID including Thunderbolt controller path * Use device safety flags to show prompts before installing updates * trivial: Use the new possible_plugin support for USB devices too * jabra: Move the Jabra-specific detach out into its own plugin * Ensure the device is open when doing the subclassed prepare() and cleanup() * vli-usbhub: Add support for updating V2 devices * Allow verifying the device image itself from fwupdtool * Use XMLb to query quirks * trivial: ci: disable pulling libxmlb from unstable * synaptics-prometheus: Don't add a config-subdevice in bootloader mode * dfu: Use the VID/PID to identify devices without download capability in runtime * trivial: debian: remove some unneeded lintian * trivial: debian: bump compat version * ebitdo: Add SN30Pro+ to recognized quirk list (Fixes: #1503) * dfu: Add several quirks for Realtek camera hardware * dfu: Always mark devices as UPDATABLE * uefi: use `genpeimg` to mark ASLR and DP/NX on EFI binary * trivial: solokey: correct a typo * trivial: fu-util: fix typo * uefi: rework ESP path detection and lifecycle * trivial: uefi: show more metadata in to_string method * trivial: fu-device: add new method to remove metadata * Add a plugin to update VIA USB hub hardware * trivial: Add fu_common_read_uint8_safe() * trivial: Fix two typos in fu_common_read_uint16_safe() * solokey: Allow parsing firmware with fwupdtool * Allow fwupdtool to dump details of common firmware formats * trivial: Do not do system coldplug when using FU_ENGINE_LOAD_FLAG_NO_ENUMERATE * trivial: fu-self-test: set polling self tests to slow * trivial: fu-tool: Allow `detach`/`attach` to prompt for device * Strip trailing whitespace from USB descriptors * trivial: Add fu_common_read_uint16_safe() * trivial: Add version to the FuFirmware->to_string() output * Add fu_firmware_set_version() * Add a systemd preset file for `fwupd-refresh.service` * trivial: dell: work around a memory leak caught by address sanitizer * ebitdo: if the device has the will disappear flag, don't wait for ack (Fixes: #994) * Add a new plugin for working with eMMC devices (Fixes: #1455) * fu-engine: Check multiple plugins if quirks match * trivial: don't try to enable LVFS from systemd * trivial: coreboot: fix a clang compiler error * fu-util: Add user friendly strings for all device flags * Add new device flags indicating update resilience * plugins: Add coreboot plugin * fu-plugin: Add fu_plugin_get_hwid_replace_value * trivial: Increase verbosity when actually updating devices * trivial: Allow plugins to use WAIT_FOR_REPLUG in prepare and cleanup * Add FuDevice->prepare() and FuDevice->cleanup() vfuncs for future use * dfu: Implement FuDevice->to_string() * trivial: colorhug: fix a crash that occurs when flashing sometimes * trivial: fu-util: break out of automatic reports if one is not automatic * thunderbolt: some more clarifications when using ICL * trivial: fwupd-refresh: activate motd if using systemd v243 or later * trivial: fwupd-refresh: allow exit code 2 for success * trivial: synaptics-cxaudio: Add Google Pixel buds * trivial: arch: ci: Wait some time for tpm_server to start up * Allow a custom FuFirmwareImage->write() in superclassed objects * dfu: Remove two completely unused helpers * dfu: Make DfuFirmware derive from FuFirmware * dfu: Make DfuImage derive from FuFirmwareImage * dfu: Remove private headers that do not need to exist * Fix device flag filtering * trivial: fu-engine: Don't compare device and content checksums * fu-engine: Read all releases and convert versions when comparing * Add new flags `can-verify` and `can-verify-image` * trivial: make verify and verify-update safer * trivial: test: add checksums for "stock" 1.2.2 * trivial: fu-udev-device: use parent udev device to indicate `internal` * trivial: fix TPM2 simulator tests for arch * trivial: uefi: don't add PCRs with all 0's * trivial: Fix a recent regression causing a double-free * synaptics-cxaudio: Support the ThinkPad USB-C Dock Gen2 * trivial: fu-util: add some extra checks around automatic reports * trivial: fu-tool: typo * fu-systemd: Use correct method for stopping units. * trivial: fu-udev-device: Use ID_PCI_CLASS_FROM_DATABASE if name not set * trivial: fu-plugin: quiet down debug output for optionrom plugin * 8bitdo: use will-disappear flag for sf30/sn30 controllers (Fixes: #783) * trivial: ebitdo: don't dump out firmware header unless plugin verbose * trivial: ebitdo: don't use local errors when writing firmware * Add a new device flag for indicating device won't come back * wacom-emr: Fix a regression for EMR devices * Add a generic DFU firmware object for plugins to use * dfu: Use FwupdInstallFlags rather than a DFU-specific version * dfu: Remove functionality for modifying DfuSe files * dfu: Remove functionality you can do now with fwupdtool * dfu: Remove the merge command as it's unused and broken * trivial: Add fu_firmware_parse_file() helper for future use * trivial: Remove the fuzzing details for DfuPatch * trivial: Add klass->to_string for superclassed FuFirmwareImage objects * dfu: Remove DfuPatch as no vendor actually uses this * dfu: Don't wrap provided VID-PID functions * dfu: Use the standard FuDevice custom flags functionality * dfu: Use klass_device->write_firmware() directly * dfu: Use the generic fu_plugin_usb_device_added() function * dfu: Use daemon flags to ignore devices rather than a special flag * dfu: Set the device state directly to avoid proxying signals * dfu: Use the built-in detach() and attach() vfuncs * Read firmware back from the device as a FuFirmware * dfu: Remove a pointless function * dfu: Remove support for the Metadata Store Proposal * dfu: Remove XTEA support * dfu: Remove the SREC and IHEX parsing out of the DFU plugin * ebitdo: Use klass_device->write_firmware like other plugins * trivial: Remove G_BEGIN_DECLS from all private headers * Remove FU_PLUGIN_RULE_REQUIRES_QUIRK as all the plugins now use it * Set all FuUdevDevice plugins to use FU_QUIRKS_PLUGIN * thunderbolt: recognize new 'generation' sysfs attribute * Rename and modernize the udev plugin * synaptics-rmi: Also add the product ID as a GUID without the minor version * synaptics-rmi: Correctly set the payload length rather than hardcoding it * synaptics-rmi: Write the core config correctly * synaptics-rmi: Decode BL7 status failures as actual errors * synaptics-rmi: Add some trivial debugging to help debug a write problem * trivial: uefi: Make efivarvs errors clearer (Fixes: 1330) * trivial: uefi: don't prefix efivar errors * trivial: Remove some now-unused vfuncs * altos: Modernize the plugin to simplify it * Create the custom plugin GType in common code * Reduce more boilerplate in plugins * synaptics-rmi: Check the correct register when querying bootloader mode * trivial: fu-engine: fix never reporting remotes * trivial: fu-util: don't show warnings for no reports to upload * trivial: debian: remove more conffiles from transitions (Closes: #932617) * trivial: debian/control*: Update for fwupdate transition * trivial: Fix a tiny memory leak when starting the daemon * modem-manager: Fix a tiny memory leak when starting the daemon * synaptics-rmi: Copy the behavior of rmi4utils for BL7 detach * synaptics-rmi: Simplify fu_synaptics_rmi_device_read() * synaptics-rmi: Set the version after ->setup has run * synaptics-rmi: Use the correct mask when getting the bootloader mode on BL7 * syanptics-rmi: The build_id is 3 bytes long, not 2 * synaptics-rmi: Read the config partition the same as rmi4utils * Provide a default implementation of common FuDevice actions * thunderbolt-power: avoid checking for bolt support * synaptics-rmi: Add some debugging for BL7 devices * Fix usage of incorrect type for return value * synaptics-rmi: Do as little as possible in device setup * synaptics-rmi: Speed up reading the PDT from 900ms to 30ms * fu-util: add support for a reinstall command * trivial: fu-util/fu-tool: update re-install help text to reinstall * trivial: fu-util: remove double printed message about succesful firmware update * trivial: fu-util: show no updatable devices error for update command * synaptics-rmi: Ignore the ATTN reports from the hardware when reading DATA * synaptics-rmi: Move the fuzzing instructions to the toplevel README * Fuzz the SREC and IHEX file parsers once more * Use parallel fuzzing for the SMBIOS checks too * synaptics-rmi: Fix the packing of the partition table * Add a plugin to update Synaptics RMI4 devices * trivial: Add a parallel fuzzing script * trivial: fu-util: output newline after prompt. * trivial: fix %u output in report upload * Add a --no-domain logging option * trivial: Fix compiler warning for impossible-to-hit condition * Add support for automatically uploading reports * trivial: motd: disable updating motd for now * trivial: fwupd-refresh: fix a clash with fwupd.service (Closes: #941360) * trivial: Fix Fedora CI * trivial: fu-udev-device: fix some assertions * Search up the tree for a vendor name rather than (ab)using the HID_NAME * Add some success messages when CLI tasks have completed * trivial: Put the boolean prompt on the same line as the text * Never show LicenseRef-proprietary to the end user * trivial: snap: correct install hook root directory * Export the instructions for detaching the device * uefi: detect unmounted ESP partitions (Fixes: #1405) * uefi: stop recording efibootmgr output after flash * trivial: post release version bump - Changes from version 1.3.2: * Add support for '' to disambiguate some firmware * thelio-io: Add a plugin to detach the Thelio IO board * trivial: uefi, dell: skip self tests with TPM if non-root (Fixes: #1396) * trivial: dell: quiet the TSS output * trivial: uefi: allow forcing to TPM2 via environment variable * Do not ask the user to upload a report if ReportURI is not set * Do not enumerate physical devices when running the internal self tests * trivial: libfwupd: skip tests if machine-id is empty too * Add a new plugin to update Conexant audio devices * Export the salted machine ID as a daemon property * Fall back to /var/lib/dbus/machine-id when required * trivial: add stalebot (Fixes: #1393) * trivial: dell-dock: correct another write_size error * Align the key values to the text *width* not the number of bytes * trivial: Move dbus directory location for snap too * trivial: Fix some NULL/FALSE confusion * synaptics-prometheus: Fix tiny memory leak when using FuSynapromConfig * trivial: Fix tiny memory leak when using FuSrecFirmware * snap: switch to core18 * trivial: Return the correct property when getting the host product * trivial: fu-util-common: fix description wrapping (Fixes: #1378) * fu-util/fu-tool: Map out changelogs from remotes * fu-util/fu-tool: Better display historical information * fu-history: Update device_modified in sql database during updates * unifying: Use the instance ID to check for supported devices * unifying: Ensure HID++ v2.0 peripheral devices get scanned by the plugin * trivial: Add some more defines to the srec parser * trivial: fix wget command in fu-tool.c * Allow parsing a raw SREC file * trivial: wacom: Add support for second vendor ID * uefi, dell-esrt: Show firmware version when capsule updates unavailable * Add some more debugging to the SREC and IHEX parsers * Print the instance IDs if the GUIDs are unconverted * Add fu_common_bytes_compare_raw() for future usage * Call the set_quirk_kv() vfunc for the superclassed object * uefi: make the TPM optional for runtime again (Fixes: #1362) * trivial: uefi: Make the TCTI output less verbose * Support in AppStream metadata * Include all GUIDs when uploading a report * Do not crash when starting tpm2-abrmd * trivial: Update DBus conf path for example Fedora package * Move D-Bus conf file to datadir/dbus-1/system.d * trivial: Add fu_io_channel_write_byte_array() for future use * trivial: post release version bump - Package new sub-packages typelib-1_0-FwupdPlugin-1_0 and libfwupdplugin1.- Fix file list- Update to version 1.3.1: (jsc#SLE-10751) * Allow disabling all plugins * trivial: Specify the tpm2-tss-devel version in the example spec file * Move to CI Fedora 30 * modem-manager: Fix two build warnings on Fedora 30 * synapticsmst: Add another name quirk for the ThinkPad USB-C Dock * Re-introduce GUID support to fwupdmgr and fwupdtool * uefi-recovery: Add a plugin to add a fake ESRT entry for device recovery * Add a DMI quirk for the Minnowboard Turbot * trivial: Make it easy to disable or enable libflashrom for distros * trivial: Don't use Recommends for RHEL 7 * unifying: fix timeout metadata * ci: arch: minor improvements * unifying: fix timeout * Allow disabling SSL strict mode for broken corporate proxies * trivial: Allow ignoring the daemon version check by using --force * Try to only show DMI product name once * trivial: fu-util-common: Show unknown devices as interesting devices * dell: Use TSS to query and build TPM vendor strings for GUIDs * trivial: dell: show reasons for lack of updates in `UpdateError` * fu-util-common: strip all trailing whitespace in XML description * trivial: fu-common: match all whitespace not just ' ' in `fu_common_strstrip` * fu-util: show release output in get-details again * unifying: use fu_firmware_strparse_uint16 to read be 16bit values * unifying: fix incomplete hex file parsing * fu-util/fu-tool: Print devices, remotes, releases using a tree * Add aliases for `get-upgrades` and `upgrade` * trivial: UEFI skip self tests if library fails to initialize * libfwupd: Add a new private function `fwupd_remote_set_remotes_dir` * trivial: add libtss2-dev into debian/control (Closes: #1324) * trivial: Fix up the GtkDoc Since lines for API only available in 1.3.x * trivial: Post branch version bump * thunderbolt: Add support for kernel safety checks (Fixes: #1312) * Include the kernel release as a runtime version * trivial: fu-util: Drop GUID support from get-devices * synapticsmst: Partially rewrite the plugin (Fixes #1105) * Remove replug flag after the device comes back from reboot * trivial: Fix running the tests on devices with the TPM in v1.2 mode * trivial: fu-util-common: more cleanup related to topology * trivial: fu-util: cleanup fwupdmgr get-details output * trivial: Don't use topology printing in --verbose mode * Make get-devices and get-topology aliases for one another * trivial: Adjust daemon device sorting * Make get-topology more useful by showing all information * trivial: Fix fu_common_string_append_kv() to align properly with idx > 0 * trivial: dell-dock: correct an error preventing write_size from being set * trivial: Do not warn about deprecated declarations * trivial: Update BRs for the example Fedora package * uefi: add test for TPM 2.0 PCR read function * uefi: use tpm2-tss library to read PCR values * fu-common: Use environment variables for systemd managed directories * Use more systemd directives for directories * trivial: fu-util: fix debug output for devices * Allow turning off the timestamp prefix for debugging * Add a ->udev_device_changed plugin vfunc * Add fu_device_rescan() and a FuDevice->rescan() vfunc * Remove the duplicate files in meson.build * Hash the source files when generating the daemon hash * Split up source files in the build script * uefi: add support for tpm2-tools 4.X * trivial: plugins: clarify stance on afuefi.efi * trivial: plugins/: Update README * trivial: disable gtkdoc by default * trivial: update references of hughsie/fwupd to fwupd/fwupd * Publish docs to fwupd.github.io using CircelCI * Add support to integrate into the motd (Fixes: #1270) * Simplify get-devices output to not show un-useful fields * fu-engine/fu-config: Reload metadata store when configuration changes * trivial: If no devices support updates, show messaging (Closes: #1295) * trivial: uefi: set vendor name for system firwmare from DMI data * unifying: update Solaar url * thunderbolt: Fix logic to work properly with ICL thunderbolt controller * Add fu_udev_device_get_device_file() helper * trivial: Fix regression when using fu_device_incorporate() * trivial: Fix a potential crash when using FuPlugin in the self tests * synapticsmst: Make FuSynapticsmstConnection an actual GObject * synapticsmst: Use the same style as other plugins * trivial: Add some helper functions for GByteArray * Do not use FuDevice metadata for the physical and logical IDs * Use fu_common_string_append_kv() in subclassed device * synapticsmst: Use G_DECLARE_FINAL_TYPE to simplify the object * synapticsmst: Add a SynapticsMSTBoardID for another Lenovo dock * trivial: remove unnecessary CUSTOMERID_DELL define * synapticsmst: Add a SynapticsMSTBoardID for a Lenovo dock * synapticsmst: Display the board ID in non-hex form in the error message * synapticsmst: Use a more suitable icon for the device * trivial: Remove unused variable * Never use memcpy() in a possibly unsafe way * Add a ->to_string() vfunc to FuFirmware * Use FuFirmware as a container for firmware images * Allow filtering devices when using the command line tools * Be more accepting when trying to recover a failed database migration * trivial: Add translation for X-ThunderboltController * trivial: fixup standalone installer * modem-manager: add counterpart GUID for the DW5821e * solokey: Release the interface and rebind the kernel driver on close * fu-tool: Port ability to update a single device from fwupdmgr * uefi: Actually write the new device path if different than before * Allow setting custom flags when using fwupdate * trivial: Do not show a critical warning if no firmware is specified * trivial: Fix overzealous search-replace action in user string * Verify we don't break the ABI * Fix a crash when stopping the fwupd service * Relax the certificate time checks in the self tests for the legacy certificate * trivial: add cache directory into systemd unit rw paths * Never show AppStream markup on the console * Do not segfault when trying to quit the downgrade selection * trivial: Update icons for Thunderbolt and MST devices * Add support for the SoloKey Secure * trivial: Allow a device to *clear* a firmware version * trivial: debian: For signed package fill out Built-Using (Closes: #932757) * Allow specifying GUID to check any version exists * trivial: post release version bump * Release fwupd 1.2.10 * Disable the flashrom plugin by default * trivial: thunderbolt: catch failure setting up device * dell-esrt: Improve the experience for the plugin (Closes: #1245) * fu-util: When unlocking prompt for reboot if applicable * remove those PIDs with Bluetooth interface, Wacom updater doesn't support updating from Bluetooth interface * flashrom: Only show DEBUG and DEBUG2 output if using --plugin-verbose=flashrom * flashrom: Only call flashrom_programmer_init() on whitelisted boards * flashrom: Fix no version format set * fu-util: Show devices with an UpdateError in get-devices output * trivial: uefi: use UEFI-dummy for device ID instead of just uefi * trivial: fix error handling for non UEFI case (#1220) * Add a specific error code for the low battery case * Fix Fedora docker build missing directory: dist * uefi: Determine whether running in legacy mode or not (Fixes: #1220) * trivial: ci: debian: Only turn on flashrom when running CI * trivial: Fix typos in error messages * Allow client code to construct objects from GVariant blobs * Export functionality to build an array of objects * flashrom: Use libflashrom * trivial: Fix the version script to pick up boxed types * trivial: Correctly order the map entries according to vercmp rules * trivial: Fix pylint issue in the version script * Add meson target to fix translations * Add support for 8bitdo USB Retro Receiver * Use the newer features of GRWLock rather than reinventing it * Revert "Allow SuperIO updates to be done live" * uefi: Try to find a duplicate using the loadopt name * uefi: Provide a quirk to disable the use of the UX capsule * trivial: uefi: use the path for efibootmgr that was detected * synaptics-prometheus: Fix installing CONFIG firmware updates * synaptics-prometheus: Set the install duration from a quirk * synaptics-prometheus: Don't emit critial warning when updating config firmware * synaptics-prometheus: Fix missing field in the IOTA reply struct * Create SECURITY.md * redfish: Never set NULL device name * modem-manager: Never set NULL device name * ata: Never set NULL device name * trivial: Add some parameter guards to FuDevice * trivial: snap: make polkit directories if they don't exist (Fixes: #1205) * trivial: fu-main: clarify missing PK file error * synapticsmst: fix GUID generation (Closes: #1207) * Lite Mk II flag for use-shim-unique * trivial: circleci: try to fix automatic snap deployment * Allow SuperIO updates to be done live * fu-util-common: Support empty proxy strings (Fixes: #1199) * trivial: uefi: clarify error message * trivial: Fix non-systemd build * trivial: Sync example spec file with downstream * trivial: post release version bump - Drop fwupd-bsc1143905-hash-the-source-files.patch: Applied upstream. - Add pkgconfig(tss2-esys) BuildRequires: New dependency. - Add gtk-doc BuildRequires and pass gtkdoc=true to meson, build api docs even when using source service.- Add fwupd-bsc1143905-hash-the-source-files.patch to hash the source files instead of libfwupdprivate.a to avoid the checksum change due to the random naming LTO profile sections (bsc#1143905)- Update to version 1.2.10: * Disable the flashrom plugin by default * dell-esrt: Improve the experience for the plugin (Closes: #1245) * fu-util: When unlocking prompt for reboot if applicable * remove those PIDs with Bluetooth interface, Wacom updater doesn't support updating from Bluetooth interface * flashrom: Only show DEBUG and DEBUG2 output if using - -plugin-verbose=flashrom * flashrom: Only call flashrom_programmer_init() on whitelisted boards * flashrom: Fix no version format set * fu-util: Show devices with an UpdateError in get-devices output * Add a specific error code for the low battery case * Fix Fedora docker build missing directory: dist * uefi: Determine whether running in legacy mode or not (Fixes: #1220) * Allow client code to construct objects from GVariant blobs * Export functionality to build an array of objects * flashrom: Use libflashrom * Add meson target to fix translations * Add support for 8bitdo USB Retro Receiver * Use the newer features of GRWLock rather than reinventing it * uefi: Try to find a duplicate using the loadopt name * uefi: Provide a quirk to disable the use of the UX capsule * synaptics-prometheus: Fix installing CONFIG firmware updates * synaptics-prometheus: Set the install duration from a quirk * synaptics-prometheus: Don't emit critial warning when updating config firmware * synaptics-prometheus: Fix missing field in the IOTA reply struct * Create SECURITY.md * redfish: Never set NULL device name * modem-manager: Never set NULL device name * ata: Never set NULL device name * synapticsmst: fix GUID generation (Closes: #1207) * Lite Mk II flag for use-shim-unique * fu-util-common: Support empty proxy strings (Fixes: #1199) - Add python3-setuptools to BuildRequires for generate-version-script.py- Update to version 1.2.9: * Release fwupd 1.2.9 * trivial: Add two new translatable strings for new category types * Check if the system is offline during install, rather than at startup * Prompt the user to shutdown if requried when installing by ID * Use the correct file extension for the offline updates cache * trivial: Allow using --force to use the wrong daemon version * trivial: Display the correct expected command * standalone-installer: Be smarter about existing installed fwupd * Add a plugin to update Synaptics Prometheus fingerprint readers * trivial: standalone-installer: rename uninstall argument to cleanup * fu-util: Check the daemon version is at least the client version * fu-util: Check that daemon is started by expected unit * fu-util-common: when stopping a daemon, check for snap too * Allow using --force to trigger a duplicate offline update * trivial: Allow using FuUsbDevice without a GUsbDevice * trivial: Copy the icons if unset for the device child * trivial: Copy the physical ID if unset for the device child * trivial: Ensure the parent ID is up to date if the device ID changes * trivial: Fix typo when setting the parent ID * trivial: Disable the flatpak CI build * Allow handling FORCE for devices that subclass FuDevice * uefi: Fix a libasan failure when reading a UEFI variable * trivial: Fix a memory leak found using libasan * trivial: Fix an libasan failure in the dell plugin * trivial: Fix some dead code spotted by coverity * trivial: Fix a typo spotted by coverity * trivial: Fix a missing config.h include in a new source file * Dynamically read path to use for /system-update * Display the remote warning on the console in an easy-to-read way * ata: Set version format to plain for devices obtained from udev * trivial: Only apply SmbiosManufacturer to release version for internal * trivial: Fix two bugs in the hardware self tests script * Never guess the version format from the version string * Only force a semver when the device opts-in * Export the version-format to clients * Add missing gtk-doc documentation * dfu: Add some trivial, but useful, debugging for AVR DFU devices * dfu: Correctly identify DFU firmware that starts at offset zero * dfu: Don't keep showing trivial debug output * dfu: Reset the forced version during attach and detach * ata/nvme: For devices running Dell firmware, set `VersionFormat` (Fixes: #1169) * fu-engine: Check if VersionFormat is ambiguous when adding devices * trivial: Fix fwupdate --apply * Only use class-based instance IDs for quirk matching * trivial: dell-dock: set minimum board to 6 * trivial: post release version bump- Update to version 1.2.8: * Don't upload reports when the user has configured their system in a broken way * Allow setting the daemon verbose domains at runtime * Allow fwupdmgr to modify the daemon config * Do not compare version formats when the release format is unknown * Do not fall back integers to a plain version format * Use the device version format when converting the release version * Set the VersionFormat using the metadata or the UEFI quirk - Changes from version 1.2.7: * l10n: Create Lithuanian translation file * l10n: Update LINGUAS * Updated: Add support for 8BitDo M30. * modem-manager: increase the timeout to wait for modem after uninhibited * modem-manager: implement qmi pdc active config selection as attach() * fu-engine: When removing activation flag match the correct version * Require --force to install a release with a different version format * Match the old or new version number when setting NEEDS_REBOOT * Make an error message clearer when there are no updates available * Add support for the not-child extension from Logitech * thunderbolt: Set require-ac for Thunderbolt devices (Fixes: gh#hughsie/fwupd#1142) * Fix some typos spotted using codespell * Add a component categories to express the firmware type * fu-tool: Port get-history command to fwupdtool * Recreate the history database if migration failed * Move the core built-in 'fwupd' remote over to the dell-esrt plugin * snap: Add a custom systemd unit to call activation on shutdown (Fixes: gh#hughsie/fwupd#1125) * ata: Flush cache before standby and activate * synapticsmst: blacklist plugin when using amdgpu (Fixes: gh#hughsie/fwupd#1121) * uefi: add a new option to specify the os name * Return the newest device when using fu_history_get_device_by_id() * uefi: More carefully check the output from tpm2_pcrlist * uefi: Don't overwrite CustomFlags if set from a quirk * Shut down the daemon if the on-disk binary is replaced * ata: Correct activation functionality * Fix version comparisons after reboot for some formats * fu-tool: save history from stuff installed with `fwupdtool` - Changes from version 1.2.6: * ata: send ATA standby immediate when activating firmware * offline: Be more graceful when dealing with Plymouth failures * Save the new version in the history database for offline updates * Show the DeviceID when showing the updates list * Allow forcing an offline-only update on a live system using --force * Do not schedule an update on battery power if it requires AC power * superio: Add InstallDuration default value * superio: Add support for writing new e-flash contents * superio: Fix reading the attestation checksum * superio: Add support for reading the device checksum * superio: Use the chipset ID in the device name * superio: Move the device flush before getting the register map * superio: Move all the IT89xx code to a subclassed device object * superio: Move all the IT85xx code to a subclassed device object * superio: Split and export fu_superio_device_ec_writeX() * superio: Remove the port from fu_superio_device_ec_read() * superio: Move the register read/write into the FuSuperioDevice object * superio: Check the IOBAD0 is usable during setup * superio: Use fu_device_set_firmware_size() * superio: Move some constants out to the common header * superio: Use GObject properties in FuSuperioDevice * superio: Convert FuSuperioDevice to be derivable * Update Plymouth when updating pending firmware * Ask to reboot after scheduling an offline firmware update * Do not fail when scheduling more than one update to be run offline * Allow running offline updates when in system-update.target * Fix the location of fwupdoffline in the service file * Add optional vfuncs to allow detaching and attaching verify() * superio: Add list of SPI commands for future usage * Add a verify-update command to fwupdtool * uefi: Actually upload the UPDATE_INFO entry for the UX capsule * superio: Get the chip size from the EC rather than hardcoding * uefi: Check the error code of QueryCapsuleCapabilities() correctly * Update the UEFI UX Capsule Header checksum when needed. * uefi: Copy the shimx64.efi binary for known broken firmware * Correctly get the check the new version for devices that replug * Add a simple script to add a capsule header * Ensure the PKCS-7 client certificate exists at startup * fix makecab directive options * fwpup.service: use display-manager.service instead of gdm.service * Allow signing the fwupd report with the client certificate * Add a D-Bus method to generate a signature using the self-signed client certificate * Allow signing and verifying data using a PKCS-7 self-signed client certificate * Fix a critical warning when loading a PKCS-7 certificate with no DN * Include all device checksums in the LVFS report * modem-manager: Fix a trivial build warning * superio: Fix a trivial build warning * Move out the offline update functionality to a new binary * Do not reboot when failing to start fwupd during offline updates * Do not write the schema version to the db when loading * Do not recreate XbSilo caches when running on a readonly filesystem * Add the fwupdagent binary for use in shell scripts * Allow restricting firmware updates for enterprise use * standalone-installer: new --allow-older and --allow-reinstall options * Show the upgrade and downgrade flags when getting releases for a device * Rename FwupdRelease:trust-flags to FwupdRelease:flags * fu-tool: Save device state to @LOCALSTATEDIR@/lib/fwupd/state.json on actions * modem-manager: implement support for qmi-pdc * Add a plugin to support ModemManager hardware * fu-tool: Don't let failing to find dbus prevent engine from starting * ata: Support delayed activation * dell-dock: Use activation when calling fwupdtool activate * Add a support for delayed activation * uefi: Fix the self tests when running on Fedora SilverBlue * Do not fail to start the daemon if tpm2_pcrlist hangs * po/make-images.sh: quote LOCALEDIR and PYTHON3 * meson: print stderr of python3 command instead of stdout * Revert "contrib/debian: Switch to debian unstable" * Add elogind support - Changes from version 1.2.5: * uefi: fix segfault in fwup_set_update_statuses * Show in Flathub correctly * debian: explicitly depend on shared-mime-info * superio: Implement detach() and attach() * superio: Correct the names of some constants and improve debugging support * dell-dock: Filter the last supported payloads of certain board 4 SKUs * circleci: Manage the lifecycle of the snap * Add support to run snap build in CircleCI * wacom-usb: Use the correct buffer format for the touch module * wacom-usb: Set the install duration for each device type * wacom-usb: Return with an error if there were too many retries * wacom-usb: Make updating less verbose * Convert all child instance IDs when converting the parent * uefi: Allow devices to create more complete fake UEFI devices * unifying: Fix regression when recovering from failed flash * Ensure libxmlb dir exists for LGTM.com * Add C build configuration for LGTM.com * Use G_BEGIN_DECLS correctly for internal headers * standalone-installer: Fix issue found by LGTM * Use '#pragma once' to avoid a lot of boilerplate * Force LGTM to see Python 3 * fwupd: Hide firmware-packager behind meson option` * fu-common-cab: Correct handling of CAB files w/ nested directories and older libgcab * Fix a regression in using the InstanceIDs for quirk matching * thunderbolt: Convert the instance IDs as we never open the device * udev: Manally call fu_device_setup() to convert the instance IDs * fu-tool: Correct a crash caused by calling fwupdtool update * fu-tool: Don't fail if dbus is unavailable * contrib/debian: Switch to debian unstable * wacom-usb: Record the block number when failing * wacom-usb: The touch address is big endian * wacom-usb: Accept a non-binary IHEX file for the touch update * wacom-usb: Only poll when the device status is 'busy' * wacom-usb: Only reboot the device when all composite devices have been updated * wacom-usb: Fix flashing failure with latest Intuos Pro tablet * dfu: Fill holes when reading SREC files * Add fwupd_guid_from_string() to drop dep on uuid * wacom-raw: Check the InstanceID rather than GUID * Defer the InstanceID->GUID hashing until after setup * ata: Check for USB enclosures as well * Do not use efivar just to print a mixed endian GUID * Add fu_device_add_instance_id() and prefer explicit conversion * Report the DeviceInstanceIDs to `fwupdmgr get-updates` * Export some of the GUID functionality * Allow a plugin to set _ANOTHER_WRITE_REQUIRED to run more than one plugin * nvme: Add an extra check for Dell plugins to avoid false positives * ata: Add support for detecting Dell GUIDs * Fix the self tests when using glib2 >=2.59.0 * Add support to call composite prepare and cleanup using fwupdtool * uefi: Disable -Wno-address-of-packed-member * uefi: Don't unconditionally enable Werror for the EFI binary * Disable -Wno-address-of-packed-member - Changes from version 1.2.4: * Remove the autogenerated headers in the gettext files * ata: Default to the non-activation 0xE subcommand * fastboot: Use a much longer timeout as the removal delay * fu-progressbar: be more quiet when running non-interactive * fu-tool: Show UpdateMessage if applicable for install command * dfu: Simplify the SREC parser to avoid a crash with an invalid file * wacom-raw: Use the correct error codes when the panel is not supported * wacom-usb: Add some more information to the README * fu-keyring-utils: Don't fail missing PKI directory when compiled with GPG/PKCS7 * dell: Check that the flash interface command is available * wacom-usb: Fix the plugin name to allow devices to be updated * fastboot: flash the partition after downloading the file * uefi: Add a quirk to use the legacy bootmgr description * ata: Mark all devices as needing a reboot * ata: Add a new plugin to upgrade firmware on ATA/ATAPI hardware * udev-device: Add a utility function for debugging * udev-device: Set the firmware revision automatically * udev-device: Set the serial number automatically * udev-device: Fall back to non-database model and vendor values * udev-device: Fix critical warning if the device has no parent * dell-dock: Add support for a passive flow * Add support for an `UpdateMessage` and display it in tools * fu-tool: Port the `get-updates` command over * When using `directory` remote type automatically generate metadata * libfwupd: Add support for new remote type "directory" * Ensure cabinet archives always have a container checksum * Add support for a per-release source and details URL * When generating a CAB Silo use the prefix "components" * uefi: Add a trivial debugging statement to debug a UX capsule failure * uefi: Use fwup_new0() to allocate the updates table array * nitrokey: Correct Nitrokey Storage invalid firmware version read * dell-dock: Add support for flashing Thunderbolt over I2C * wacom-raw: Add a plugin to update Wacom embedded EMR and AES panels * fu-util/fu-tool: sync up reboot and shutdown behavior * dfu: Ignore the SUB ASCII value * dfu: Fix the parser to support extended segment addresses * dfu: Support ihex files with leading comments don't show an error * uefi: Correct a boot order creation bug (Fixes: gh#hughsie/fwupd#956) * uefi: Remove all variable length arrays * uefi: Fix a logic bug in fwup_search_file() * uefi: Use _cleanup_free in one more place * uefi: Do not pass required attrs to fwup_delete_variable() * uefi: Delete the old Linux-Firmware-Updater boot entry * uefi: Use the GNU-EFI BOOL type * Check if plugin changed after the device attaches or detaches * uefi: Refactor and simplify the EFI loader * Show a console warning if loading an out-of-tree plugin * UEFI: Do the UX checksum calculation in fwupd * wacom-usb: Add two more Intuos tablets * nvme: Add the needs-shutdown quirk to Phison NVMe drives * Add _NEEDS_SHUTDOWN flag for devices * Use GCC __cleanup__ features in the EFI loader * nvme: Add flag to support manually aligning the firmware to the FWUG value * nvme: Support FGUID to get the SKU GUID * nvme: Support FWUG to get the write block size * nvme: Add trivial comment to clarify address bitshifting * uefi: Do not check the BGRT status before uploading a UX capsule * dfu: Fix flashing various Jabra devices * upower: Add support for checking battery percentage * nvme: Check the return code of the admin passthru ioctl * fu-tool: Add support for an 'update' command to fwupdtool * dell-dock: Set minimum board to board 4 * dell-dock: Workaround a manufacturing bug for board level 4 * dell-dock: Wait longer for re-enumeration on TBT SKU * superio: Support IT89xx devices * fu-main: remove incompatible locale error message * Add a new plugin checklist (Fixes: gh#hughsie/fwupd#899) - Dropped obsolete patch: fwupd-bsc1130056-change-esp-os-name.patch (upstream PR: gh#hughsie/fwupd#1119 - Fixed fwupd-bsc1130056-change-shim-path.patch so that it works with the new files - Cleaned up changelog- Stop shipping polkit rules, as we have the distro specific setup in polkit-default-privs (boo#1125428).- Add fwupd-bsc1130056-change-esp-os-name.patch to change the OS directory in ESP (bsc#1130056) - Add fwupd-bsc1130056-change-shim-path.patch to set the default shim binary for openSUSE/SLE (bsc#1130056) - Link fwupd*.efi.signed to fwupd*.efi as requested by fwupd (bsc#1129466)- fwupd.spec: fix shell syntax error in %postun section (boo#1120363).- Update to version 1.2.3: * Correctly migrate the history database - Changes from version 1.2.2: * Log an error if started with an incompatible locale * Fix building with -Wl,-z,defs * ebitdo: Fix the reported version number if the daemon locale is not C.UTF-8 * Add Dell TB18DC to the known devices list * Allow replacing the last byte in the image when using 'dfu-tool replace-data' * Check the device checksum as well as the content checksum during verify * Submit the device firmware checksum and update protocol in the submitted report * Include the device checksum and update protocol in the historydb * uefi: Add the PCR0 value as the device checksum for system firmware * Add new API to get the release protocol from the metadata * Allow plugins to define support for a 'well-known' protocol * uefi: When adding headers set the header size to 4k * uefi: Append the header on capsules without headers from Linux * flashrom: Ensure the quirks database is set on the new object * uefi: Do not add devices with invalid GUIDs * Do not allow a GUID of zero * Add shared functionality for reading and writing with O_NONBLOCK * Only run attach and detach if the device is in the wrong mode * Sanitize the version if the version format has been specified * wacom-usb: Remove the DTH generation hardware as it will not work with fwupd * thunderbolt: Remove a superfluous boundary condition when verifying update * Add a plugin to update hardware that supports fastboot * Fix a regression when doing GetReleases on unsupported hardware * dfu: Require a specific USB class and subclass for DFU mode * Correctly parse format the version numbers correctly using old metadata * amt: Fix a crash if AMT returns an empty response * Check plugins set error on failure * contrib: Add a simple python3 client * installed-tests: Adjust to actually use a remote for installed tests * Add more standard USB identifier GUIDs * wacomhid: Rename to wacom-usb * Provide a way for plugins to decompress a custom archive to ram - Changes from version 1.2.1: * Remove DaemonVersionFormat=quad * Shut down the daemon after 2h of inactivity * Create a silo index to speed up GUID queries * Fix flashing the 8bitdo SF30 * Speed up fwupd startup by loading less thunderbolt firmware * Query the XbSilo when calling fu_plugin_check_supported() * Guess the version format when it is not provided * Fix a use-after-free when using valgrind and --immediate-exit * Add per-release install duration values * Fix showing the custom remote agreements * Be more explicit setting the update state * Include the os-release information in the release metadata - Changes from version 1.2.0: * ebitdo: remove SF30/SN30 pro device ids * dell-dock: Drop delayed MST callback routine * synapticsmst: Adjust EVB board handling * synapticsmst: Remove the content checking of firmware * synapticsmst: Access Board ID through memory instead In firmware images HDCP 2.2 will be enabled by default,so access to flash region will fail.` * contrib: Adjust flatpak build for moving to flathub * dell-dock: Prefer to flash VMM5331 via I2C instead of DP aux * Use HTTPS_PROXY if set * firmware-packager: Make it clearer to use * Sort the firmware sack by component priority * flatpak: Update gnu-efi to latest version * amt: Set the full device version including the BuildNum * fwupdmgr/fwupdtool: Move monitor command to fwupdtool * fwupdmgr/fwupdtool: Move firmware builder from fwupdmgr to fwupdtool * Add version format quirks for several Lenovo machines * uefi: Set the quirks on created devices * dell_dock: Use correct offset for finding version of MST * dell-dock: Add missing unlock call for MST via dell_dock plugin * Support the Intel ME version format * Port from libappstream-glib to libxmlb * Bump requirement to meson 0.46.0 * fu-main: Catch SIGTERM while update is in progress * fu-tool: Stop any running daemon over dbus before loading engine * meson: Bump dependency to 0.44 and adjust sysconfdir handling * dell-dock: If marketing name is invalid don't fail initialization * Readme Updated: Added KDE Discover as one more graphical front-end available for fwupd. * dell-dock: Correct a situation that error wasn't propagating * Don't segfault if a plugin returns FALSE from UpdateFunc with no error set * dell-dock: Use different debug strings for each device type * dell-dock: Don't use the VLA feature in the new dock * Add a plugin for an upcoming Dell USB-C dock * contrib: Add information on how to use debugging scripts * Allow setting the version format from a quirk entry * Don't use AppStream-glib for string helpers * Don't use AppStream-glib for version helpers * Don't use AppStream-glib for the GUID helpers * fu-device: Ensure that parent ID is created before creating quirked children * Update all sub-devices for a composite update * Stop showing the current release during updates in fwupdmgr * uefi: Move the TPM unlocking functionality from the Dell to UEFI plugin * Run the Dell plugin initialization after the UEFI plugin * thunderbolt-power: Fix possible linker problem * Allow firmware files to depend on versions from other devices * fu-debug: Redirect all debugging output to stderr instead of stdout * synapticsmst: Adjust panamera ESM update routine for some reported issues * fu-engine: Optionally wait for replug before updating a device * fu-device-list: Use delayed device removal when removing the tree * thunderbolt: Use replugging from the daemon * Add support for devices to show an estimated flash time * Marked some CL options for translation * ci: Run clang static analysis for Ubuntu build rather than just clang compiler * nvme: Initialize the buffer before reading the contents * contrib: Add a standalone installer creation script * rts54hid: Add support for Realtek USB devices using vendor HID commands * fu-engine: Don't show devices pending a reboot in GetUpgrades * Add FuMutex helper to make various parts of the daemon thread-safe * rts54hub: Add support for Realtek USB devices using vendor HUB commands * uefi: Check the amount of free space on the ESP * fu-tool: Import debugging options from fu-debug like fu-main * superio: Set the physical and logical IDs - Add pkgconfig(xmlb) BuildRequires: New dependency.- Add pesign-obs-integration to BuildRequires and add fwupd*.efi to BRP_PESIGN_FILES to get it signed - Add LC_IMAGES and use efivar only if %{with efi_fw_update} + Also update the version requirement of efivar - Disable Redfish and NVME plugins if %{without efi_fw_update} since those two plugins require efivar - Remove fwup from BuildRequires since fwupdate is already merged into fwupd.- Use gnu-efi only if %{with efi_fw_update}, always use pkgconfig(efivar) - Fix file list- Amend %post and %postun to install/uninstall fwupd*.efi to the EFI system partition + Also add shim to Requires for fwupdx64.efi - Mark fwupdate as obsolete + fwupdate has been merged into fwupd since fwupd 1.1.0.- fwupd is require for thunderbolt firmware update in SLE15-SP1(fate#322681)- Update to version 1.1.2: + New Features: - Add a new device flag "ignore-validation" that will override checks - Add a new plugin to enumerate EC firmware - Add a new plugin to update NVMe hardware - Add a plugin for updating using the flashrom command line tool - Allow the device list to take care of waiting for the device replug - Allow updating just one specific device from the command line - Allow upgrades using a self-signed fwupd.efi binary - Download firmware if the user specifies a URI - Include serial number in daemon device output when trusted - Notify all plugins of device removals through a new vfunc - Use boltd force power API if available + Bugfixes: - Add an install hook for classic snap - Allow forcing installation even if no AC power is applied - Allow using --force to ignore version_lowest - Always use the same HardwareIDs as Windows - Check the device state before assuming a fake DFU runtime - Copy over parent GUIDs from other plugin donors - Detect location of python3 interpreter - Do not add udev devices after a small delay - Don't fail to run if compiled without GPG/PKCS7 - Fix a segfault in fwupdtool caused by cleanup of USB plugins - Implement the systemd recommendations for offline updates - Improve performance when reading keys from the quirk database - Remove children of devices when the parent is removed - Rewrite synapticsmst to use modern error handling - Rewrite the unifying plugin to use the new daemon-provided functionality - Show a time estimate on the progressbar after an update has started- Use noun phrase for summary. Trim request for comments from description.- Update to version 1.1.1: + New Features: - Add support for the Synaptics Panamera hardware - Add validation for Alpine and Titan Ridge - Improve the Redfish plugin to actually work with real hardware + Bugfixes: - Allow different plugins to add the same device - Allow flashing unifying devices in recovery mode - Allow running synapticsmst on non-Dell hardware - Check the ESP for sanity at at startup - Do not hold hidraw devices open forever - Don't override _FORTIFY_SOURCE when building the EFI binary - Don't show passwords in fwupdmgr - Fix a potential segfault in smbios data parsing - Fix encoding the GUID into the capsule EFI variable - Fix various bugs when reading the thunderbolt version number - Reboot synapticsmst devices at the end of flash cycle - Show status messages when the daemon is initializing - Show the correct title when updating devices - Show the reasons that plugins are not run on the CLI - Use localedir in po/make-images- Run %udev_rules_update in post as package install udev rules- Update to version 1.1.0: (FATE#326702) + New Features: - Add a initial Redfish support - Add a tool to mimic the original fwupdate CLI interface - Allow devices to assign a plugin from the quirk subsystem - Change the quirk file structure to be more efficient - Merge fwupdate functionality into fwupd - Run a plugin vfunc before and after all the composite devices are updated - Support more Wacom tablets + Bugfixes: - Add release information for locked devices - Allow building with older meson - Detect the EFI system partition location at runtime - Do not use 8bitdo bootloader commands after a successful flash - Enable accesing downloaded files in flatpak and snap - Fix a potential buffer overflow when applying a DFU patch - Fix downgrading older releases to devices - Fix flashing devices that require a manual replug - Fix several small memory leaks in various places - Fix the retrieval of Redfish version - Fix unifying failure to detach when using a slow host controller - Set the Wacom device status when erasing and writing firmware - Show errors in the CLI if unable to access directory - Use the parent device name for Wacom sub-modules - Removed enable_pkcs7_when_testing_only.patch- Update to version 1.0.8: + New Features (including version 1.0.7): - Add an plugin to update some future Wacom tablets - Add 'fwupdmgr get-topology' to show logical device tree - Add support for creating a flatpak - Add support for creating a snap - Add support for Motorola S-record files - Add the Linux Foundation public GPG keys for firmware and metadata - Show a translated warning when the server is limiting downloads - Add enable-remote and disable-remote commands to fwupdmgr - Add fu_plugin_add_compile_version() for libraries to use - Allow requiring specific versions of libraries for firmware updates - If no remotes are enabled try to enable the LVFS - Show a warning with interactive prompt when enabling a remote + Bugfixes (including version 1.0.7): - Add a firmware diagnostic tool called fwupdtool - Adjust all licensing to LGPL 2.1+ - Allow installing more than one firmware using 'fwupdmgr install' - Allow specifying hwids with OR relationships - Do not call fu_plugin_init() on blacklisted plugins - Do not require libcolorhug to build - Fix a crash in libfwupd where no device ID is set - Fix a potential DoS in libdfu by limiting holes to 1MiB - Fix a segfault that sometimes occurs during cleanup of USB plugins - Fix Hardware-ID{0,1,2,12} compatibility with Microsoft - Hide devices that aren't updatable by default in fwupdmgr - Search all UEFI GUIDs when matching hardware - Stop matching Nintendo Switch Pro in the 8bitdo plugin - Check that EFI system partition is mounted before update - Disable synapticsmst remote control on failure - Don't recoldplug thunderbolt to fix a flashing failure - Fix SQL error when running 'fwupdmgr clear-offline' - Improve the update report message - Only enumerate Dell Docks if the type is known - Only run certtool if a new enough gnutls is present - Prevent a client crash if the daemon somehow sends invalid data - Reboot after scheduling using logind not systemd - Use the right encoding for the label in make-images - Added/backported enable_pkcs7_when_testing_only.patch: + needed to disable pkcs7 test during build (can be removed for fwupd >= 1.0.9)- Update hasbang in installed files from /usr/bin/env python3 to /usr/bin/python3.- Update url - Small packaging cleanup with spec-cleaner- Update to version 1.0.6: + New Features: - Add bash completion for fwupdmgr. - Add support for newest Thunderbolt chips. - Allow all functions that take device arguments to be prompted. - Allow devices to use the runtime version when in bootloader mode. - Allow overriding ESP mount point via conf file. - Delete any old fwupdate capsules and efivars when launching fwupd. - Generate Vala bindings. + Bugfixes: - Allow ctrl-d out of the prompt for devices. - Allow to create package out of provided binary. - Correct handling of unknown Thunderbolt devices. - Correctly detect new remotes that are manually copied. - Fix a crash related to when passing device to downgrade in CLI. - Fix running the self tests when no fwupd is installed. - Fix Unifying signature writing and parsing for Texas bootloader. - Only send success and failure reports to the server. - Use a CNAME to redirect to the correct CDN for metadata. - Use a longer timeout when powering back the Thunderbolt device.- Ensure library package has a dependency on main package, otherwise it won't be usable.- Update to version 1.0.5: + New Features: - Offer to reboot when processing an offline update. - Report the efivar, libsmbios and fwupdate library versions. - Report Thunderbolt safe mode and SecureBoot status. - Show the user a URL when they report a known problem. - Support split cabinet archives as produced by Windows Update. + Bugfixes: - Be more careful deleting and modifying device history. - Clarify which devices don't have upgrades. - Ensure the Thunderbolt version is xx.yy. - Fix a daemon warning when using fwupdmgr get-results. - Fix crasher with MST flashing. - Fix DFU detach with newer releases of libusb. - Include the device VID and PID when generating the device-id. - Set the RemoteId when using GetDetails. - Stop matching 8bitdo DS4 controller VID/PID. - Use help2man for dfu-tool and drop docbook dependencies. - Use ngettext for any strings with plurals. - Use the default value if ArchiveSizeMax is unspecified.- Update to version 1.0.4: + New Features: - Add D-Bus methods to get and modify the history information. - Allow the user to share firmware update success or failure. - Ask the user to refresh metadata when it is very old. - Store firmware update success and failure to a local database. + Bugfixes: - Add a device name for locked UEFI devices. - Allow each plugin to opt-in to the recoldplug action. - Fix firmware downloading using gnome-software. - Fix UX capsule reference to the one specified in efivar. - Never add two devices to the daemon with the same ID. - Rescan supported flags when refreshing metadata. - Add pkgconfig(json-glib-1.0) BuildRequires: new dependency.- Update to version 1.0.3: + New Features: - Add a new plugin to add support for CSR "Driverless DFU". - Add initial SF30/SN30 Pro support. - Support AppStream metadata with relative URLs. + Bugfixes: - Add more metadata to the user-agent string. - Block owned Dell TPM updates. - Choose the correct component from provides matches using requirements. - Do not try to parse huge compressed archive files. - Fix a double-free bug in the Udev code. - Handle Thunderbolt "native" mode. - Use the new functionality in libgcab >= 1.0 to avoid writing temp files.- Unbreak compilation on non-x86, upstream renamed options to disable plugins.- Update to version 1.0.2: + Add a plugin for the Nitrokey Storage device + Add support for the original AVR DFU protocol + Allow different plugins to claim the same device + Allow quirks to set common USB properties + Move a common plugin functionality out to a new shared object + Optionally delay the device removal for better replugging + Set environment variables to allow easy per-plugin debugging + Use a SHA1 hash for the internal DeviceID + Add quirk for AT32UC3B1256 as used in the RubberDucky + Disable the dell plugin if libsmbios fails + Don't register for USB UDev events to later ignore them + Fix a possible buffer overflow when debugging ebitdo devices + Fix critical warning when more than one remote fails to load + Fix DFU attaching AVR32 devices like the XMEGA + Ignore useless Thunderbolt device types + Refactor ColorHug into a much more modern plugin + Release the Steelseries interface if getting the version failed + Remove autoconf-isms from the meson configure options + Show a nicer error message if the requirement fails + Sort the output of GetUpgrades correctly - Changes from version 1.0.1: + Add support for HWID requirements + Add support for programming various AVR32 and XMEGA parts using DFU + Add the various DFU quirks for the Jabra Speak devices + Allow specifying the output file type for 'dfu-tool read' + Move the database of supported devices out into runtime loaded files + Support the IHEX record type 0x05 + Use help2man to generate the man page at build time + Use the new quirk infrastructure for version numbers + Catch invalid Dell dock component requests + Correctly output Intel HEX files with > 16bit offset addresses + Do not try to verify the element write if upload is unsupported + Fix a double-unref when updating any 8Bitdo device + Fix crash when enumerating with Dell dock connected but with no UEFI + Fix uploading large firmware files over DFU + Format the BCD USB revision numbers correctly + Guess the DFU transfer size if it is not specified + Include the reset timeout as wValue to fix some DFU bootloaders + Make the error message clearer when sans fonts are missing + Support devices with truncated DFU interface data + Use the correct remote-specified username and passord when using fwupdmgr + Use the correct wDetachTimeOut when writing DFU firmware + Verify devices with legacy VIDs are actually 8Bitdo controllers - Add help2man as BuildRequires.- Fix dependencies and build options for non-x86 architectures. At least FW updates for USB are arch independent, and EFI FW updates can also be applied on Aarch64.- Update to version 1.0.0: * Add the plugin documentation to the main gtk-doc * Add a waiting-for-auth daemon state * Add fwupd_remote_get_checksum() to use in client programs * Generate the LD script from the GObject Introspection data * Prevent fwupd from mounting filesystems * uefi: Do not use system-specific infomation for PCI devices * uefi: Support uploading the firmware splash image * dell: only set coldplug delay when we know we need it * dell: only run SMI to toggle host MST GPIO on systems with host MST * dell: add functionality to blacklist HW with problems * dell: only run on intended chassis * thunderbolt-power: always run after thunderbolt plugin * Allow plugins to depend on each other * Add support for SMBIOSv3 * dell: prefer to use hwids to get DMI keys and DE table * debian: remove /etc/fwupd.conf on upgrade * unifying: Use fu_plugin_check_supported() * Add fu_plugin_check_supported() * unifying: Use a device whitelist to avoid breaking devices * Fix various printing issues with the progressbar * dell: Fix a trivial whitespace issue * Do not fail to load the daemon if cached metadata is invalid * Do not store the newest release as part of the FuDevice object * Add a method to return a list of upgrades for a specific device * Move the downgrade calculation to the daemon * Make FuDevice derive from FwupdDevice rather than FwupdResult * Add a command 'clear-offline' to fwupdmgr * Merge releases where multiple remotes provide the same firmware * Remove the UniqueID property * uefi: Do not set the release version * udev: Do not match USB devices, even with a GUID set * Use the intel-wmi-thunderbolt kernel module to force power * dell: drop thunderbolt force power code * unifying: Add hardcoded summaries for peripheral kinds * Create CODE_OF_CONDUCT.md * Ensure more devices set the device summary * Add an 'Summary' property to each device * Add a human-readable title for each remote * unifying: Disable if the kernel has no CONFIG_HIDRAW support * Move deprecated symbols to a new header * Introduce an s390x cross compile target to CI * Add ModifyRemote as an easy way to enable and disable remotes like the LVFS * Do not auto-open all USB devices at startup * dfu: Use FuDeviceLocker * unifying: Use FuDeviceLocker * colorhug: Use FuDeviceLocker * ebitdo: Use FuDeviceLocker * altos: Use FuDeviceLocker * steelseries: Use FuDeviceLocker * usb: Use FuDeviceLocker * Add FuDeviceLocker to simplify device open/close lifecycles * dfu: Remove DEVO support * dfu: Remove the now-unused symtab support * Remove the ELF support from libdfu and move the code to the altos plugin * Use -Werror when building in Travis CI * Do not install the libdfu helper library * Parse the SMBIOS DMI table directly * usb: Disable the fallback USB plugin * Test for missing language translations at build time * Fix the libdfu self test failure on s390 and ppc64- Update to version 0.9.8: * Add a command 'clear-offline' to fwupdmgr * Do not fail to load the daemon if cached metadata is invalid * Fix a crash when using fu_plugin_device_add_delay() * Fix the libdfu self test failure on s390 and ppc64 * Format the BCD USB revision numbers correctly * Never fallback to an offline update from client code * Prevent fwupd from mounting filesystems * dfu: Allow flashing when the target does not specify an alt-name * dfu: Do not try to verify the element write if upload is unsupported * dfu: Fix uploading large firmware files * dfu: Include the reset timeout as wValue to fix some hardware * dfu: Set the vendor ID to the runtime USB VID * dfu: Use 0x0101 as an alias for 0x0110 * thunderbolt: move test for mock environment (gh#hughsie/fwupd#280) * udev: Do not match USB devices, even with a GUID set * uefi: Do not set the release version * unifying: Disable if the kernel has no CONFIG_HIDRAW support- Update to version 0.9.7: + 10 months worth of bugfixing, integrating more vendor specific Firmware update paths.- Update to version 0.8.1: + Delete duplicate translations (gh#hughsie/fwupd#89). + Do not hardcode docbook2man path. + Fix fwupdmgr timeout with missing pending database. + Fix compiler warnings. + Fix a crash when enumerating devices on a Dell WLD15. + dell: don't initialize libsmbios on unsupported systems. + Do not fail to start on Dell hardware. + Adjust systemd confinement restrictions. + Do not dlclose modules when running under valgrind. + Really remove the NoNewPrivileges systemd confinement. + Release fwupd 0.8.1.- Update to version 0.8.0: + Show a different error when checking for updates while on + battery power (gh#hughsie/fwupd#68). + Clarify the test in --help and man page related to offline + (gh#hughsie/fwupd#69). + libdfu: Use a heuristic for the start address if the firmware + has no DfuSe footer. + dell: Don't return the address of a stack variable. + dell: Fix a possibly-impossible-to-hit buffer overrun. + close USB devices before error returns (gh#hughsie/fwupd#73). + Make libelf support optional. + Always make sure we're getting a C99 compiler. + Fix redeclaration of polkit autocleanup functions. + Uncomment SystemdService parameter in the dbus service file + (gh#hughsie/fwupd#74). + Make all providers and plugins share a GUsbContext. + Unexport libebitdo. + Move the plugins into plugin-specific directories. + Convert the providers to plugins to simplify code and for + future features. + Add support for Logitech Unifying devices. + Add a set of vfuncs that are run before and after a device + update. + Return the pending UEFI update when not on AC power. + Move the UPower functionality to a plugin. + Fix udev plugin loading. + fix dfu plugin loading. + Disable PrivateNetwork on systemd service. + Use more restrictive settings when running under systemd. + dell: add a new method for forcing a controller to flash mode. + Add VerifyUpdate to update the device checksums server-side. + Move the Option ROM parsing to the Udev plugin. + Move the device add delay to shared code. + Add initial skeleton for Intel Thunderbolt support. + unifying: Use the actual bootloader VID/PIDs when in firmware + mode. + Allow the metadata to match a version of fwupd and the existing + fw version. + Add fwupd_result_get_device_version_bootloader(). + Fix the appstream-glib version guards. + dell: Add coldplug methods to let other plugins turn on + TBT/GPIO. + libdfu: Don't read data from some DfuSe targets. + Add the ability to run a prepare->exec->cleanup on coldplug. + Allow plugins to request that all plugins re-coldplug. + thunderbolt: Detecting new devices and add an actual device to + the daemon. + Add support for flashing the ChaosKey. + thunderbolt: add some guards around empty arrays. + dell: Adjust the coldplug preparation and cleanup sequence. + dell: Fix possible linker problem. + Revert "thunderbolt: add some guards around empty arrays". + Add fu_plugin_set_coldplug_delay() to allow hardware to + initialize if required. + altos: Add error checking when using termios. + ebitdo: Subclass FuDevice like the altos plugin. + altos: Set the flags in the init_real so they work for the + cmdline tool. + unifying: Subclass FuDevice like the altos plugin. + Include all debug messages when run with --verbose. + dell: introduce a standalone (noinst) tool to force mode + flashes. + Introduce plugin for Synaptics MST hubs. + synapticsmst: Add cascade support. + Only register the D-Bus service when all devices have been + added. + synapticsmst: Refactor away the global state. + synapticsmst: fix cascade support in the plugin. + Updates for thunderbolt plugin. + thunderbolt: Add special handling for safe mode on Dell systems + (gh#hughsie/fwupd#84). + synapticsmst: Iterate all nodes rather than hardcoding to 3. + synapticsmst: build GUID using dock type. + Add a new function fu_dell_supported to fu-dell-common. + synapticsmst: add a test suite. + synapticsmst: Fix up some trivial whitespace issues. + Fix a refcounting issue in the udev plugin. - Add rpmlintrc untill security review is resolved- Update to version 0.7.5: + Clean up PO files + Verify devices support updating in mode they are called. + Fix an assert when unlocking the dummy ESRT device + Don't create the UEFI dummy device if the unlock will happen on + next boot + dell: Match on TB16 as well + Fix a -fstack-protector-strong crash when uploading firmware + Enable the stack protection in local builds + dell: If running in test suite, don't try to get product ID + from sysfs + libfdfu: Show a warning when getting the alt-name failed + dfu: Fix listing devices using the ST reference bootloader + Show the nicely formatted target name for DfuSe devices + libdfu: Fix two possible critical warnings for corrupt USB + descriptors + libdfu: Correctly offset addresses when one zone has multiple + sectors + libdfu: Do not do GetStatus on dfuse upload + libdfu: Fix uploading from DfuSe devices + libdfu: Use the device offset when writing DfuSe firmware + libdfu: Add DfuAction enumerated value to represent a device + action + libdfu: Use an animated progress bar when performing DFU + operations + libdfu: Do not do a zero-byte download when in DfuSe mode + libdfu: Fix verification of written DfuSe firmware + libdfu: Ensure the device is open before claiming the interface + libdfu: Ensure the mode is set correctly when faking a runtime + libdfu: Re-get the quirks when the DfuDevice gets a new + GUsbDevice + libdfu: Add quirks for HydraBus as it does not have a DFU + runtime + libdfu: Match the device booloader or runtime VID and PID when + checking firmware + Add a 'replace-data' command to dfu-tool + string + libdfu: Add dfu_sector_get_zone() to get the continuous memory + zone number + libdfu: Wait for DNBUSY to be cleared when checking the DfuSe + status + libdfu: Correctly erase DfuSe devices + Enable hardening flags on more binaries + libdfu: Correctly set the element address when uploading from + DfuSe devices - Add pkgconfig(gmodule-2.0) BuildRequires: Align with what + configure checks for. - Add pkgconfig(libsmbios_c) BuildRequires: Support dell bios. + Unfortunatly, until we have fwup packaged and enabled, this will + not work. - Add disabled pkgconfig(libtbtfwu): For future thunderbolt + support.- Update to version 0.7.4: + Add a fallback for older appstream-glib releases + Write the ELF files with the correct section type + Fix libfwupd self tests when a host-provided fwupd is not + available + Add dfu_firmware_add_symbol() + Add the Altos symbol table to the DfuFirmware + Use the symtab to set the VID/PID from Altos IHEX firmware + images + Show the human-readable version in the 'dfu-tool dump' output + Allow specifying the argument to 'dfu-tool set-release' in + major.minor format. + sections + Support writing the IHEX symbol table + call + Load the symbol table from ELF firmware + Load the Altos USB descriptor from ELF files + Add DFU_CIPHER_KIND_RSA + Fix a possible crash when uploading firmware files using libdfu- Update to version 0.7.3: + build: Fix gtk-doc build when srcdir != builddir + In get-details output, display the blob filename + Ensure the update ID is set when getting local firmware details + Use a private gnupg key store + Add support for installing against multiple devices from a CAB + file + Use the correct firmware blob when installing a composite + device update + in get-details output, display update_name rather than Unknown + Device + statements + Don't make failures critical while checking versions or locked + state + Show a more detailed error when installing firmware on the + wildcard + Add Dell TPM and TB15/WD15 support via new Dell provider. + file + Allow blacklisting devices by their GUID + header file + Add XPS 9250 to Dell TPM modeswitch blacklist + Only display flashes left in results output when it gets low. + Add a small library for talking with 0bitdo hardware + Add another compile warning and fix up any build failures + Embed fwupd version in generated libfwupd and libdfu + documentation + Update fwupdmgr manpage for new commands and arguments + build: Fix gtk-doc build when srcdir != builddir + online not offline + Get the firmware version correctly from 0Bitdo gamepads + Switch to the Amazon S3 CDN for firmware metadata + Fix writing 8Bitdo device firmware + be updated + Show the vendor flashing instructions when installing + Split out the DFU file formats to separate files + Add fwupd_result_remove_device_flag() + Add FU_DEVICE_FLAG_NEEDS_BOOTLOADER + get-updates output + Allow providers to export percentage completion + Add fwupd_client_get_status() + Handle the 8Bitdo bootloader in a better way + Show a progress notification when installing firmware + Add fwupd_result_get_unique_id() + Use the SHA1 hash of the local file data as the component + origin + Use the correct define prefix for FwupdDeviceFlags + libdfu: Fix hang when parsing corrupt IHEX files + Add a set-target-size command to dfu-tool + Support the 'DEVO' cipher kind in libdfu + Add a set-address command to dfu-util + Disable the Dell specific code by default + Conditionally enable all providers based upon what's installed + Add a summary of providers that are enabled from configure + Do not use the deprecated GNOME_COMPILE_WARNINGS + Ignore devices that do not add at least one GUID + Do not attempt to add DFU devices not in runtime mode + Save the unique ID in the pending database + libdfu: Add initial ELF reading and writing support + Add dfu_firmware_format_from_string() + Normalize the DfuFirmwareFormat enums- Update to version 0.7.2: + Allow devices to have multiple assigned GUIDs + Only return updatable devices from GetDevices() + Add fu_device_get_alternate() + Allow metainfo files to match only specific revisions of + devices + Re-read flags for a device after a provider's unlock routine is + done + Test for a locked device when trying to install firmware update + Enforce allowing providers to take away flash abilities + Support returning multiple GUIDs from GetDetails + Add a GetDetailsLocal() method to eventually replace + GetDetails() + break + libdfu: Add DfuVersion enumerated values + libdfu: Show the DFU protocol version in 'dfu-tool list' + Only claim the DFU interface when required- Update to version 0.7.1: + Fix libdfu CRC check for big endian architectures + Add dfu_image_get_element_default() + Fix libdfu CRC check for big endian architectures + Fix big endian issues when reading and writing DFU and DfuSe + files + Remove non-interactive pinentry setting from fu-keyring + Set the system's DMI product name as the DisplayName for UEFI + Re-order output of get-devices to be easier to read + Make the device display name nicer + update version + Return all update descriptions newer than the installed version + Add summary and name field for Rival SteelSeries + Fix a critical warning when restarting the daemon + Add a 'supported' flag to the FuDevice + Add fwupd_client_connect() + Add a 'monitor' debugging command for fwupdmgr + Add device-added, device-removed and device-changed signals + Match the AppStream metadata after a device has been adedd + Re-match devices when the AppStream metadata is updated + Show 'Unknow Device' in fwupdmgr when a device name is not set + Set the device description when parsing local firmware files + Add support for a new device field "Flashes Left". + src/Makefile.am: reshuffle so enableable bits are only + referenced when on + Add support for a --force flag to override provider warnings- Update to version 0.7.0: + Use g_usb_context_wait_for_replug() + Run vendor plugins as required + Add a plugin for SteelSeries hardware + Add fwupd_device_flag_to_string() + Return the device flags when getting firmware details + Show device flags in 'fwupdmgr get-devices' + Add fwupd_trust_flag_to_string() + Export FwupdUpdateState in libfwupd + Export FwupdUpdateFlags in libfwupd + Add FwupdResult to libfwupd + Add a self test framework for libfwupd + Add FwupdClient to libfwupd + Use FwupdClient from libfwupd in fwupdmgr + Use libfwupd inside the daemon + Emit a FwupdClient::changed when the daemon emits this signal + Rename some of the new libfwupd API to align with the D-Bus + names + libdfu: Fix up some NULL/FALSE confusion + libfwup: Fix up some NULL/FALSE confusion + FwupdClient + Allow other checksum kinds in FwupdResult + Allow SHA-256 hashes when verifying + Show the checksum kind in the fwupdmgr output + Add Alienware to the version quirk table + Do not use /tmp for downloaded files + Add fwupd_result_has_device_flag() + Do not return updates that require AC when on battery + Connect to UPower at startup + Test that GPG key import actually was successful (or didn't + change a key already in the keyring) + Use g_auto() in FuKeyring + Return errors of the correct type when using libfwupd + Allow overridding the location of the pending database for + test suite + Allow overriding the location of the provider offline files for + test suite + Validate that the dbus system bus is available before running + libfwupd tests + Update README.md for changes that have happened in the project + Add some basic explanation of how to use fwupd with various + frontends + Split out the libdfu-devel package + Revert "Allow overridding the location of the pending database + for test suite" + Revert "Allow overriding the location of the provider offline + files for test suite" + Allow the test suite to run in %check + Generate gtk-doc documentation for libfwupd- Update to version 0.6.3: + Require AC power before scheduling some types of firmware + update + Install the hardcoded firmware AppStream file + Correct the BCD version number for DFU 1.1 + Add an unlock method for devices + Add ESRT enable method into UEFI provider. + Only read PCI OptionROM firmware when devices are manually + unlocked + Do not use deprecated API from libappstream-glib + Ignore the DFU runtime on the DW1820A + Export the attribute and quirk values in libdfu + Show ignored DFU devices in dfu-util, but not in fwupd + Allow defining update vfuncs with no runtime support + Revert "Allow defining update vfuncs with no runtime support" + Add a simple plugin infrastructure- Update to version 0.6.2: + Add 'Created' and 'Modified' properties on managed devices + Fix get-results for UEFI provider. + Support vendor-specific UEFI version encodings + Move quirks directly into a single table and file.- Update to version 0.6.1: + Only dump the profiling data when run with --verbose + Always persist ColorHug devices after replug + Do not misdetect different ColorHug devices- Update to version 0.6.0: + Add support for updating USB devices with DFU + libdfu: Add support for DfuSe firmware + libdfu: Generate gtk-doc documentation + libdfu: Don't rely on specific hardware to be present + libdfu: Move the VID:PID checks from the tool to DfuDevice + libdfu: Use a custom error domain + Use the same device identification string format as Microsoft + libdfu: Fix crash when setting a target size + libdfu: Allow setting the alternate settings in DfuSe firmware + libdfu: Add a merge command to dfu-tool + libdfu: Allow choosing a different alt-setting when downloading + libdfu: Fix a crash when setting a NULL image name + libdfu: Correctly implement auto-boot in dfu_device_download() + libdfu: Check for extra args to dfu-tool convert + libdfu: Call the progress callback when doing detach + Ignore the DFU device detach:attach when verifying + libdfu: Require a --force flag to flash wildcard firmware + Use new API available in fwup 0.5 + libdfu: Make the element address 32 bits in size + libdfu: Support the ST-specific bitCanAccelerate + libdfu: Only do a Detach notification if we're actually doing to do it + libdfu: Use the progress bar for all uploads and downloads + libdfu: Improve the output of 'dfu-util list' + libdfu: Support download and upload to ST DfuSe devices + libdfu: Fix multi-interface devices like the Neo Freerunner + libdfu: Add a pkgconfig file + libdfu: Use signals to propagate device state + libdfu: Add a context object to handle device hotplug + libdfu: Add an example showing GObject Introspection + libdfu: Do not ref DfuDevice in DfuTarget so the auto-close + logic works + Close DFU devices as soon as possible after the transfer has completed + Emit the changed signal after doing an update + Rescan the DFU device after replug to get the new version + libdfu: Add dfu_context_get_device_by_platform_id() + libdfu: Add dfu_device_get_runtime_release() + libdfu: Add dfu_device_get_display_name() + libdfu: Fix self tests after recent API change + Split out the DFU provider as a new file + libdfu: Copy the platform ID and invalidate the GUsbDevice when removed + libdfu: Accept multiple spaces after the DfuSe sector name + libdfu: Verify the GUsbDevice is set before using it + libdfu: Remove the weak pointer when destroying the DfuTarget + libdfu: Fix dfu_device_wait_for_replug() so it can work with a DfuContext + Export the AppStream ID when returning device results + Rescan the DFU device after firmware has been updated + libdfu: Handle cancellation with ctrl+c in dfu-tool + libdfu: Add a quirk to support DFU runtime-less devices + libdfu: Add an explicit 'attach' method + libdfu: Add dfu_firmware_get_image_by_name() + libdfu: Make reading and writing to targets easier to + understand + Fix compile with --disable-shared + libdfu: Display all the files shown with 'dfu-tool dump' + libdfu: Fix a few crashers found using afl + libdfu: Fix another bug discovered by the fuzzer + libdfu: Add commands to encrypt and decrypt firmware images + libdfu: Show better device errors + libdfu: Add DfuCipher which is a property on a target and a + firmware file + libdfu: Add support for the draft 'DFU Metadata Table + Specification' + libdfu: Only enumerate the DfuContext when required + libdfu: Fix several reported crashes in the inhex32 import code + Release fwupd 0.6.0- Update to version 0.5.4: + Fix compile error against fwupdate git due to dropped + functions. + Use strerror() when printing errors from libfwupdate + Use new API available in fwup 0.5 + Release fwupd 0.5.4- Update to version 0.5.3: + Avoid seeking when reading the file magic during refresh + Do not assume that the compressed XML data will be NUL + terminated + debugging + Use the correct user agent string for fwupdmgr + Release fwupd 0.5.3- Update to version 0.5.2: + Ensure D-Bus remote errors are registered at fwupdmgr startup + Show the dotted-decimal representation of the UEFI version + number + require appstream-glib 0.5.1 + not found + When the version is from the 'FW' extension do not cache the + device + Support cabinet archives files with more than one firmware + Add the update description to the GetDetails results + Add profiling data to debug slow startup times + Fix verify-update to produce components with the correct + provide values + Clear the in-memory firmware store only after parsing a valid + XML file + Release fwupd 0.5.2- Update to version 0.5.1: + Fix the error message when no devices can be updated + offline update: Use glib api for for reading symlinks + Release fwupd 0.5.1- Update to version 0.5.0: + Do not merge the existing firmware metadata with the submitted + files + Raise the dep on GLib to support and use g_autoptr() + Do not reboot if racing with the PackageKit offline update + mechanism + Release fwupd 0.5.0- Update to version 0.1.6: + Install fwupd and fwsignd into /usr/lib/$(triplet)/fwupd + instead. + Use the new secure metadata URI + Update the offline update service to invoke right command + Don't apply firmware if something else is processing the + offline update + Remove fwsignd, we have the LVFS now + Depend on appstream-glib >= 0.5.0 + Add application metadata when getting the updates list + Simplify the version properties on devices to avoid complexity + and bugs + Release fwupd 0.1.6- Update to version 0.1.5: + Allow fwupd to be autostarted by systemd + Sign the test binary with the correct key + Do not pre-convert the update description from AppStream XML + Devices with option ROM are always internal + Prefer the GUID from the firmware than the device + Allow no arguments to 'fwupdmgr verify-update' and use sane + defaults + Add the ability to remove a vendor on the LVFS site + Fix validation of written firmware + Move the verification and metadata matching phase to the daemon + Add a simple config file to store the correct LVFS download URI + Make parsing the option ROM runtime optional + Add a Raspberry Pi firmware provider + Use the AppStream 0.9 firmware specification by default + Generate the ColorHug test files at runtime + Release fwupd 0.1.5- Update to version 0.1.4: + man/Makefile.am: Add --sgml to docbook2man invocation + Make statements about storing private keys stronger. + Provide a way for clients to add new firmware metadata to the + system cache + Fix fwupd-offline-update.service + Revert "man/Makefile.am: Add --sgml to docbook2man invocation" + Add a Udev firmware provider + Extract the version string from the ROM in PCI devices + Add a 'verify' command that verifies the cryptographic hash of + device firmware + Make the ROM parsing more robust and add self tests + Get the version number out from Intel VBIOS too + Provide a way to dump the option ROM using the command line + build: gusb is required even without colorhug + remove unused variables + Do not return NULL as a gboolean + Fix Intel VBIOS detection on Dell hardware + Do not use the subsystem information when constructing the fake + GUID + Actually parse the PCI option ROM + Accept multiple files at one time when using fwupdmgr dump-rom + verify run + Add a 'verify-update' command to fwupdmgr + Fix trivial bug when parsing firmware versions + Keep hitting the hardware until it gives us enough ROM + Make the version parsing more resilient to corrupt firmware + Fix the example .inf file to reflect reality + Fix ROM PPID searching to work for all ROMs + Move the LVFS website to the fwupd project + Add the ability to create detached signatures + Allow cab files to be saved + Add a simple signing server that operates on .cab files + Automatically download metadata using fwupdmgr if required + Don't call efibootmgr after fwupdate. + Associate the contact email address directly with the vendor + key + Use the actual LVFS GPG key + Allow running fwsignd as the non-root user + metadata + Do not merge existing LVFS metadata + Do not use the file hash when storing the LVFS submitted + firmwares + Move GetUpdates to the daemon + Change the DBus method for installing firmware to 'Install' + Allow installing an offline UEFI update without --offline + Add a 'fwupdmgr update' command to update all devices to latest + versions + 'update' command + Increase the size limit of firmware to 50Mb + Only sign files when the entire file has been copied + Fallback to offline install when calling the update argument. + Reload appstream data after refreshing. + Release fwupd 0.1.4- Update to version 0.1.3: + Coldplug the devices before acquiring the well known name + Add an UNKNOWN status so we can return meaningful enum values + Run the offline actions using systemd when required + Get the firmware version from the device descriptors + Added syntax highlighting + More markup + Support OpenHardware devices using the fwupd vendor extensions + Move boolean properties on the device to a set of flags + Release fwupd 0.1.3- Update to version 0.1.2: + More markup + Fixed typos and markup for executable + Add slovak translation + Add helper code to validate public key signatures + Decompress any firmware signatures in the .cab file + Verify firmware if a detached signature is present + Show the firmware trust status when doing GetDetails() + Only allow signed firmware to be upgraded without a password + Add some guidelines for vendors to README + Small grammar fix + Extract the .cat file alongside the firmware + Release fwupd 0.1.2- Update to version fwupd_0_1_1: + Do not crash when there are no devices to return + Add a 'get-updates' command to fwupdmgr + Add and document the offline-update lifecycle + Create runtime directories if they do not exist + Create a libfwupd shared library + Export the status as an enumerated value rather than a string + Release fwupd 0.1.1- Initial package./sbin/ldconfig/sbin/ldconfigs390zp36 16519948281.7.3-150400.2.71.7.3-150400.2.7libfwupdplugin.so.5libfwupdplugin.so.5.0.0/usr/lib64/-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:SLE-15-SP4:GA/standard/a8b941259521a862f034e6567c7125c1-fwupdcpioxz5s390x-suse-linuxELF 64-bit MSB shared object, IBM S/390, version 1 (SYSV), dynamically linked, BuildID[sha1]=5c9769a436d8ec3af995b26b02536ece43c2f82b, strippedPPPPPPPPPPPPPPPP P P P P P P P P P PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP P P!P!P"P"P#P#P$P$P%P%P&P&P'P'P(P(P)P)P*P*P+P+P,P,P-P-P.P.P/P/P0P0P1P1P2P2P3P3P4P4P5P5P6P6P7P7P8P8PR1R3RRRRR.R,R/R-R+R*R#R!R"R R;R9RR?R6R=R5R8RRRR RRRRRRR RRRRR R RRRRR R4R$R'R%R0R)R(R&RRR2R 1Tˌutf-8a6a77aba804f44621885edb6a2d0c80806fae2037fb058f4f0fb032aa1d12e1f?7zXZ !t/] cr$x#F>] Os£cj(R[@L؊YփFs#xM-Fh68a.*@64:Ri>{d܊ oh/ڴaKOQJ67)yW5rP. ".:t'IgvP`%|: "3,]+UȖ\Ԋc.dnjsUy}mͱgY*<_JSxf"ʱx(,~P!M}m#"$51VR \ pT8_L<^t5QY lL3gPGC/J!Uo}vL&O&)=a6Mq>} 3_ELRIuۉeg=.e{`[[\NvUj_ i=ȶK,yhGj}cʳ_'m/FG>· [9Y:*iFž \Ppu:HY/bB$d7`ZIYnyNOF.>LV5ݢ UXYoFlw\O;ÚS*[>(P(ou԰$7ÕCGcjB' tN{0(FrV ߠdZOUFӨ}i.EptRơbZ)nG6dl` SBvFTJ1^h/)4 E s5MdxS0/GE#syc$5TԶV{+(grWLj9TG"6Fղ(BYHUK"*2 I^!& n!*~3~&{3č:"B# ? Ա1:܍SK-QDX7-(F]bx*)+:׋"Md[= qH0RY"d,sZx)(6WJTQQ qr\?FZ49B ؠݮﺰ8-XU1G; 49tڟG7[R;壄. m>ZDy"\U,I)Z|HbdD5K-l/qV8Clz8ƹf|LS*cs2p~QEHTnG9nyk=Y[CZtaǎt_dxv1IYm}y;GZt9g冚?东 RBw wp1dip?L !,U$UY{aqIh!q))ǿy u[OA# R`4BA@cD`;|}C-C8Ǫ$YȰa,@ ǕE ORa_e ;mU>djb8gT+ } P7vaVLd(.?̒`X,OT]ؕkuPmXyօqP=^\D6j 0Xe]]I ^r"i #(uG@$W[(kIm4]M&8JCA].~796T@$5L_2HS30cvdR(XlAsb|iȏyNuP;*\4PI-29b6`]ݴWȸDPVw GGǗk(0ZEZǧ>Ddsf'\c& Bi=<uBKp؇U"%A730xG1Zb >!g$}AݟRF6(|;I/eޝWd?> i̭+X $;_Wҹ WфIMeXFgIqF 5,mEzp_ܴ? Po*2' j^muIфaڍQUKo 9v/dTU2vLh5^+vѪ4XO}+IX7МmyH!)')K[7EgO#[!vx"K"i9ٰqC<5>^#BLe+z@spґ]2f>u~f[QS0I>0_L>fF1bzZte ,.v% @s=`bW쨐ßPm-WfkRl;!BV يص-x@1] IV ׇdF{T!ypZ+u.Sn#"l}XD|׹^ª[Dsk0:tGYm]UML(=߮MN71FZG.ݰDI7n80TNad |񔧲$u|oй uaYB[ w}/10ֿ ^P] C,AJ}"b sb)5&|qs'?w*?uU4MNcVG# AWKT1~A_8/aB%T]"'O3iHV}!obZN(#W^dsؗ>8tP>sT'hsMEjDjbpw9(Bw52쩙qW 혹-9Sd3ա1k/7ݶ߲_*x\%3b!KGo˝q-KXf;U5)UPՋB'&UnR94?$ AN8O;q_:Us 4Yk7tO\ z^y0`Ϊð9Pnw?J,֔9۪t wzCF5h}VO`ekC@U@)huxa}#r՟XShC/">o =7hi_' 2737 )eh=i# -vXYD|P$vñD '%H|x" IGBt yU-Z]xՆTG~.>%y@$$!D߆;Ќ&*5rvERa;hS;`|w0Qh (~-Fue-;2y$DD)?/Wx>$`_Q_YR:حeG\G2>_G*?*Q#VG3=Z%1D/Q ~7(#U1d7iR,o,"8՟\8sʇ!# G;NP!R ()bBew~X7y<[=$ Jx#X7jBxf5X$0x.I/r|֠XtxPbѯ ĸ3b4V$23 ȴ@I-ES㡒8 @.1K5Mca+|Ȝ;%,-@$d.}~96h~fξ2[0E{pl$u9zLPGgU&B:,2 3 Gâc,PTt}|D.U\3V5U(LAIt2# e`+u)ѓ~*2mm.}*kL?nܕ%}By~7\! `@ ϛ8Vhe<d %@UBa}2ĵű@뽴 Ҏ㢩ˆ?%IoBR053'ٙRWk|ɗ/!"ٚYRAS%DeqGL}/]WYV-ݴ;قo3d;f^Mr nbi@I,*>@<_ȬLqC #__J>-PT‚ިFzG Ж4tV mW :"QNt+g)ZQ(UY.M݀|54;| b 2k߷%?G_:n+&Qs?Uу\r:n;= ݘڛ?G'bsh kfa'FɣYȈdV"=Odק>\A~vx4Y6ryd,Smq]ϏXoa=9誳} m}+D|fd0;y0'G3CK;3>0t H[]^{5̖!I~T ooM=:oA1#891^-.dQRvT%1RrzY lP\ 6=aX&c6ڔĤy ݵR){-W2J"xoBϼ耵c"}6'Mߐ[x8|=#{ج9𰥪e>$nwNUgRU#PqQKP'5FE-˯ȗДcbkVu^Wf^ horR^-Ƴ)Y?egm[L-$>|ޖ@ :w#,0 Q D`<3u =A`Әu>Rv%Җ jVV܆9S"8Mzl:i9F+Od1:#1"·p}`Wg"K?nG:tRԾzo_EI^5/M%HqNA( ;H:Z B`WSZ-_ZviX{4L$qd=܆dV{k_h~/׶/+y6ޠzq"q0: t> [#,lWD#$27=CRSr)/4'BHQj c,iT @7vd&~%fz39E&c֪|(][o]m\)j Q }~qKu#>0ЯA*m%u a^RJ%(GtOEV7Hғ2er+"뜭OmP}cR)?-= ° |7DpْǴC\I ~cTM t0w#FߔyqzB4aZ"CK"d'1h(輈LN ջ]'rˀS43@R7ӥ\a"׮–צ$[Neru G‘@,xKWklHƨōQ #X2h1yp^ƫoހ7U ;I{imZY?u{UAdDVBKD+1Rtq%>]F>Zp6py@{brBå&hJj8}k1 _)6 Pnuە"Epzl,"v=Z*`m7);8k9~_1ϡ5&]SRPGkX'xiPu&vѸ;F݃@YQ/9pk7}YNLQ}MÇEGKjЏ1m(N9LxͩDw\.Xv^6k´ ur_DZrg&a\eS >\lQ Q: ar H-y5sԑՊ@>"|%)e8h&{$(71F@\P gYH8QBbX_u~4[e\PvNWM[ E9I2 .)PXA7Deg2;FPՂJ @zS5/Wm tepfKB.^%RACW6DwW랋ۇ<+Od}tw-&ImWEdB]TPZ!ANA31A)>9%lՈ!6($6a 'NL)#_<[Nhť^/zפn%NDG!_TdY F;3Ӡ=\Xfd{j'1>q ZPST&X0a3C~o6ba3mqEYii{z` ڠCA6;_'Q+ `߲ , n'[2Uu2(KR6sY]; _FU!O݌;(Y'LL=Fj_wna&]f!p `j TítI\ܤ@/>{TӦmqkց =!4Qxbe/#aM?%o>Yxm}j5Ȩn;K="vu'dRF~Hjyg kr5I\hLsKK" |ԉ B& %ݜ#Ř] 5^6J,%2Q^ǒm(ӴOd $ARr;E1=|} sϒu|m3fyc@!Nk=;NX4 /w7Qj+߬]d)<d+?(5"[OJXfg+lqr˗o6m}Ŏ}'\tTp*S\W VPxcf=avkSWPЗ,ΛDkWAť:謢U3=qRHBZ$<;5 iꇻ(Ec[}ak}A#8fɂitF|L@EF _31o=~Ja?u(2VM<} ce{xڠ.&卤ڎ4?@ Kj`Q/i0ӣwY(ƅp3LTs|H=$F&CpAQvp*QT|t9l |~T){BnL z\ ⍪"T~:fl[o~0 y:Dcbp ?X T$n)Ս:Ppy|'o@d\j9-`[ֹj|2s kxbIˎi6Dx 73fKéT8;AͿ=zfH77x׾zq^IcD>cF;Uف ;0G*m F|޳Ss^",tKᖆ&$Vd*ΆgWҟMԽRra0GiW{f@֚BU'w ޵&Aŝ0`}5UH3@*e*MxD)jF0 }^xnn`aFL3DGvS&]L(eFY*!MuVܒL]6@*|d5Hhk`pI T2x>ʄ:W{aރ54\svE>B2@/ _{pf_gc Ɇa|DvfAR6ANmh;_=`AP8{g=[QRWhshj$wMԅF%4i }`DUhŘ ?3R\ ow U՚K8C4_bms) wمNNyY1vƢM`s %Cֳ~J;2@Esr#RLeY%r]G3r}Qru0՜FVv#*8֑92Q1uj&|F<>mv !IY B7!dX5H8;P_SzQ/5|5 R酉M~ll~ڌ+D. {Џ FV2%o!|m=@ 5u, {:'4h/ i42E_:ΑaI~K>06Υ:sfhaN+Ȩ.@݇l:X As*l_ru=]j9`nc]`/Am;Y 88R<-(5dXxdLЦB1=VԕrMWĐ7mgo9p9HIB\[V_baU/+c']w=!aQ]G~K:<\ZCU?̈^60L 9j>)/Oӵ0I o~nXe `~1]gݳ&_QCʹvDGp hWU©f['P;t/dJcq'k,a|sDL,nyr_ck+wmtHN:$ΏɣjpHzTg\žb`_+w6Jݴp1]QNkō:/Хrib|\,PzGybD$8XgI}kD3Q0! } PY7pvw7ȁvua\B;Na Lj'}1LK+߫X@)RؼAEmSN\vy֣'bflZUBت񊵮GXOvͬ;CѾ_+ϳilm7w{ӇʮjZ_Ш(Z9. YBS̵RCXfþVz^/`CUo"ydD_oF;%?*.폘ݸ Do#(1p儇 ԰$"y i.qùYXQZv^ק\K`þS~g,*R><v_#`'>d4jӗ́yÈՓq4:Hqp՛㸐{wcpS,39KN<! %(\og&h? !r|Sè=)*'Ht5{Ƅݒ??[9lKCUcW(|@N>[M֫,pz5 ;F3GO @ӝWEj$ YW(&n:rԊn a _췀nZ'dH szXTwPi#]@x(tmˤ!1y06 &N",7!)m[Ι${q Yc V5_ܕO%HdGˏ7EwM.'jQȔ__lT<~UQs9<$0̲6~f7*y24{,Ï | =ҥ z9Ej|jc cT gA oչ }E" -z^ErTI7M!ѮkijfׂdI%butn[\#pO RSnVUouxG@Bփj' *` 5#`$SX_D=iŒsl_}XЫ+`٩П7yr4:W Pt[!cԉ N// wf**a{b5*/+\0F*+tXIT)GNu `XeZ9$[1u-D-zOīG?9mH'P qb1mL>ƂB5v{1( ^!,wƕ;ǃo54#C`[Bǥ ۡ,\W,eN_&j\ωd7ZRhhu. I> ^t15ax]IK0O#ނJkY Po!jU[԰;;yaѵ|qn:?Q%n~vF +Z suU!]vSSm  r1E E~ $ yX9p[vX`ԕ= 2b1E N$Z5dՎJNu=#$@L55/Y^?\O!#[u|B( 0zuk*$ETٽV|L9GMHr|awu5%GIOVEEC3BYVFolȿzhsVq _ԡ=x&ȑUd$ QlF:_3ш{jl&x"Yt3+)H$ WRX'DN\'^y-FHXS1i?'&ʮXD;(X?l^jdKr/E<Җd/% B{T ]JwOC)ltmؕw `fz>y%]ysppu_u1x"J pB|禧xM]ܶQgi./hTk/R7q브&s&&<;4PG*P \'1wGul6s2\}KV+X%V{)W4$B,lwShx,[- f O6uUn16ƮE<3M r닉(|0L6"i[ 61SK[X7u(zN:@~!Jaj\-gÙq 3uJܵOlJ ?raSk!:.TgĞp$A&p"닁ӄ-+uEb G`QISL n )BKs)Qbu jdKBٹ[o~28֪Mp'bUt!vj Rg>Rh_!k*h6"mHnE,"T[Ҧ{WgZJ"{J(2j]ȩH@ s6Jc8 lk"{& 4O 4 2'U>$H@N p̨uOMvA\@D pO0+ŀЮ)7nsK[\_ juۼJAX>K[0[$dw13m\_G;3$ܒhoTٍ{U䈘.r-}&;EkģAgh,Nmxw\qHx-,N5YυG E:K Xp.3s:zGW҄n:D6T{*qO|J?0l:&cg1U,{,u Kr@i /ݙ,+0H%l' *9$ t4_1Ç1lFo$F*0Zx9'l%+~L~^B)_6F}L=oTNp\+$ށ.Is]eԷ/-Kr`FX|фXWV`գ ôa;euȸ뉿n!X|h.,Hy`!q߄O7|Yا>'H/imCdVV kQv8c3TIt]=|8~a{YV5I:>]ʴxcAFkor*z0,cR1Л_ERyU7 Qk9u0E]*8/8E ~1eg̟| MteSAx-H{%w^8'( Gij^Rg&E Amij_Jo~(3$_+_ [0; -=øO'[H?bPV&1pu3cK:%HnQ|EYdh'Y=uOI~4 [YאF'VSOX(Ͳlb8LVoW # {mXX jw5/Q&$6UX9(b!@OəXAywZӔ4T^fJ2(8[қ4?=M'"y g?&+MD. ቃCe;xIRd!4dŌ| h=G墅.%>%-w M  <"c6` w?#ab,"̀"fMb9JeàWokPۏݬMzJ*fPYuwBJ4_]n1sY83&u.r21>" v}(S^sMlSV}LP;6Lk׆`q"!ouaVu]s495d"P/9R}M3Ru&`ne/Tj=h|WIZ4~O4D'2%h ̶* !nY>71'"Tt BG{q (L \pG8' yv,BGӡϿXRϋɈ.NΕYTYJh(q&18 QdY`v-v셓 c Gs W _xU)#/Jz&C ˥*ac0)) fr[ͱHΊTIX fnZ% {4 <_pjҖopP8-1?ES0`9.~NӏqEj~ YO˶_?6X zJ3%Q5A)cQpRev-tZ ? ҥ*0:H}Gt6iB|/2NcͿ?ifM8-n%װ5`V ukaʠ C$8b& hYVDMP_¬>s`t 4{6 MSr1 zߤe`my.[(>Gz .H-IЈ[j@NN9~^p)+? 'dd`X;}k>j[ȍBsb6щÉL@ -b-bg+XA:TD$}huaq-G"ab SG{0+㎸_1taM;˺W<%irc8ZڪJco4,ŷB v>yĖӠK132]#̿ݪ뢨hl+RQBz`a~d# F|vRxoD&HW=-+@7)V(-UKɟeºLYib1̩8NWNLÌ4DNsHpf ,doHg'xX9`R[E zE~w"7"*PṂM@P&KsJ D}n2#`p x.π#&33Yr6Յ[RBNGΆ5>4kW`p L52zхqD0,),0-trP6dC{ji6Vxw-77xU)z^gEMil[O.+MXa56C?gDOKos):Q\ӥR͝mϯWNtfˉMV+"7GK)x$-&yBG{2eCTOHwJ$gb.2tfL1$oVD=CmI~4bYi-su?&X* Vhk[aGMH<.J3P2Vk꺰iønG-V?p LTxF(Ք"p@a^G5&4>Xw6I,*0]q Kmq繜փ݆7yIovig{أohë銌nlżp^Tv2V zX/j&&OH,HuW]xH&XTɞeP8U9jYx#G@kV7C1i1f9Q[ΫbC&5Ǣ1]i)FUhЍ|u(p]MKm n@v?M Ջe|_41"Z+Ska_L$Zb2`$<:l[?MDdLaV o ,m5љu 4mT,'Ead{Fv6lS<A~,9/^̑"l{>Q2eC,6XXocY ~1:*/9>IG _Їz%GR471I ֮2܎־@Oئ8[,  &M)P*46]h'rSE*eMю! cū!#%D6,4 #/[:wO'+i~Tyy_41:`=%To,qqځ+7X=d1;[T?ďq_Rzdį0H '=j탲](ԭFIʉ }y\CAqiB!0{ DqS79y"XEOBzqXv {Y>FA?r^C %%L 5 g%gߔTG/Uqa*CF!2^izزՠH. rw΄aeQ( J)rࣃ@ǻ'H? 4,oBvQj" so&"ĵ L< rEeIO)x1yM( " ("`Б6)ny3xk&zPg%j}.!`fZ) )Z$i-ε's^IAy 6 G88R[4bxx#wSt]q''n Zm|o?dL8ж8CWg,Q~E4w^bENzs[NhDxx,knJK,t;J6?i"s“FƯT]uXęE3VQ$³t]_/$kis+0o=h尓E$j7dDbt;8ǙEֲ. 3x2jvDz˹ lxS+Dw{:X"Ux ;EWN*fEL.|3m0Y.ӬoQSPlD54N}=]'Ź4rFz.Mj,Foc R'Cw{r@̌Dqa}(>ρ#?BZ;ȬM`tG^+:I(^pLP֯Љӄ JH Rmq*lu}KVdyY^,T`F-==tϾ rVdɷP'ϔn{6M5/!(0߅F(~She zIO_'8̊jnpݢ~b :+%6L ajQ,o煏̈$ CɵY\ $Ƚ*_ʍZDadRԿPz ua`fR;s3T.D}ڰ|~@5{h -%A@Az`CێzθϷ_:'.k!KsΛaDE!Dcbu' UJ|:r\Bn+Z$و$Hk,^?Vg*݄Sjq.P(2k\8w ; >0703wm)z;]4~2)|2w3)K;t!~]wpI 1Br2$3cP$%5 uJF+qÂ~QX2HP wXKM^.3sAN}Vu;V9 Ќ[BE*m57mq6/; |#2sRdKN)SL 9TGIRskM*bG@3(ϮRQ%zAdD4^5`9=m'Gs|{$=^Yjހ0>Q44/›AwF`Z[)0(]vDrtA[ UpG һ &a~`E `,-ᱷCKa}E? ąИiqhq(]y^g/"@^Hᆵp űyH<] r>|?K ]S`8Gнs9jRDq#( ZP_KEָby ntM W?aKO4>+R,?M=^'Ʀ?G W'V\C* ,L%z<dq]­ sN}$l60q ÓI۬,i2KbpYP~ґ'*ټB@8 ׶hlliB\31׆ݵ簃3 ?Eۡ fx8 3gzi!TvE'SK = m yаǫr/DhdoKg/iXX?9&fl5l&Z%xF\^8G!^+l݀8:Dnsݜ9* I32oNǂȆ_'!;{%dgb0rGfdG0UձApQVpNVLڪw|i8YQQ_P XZV~?31"j + 涯 wL͎ ]xnvn SvUa_׸ԂFZyDmzY5ZrS$f&LV]烜c_UiQ-dV^ lb?'q:dIńmdownAY߽nRT}eH{ڈsULho= Kr4dz;xK+sɘY?*GZ~ʘV}gf \gc>?nq$E})gPw TݕW>͵lu $1Y etm%I`i^WzO̰=y4s#|&̓ebn Ru!PZ-~VK)*EgiXŖ2cSv7Hf*̺",@H`R9j7ǀ!;ױF2n$ F,,ni {xsx>EJT7|RjUj:rmpK陝*zU&?p|U|}I|Dzϩ.@yZK\X^Watug&ӈGĎ`."+ֲWG]R{]9([v0}q JW  ƨxdWxj0G W|ߖuI㵓}p EDlrň .g  (t4 q=~3#NNc_;"N+M#Ce޵.>< -tc*<~Feӣߡz-JǩÀ3lST_/pU,Js)ypGǛ[5zHT~s $w_?zv)+2 ~uva,鶚Y1c'b:G FJHIYL52XA $Lz&4:teJ);ԣ)8^o]]_jȬ0]|9p9[WTqpi v6/S;E2̎Y55H#L!eEO~RH!9bVFBy~z0qTx姟Q~GVXC{ \^̓O,gEC@=3h2F7ÜtݗL5o~ekY+uyL]2{H49}]!`WdV^r+Tv󠂷hKKU8ff_<QMslZߝ؍2+Ekq)ޟv= db ;Zcf<[o.PLD/R'8W|eU8Ex mlZWv̀N_߭4Sh!?2\%JB8ւ-5fMߗ86`f{XZFO_>Zr1ו #JHqPIS4'pi3hߧVR'R(1VRϚ 6w_Ws2'i܏ǯ/_8ơ,=Xz6{oQ!ɀzw(Mm:[Y|k{dZ-mya,2+5rka>$2&K H9lt,޺r㔨r>9 ^% )z!=wquX8"#MxZ#nF2>)"{Y1芦O>Jkryϛ\?HK]A! Z(0-ߚz'6>ۙ`3O:\iQXBO@ʘKtDkf&wI%(xO=1 K'ƚ&J%t7WV|VI/ot21=$%h`B|2k^ TxOQSQ|׊HYCvqܑ)a8Z\E>h# ?J4Al!msv11r#9oZ+-T?!w׉VFt~k<3 ^T|@qᩏ۲e({#\FplFkXex`xmYF]Ua:؈$f4 Y j뷱+`34ԐPG]أl'}T#lMVԸ"IDwSD|ܘnYu!+22 BfL(8˜Frk%ganUBlx3~xOF-&9EpgrSHYAy 7IV} j1ҟ\y[Śe ث dCobqULdfaλәM[`s m{n[RQ{4XF1gpP7CӧA@>+׆#rõ*U]AWVEK_#]j1"*"mi,4C^S6ujQN4܀J\b94زnti(dK"*q(wS1o'#/ $eq$6v~1 2]|FNJ8=,5ȠԜ#A{[2`K }@{e(]T-WQ;m2 Wy=ޛ.#ƈM\4jh2=o˰6vZ^9^,, тڵ&;ĩʎi 7T[s.0-Z̼RYpߺ `EJ;66Rd0lttN3QMEP+G2D RPգןb.Z*eu{ uO#5:čhjReZD;`1B^6 ҴAEk5"w2=V)Na ->8/󦷭@4J FͰnߎٿӡ%dJȱ ZY3;>iTjMx~x:kO}do)7h5=+Q6>C)TdׄqR1X%Rց %$Y73gЎ45[ 3}Ğ y(~0EZ@#_\GDaNR4j\Je<)h#HӾpQN'fzAMڎ߽CGORɌ3OuY !v>0?kf2Qm)Yf+L(VSD+v>!ÈЉg갓5mc~VoA}.r?{JyXJ~ƝC"~k_Ȏ:U нC M/NzlύI 4P\*#a<7$/;}l9CGӗ<Vf9q&u9ur؆;~L} 4K9$qaiCW4* ÿY]:s~/IؗeHAH3O1jE@d1]sx…3CFKz[n ݞquE;Z3#D膎`J|QQPY_A ZtidhI$3ULm}R`qd mɰVMQk@}hSFSk2XpU&PCa\mskyRC{FtP@ OUK60LAnYQDjݼm㑴M;);CXhxҜ/ e2?j w H(x XVxԕ+v}٘ NKY+zs%d= 4 <셛?5s  φʙ)~tx/sd"w`dBkLhfUN$}CGOT1ǫVrnȵ~CO }XmbÀWr x&Dcz[3ڇWN3 #$>{|{)뵾-^̢ON<&Zܬߚŧ "i5;%|@i5%l\˩j滂B I4練GK7fE -s‡o]: ~ٴpdn@6-^S|<K4jF8YDaY]E'&*pMXNNltpy.*-/TlKYkӜ6)D>Ii~^ sC9st!sHb?!d{1,0gF!tMs]T_7揖KbZa=龹byZAzlٓ> L#|*~]', )!i7^87R^|D $fFNd 4}b0- tb|n" vhbVߝ X,&ث@77ztܘg94>91M4'DWBA%TF%(/\V$4O'AaNTo+|]գ#'9og{ h56O$2}8`/ =^4Ogs; $< &̵ڔsL^Ͷv=SC{"ݥBMNs[ Cd;h+@tÿD]0} p||Te8XTO;2䣶 3s3vrG'h3<Ll.K%\-U:+ ֈQn)UݣW5K5*TGΉI"7jEqvǪL2uTtƏ|׭ҁ$mU/#-+CAV3OOɣ"qR,tTZ~-ďD4|zA\ ?٧K 1"s࠿E֒s!?@78sSzIMn(@oNCC6ЫzLXK$4wү;O&)BjLMۃqgY7 tkP,D7Y/SRSe*` pԤQ|̌~ݜ?c[!\$ū|>X c K90N|=,G1|MyKպZ8= Kz'FlWv*p"TLjǧ3.f͍G՛#r6>y~%-Vz|9} EaڤF i8NX<E02"Gu@Q ѰwWduJ#/ˮJK3#aSSx paBMSgqxخu4CUܧ!I'h 0b1.)۵9Acd.ê"mJH(QĈ8.IQ4L.`@ǧG6>JL!}6k?G>"cS0gb!y: ^f2>5#3#X|ʵE H-P j󝩧6\gZ{:ZH^BL^TB3r];`f&X1`&f D4+W-G->P 3&.:UhV%2epw+A^/h(o=$_w~JPA Wa=GN "izD9ADJOҸlJ Z*L/kH$ؾ`Pmv{kx2%3ّQ5C3h3i2O|9%Ln zX$Z^0 Mq= E C; tTh<}9pXt ow2x`amF֧$?˲~u#{"r#3x}}qZ4 'eJMh@mx-\WI=:~(]MeuHWߪӠb|j`?Y1/yٛjb1)dkK( F1ܐVubT)l?b_ 43dE2L0NҼ*y]Fаh P`7;ǔN),Aj[5D ).~Pbyv$ >+'B+a 7:i}$ʛǧzɉw  4 Qw)?cMF3r"Bn`1,l ޾ub-ygЈD|%+3VW9qx)xzH9"k{&ca8XsX PpK/=팞F pqe# 0hpUoo*6HvN6R`BmuH22hFk?H|hfMFZxxW=9qvZS&`ymJCg5$U>"NO:vRƖ,-v>`6Iaog3O6$/@]* YzHxmzϪ s9wTW"ձ#xj[*\YxrrLs{Z!i.WeaCd8ͯ.c+Qnu} ۥ<\3I/ @ڴ)o"Wutud{-N7VA2ЇmJPl@k[ip̟qVj |7eZ|ݱ|-{F1ųu0qe/рT06A1]ʹ<`GM'gkۆ@]nT2 8B@)WFݟYzv ._ `2Soz G^k՛59aTSmKvzRȅ(6kߤ߉ 0x⵻c +G`-#jb>&[ob7W[A }2h9a$SjЃ Lvk؉j14bSbT/=%5qW\u9P; ?ҬebF|gsTw"-eLCQ Ԃ޴Y6C2K:,>9bڗS*ɄDaeg6-gC^Wʡli.'PEVTqF8҃R/}߹lN:ݭ{EN|oΡ(݄k|Ll/#IKUqH(J1mD˸ IR546,$ 7. "$`qJnY:S&cc y3MV$.7'=㥮uDXN+n̕]iHrc/m*sk\a)TQBI>H #M 83FZɗXIz?׌hsm-J$ҙFY@"E F("$LoT UU@\nڤբt50SORP%}ۃҠ'Y¥:/tp0hڋ@r9``KǼ-ͳT ЙꅷAG!MfΦ*ŽJk;*I g^2lb@%}lMp"[l9ړ-.#H#c:R[M*e|q[eJ"Fd8ۛWwwvoȿ\H\@7z~ s21cwzZHf%dyT@>joNf,ċ+o8[n k̵+c {a%bf=Y{Hpv3R̲5A^a]-#Кˍ"ʰ;fHlC>i(ԍ✻7A'f0+t %j.G͹17JS/I+X-S@\ oP$h^؎5S%&k:nQ8I.[G1=HZd^0!{L֛~( UұЦRf?i}yh Sg|fu+)?42e{"ݍ~{Q beL8RikX {t6}h q3CKŽjWz~];l7p-_+wbdRc E_`rS~ lWJnytnb&sr`HRf@oe=tefxl93"0R2EIInab]zl|#`3<.safqEO)qnR{&$.&EW"ξxsRʬRR8L奄j=6BœR@b" ݖK4PZoz*~͔Nh2,.r/ןkZFlα;a&I}b ܋oHRbP w4 gb q"ݭxmP6/{0? 5{ז4yk ٔb[LT9g$ P#Y Ʌ/.[y zu 3Єp||~Xwoie:I =x`YaemWg:;T~-= ]5jX=4ι/] tR""&>A=6[<3zL qȯZ|CsuNuoK{z: tI&ɟiTﭴ@ =ߊ$]!ۖ הi|:x g]"ȦϹ4*dx%_FHrT#o qppiQsc.oLcW=I =kK]/(x8jH =V"=5 @!ϭG xBjyt5؟*mLCqB ڼ]9NTsDu =EAuslɢPs4@a( fwZi弌^I?X0~( i<ÁTCc+ 8R_~^i;u;xEDl~L iո! dM<,[h]+,#O]{T)•pOm9_rT30 % E^".F`=_K,OBZu{4Vw -COYI_H2xS4/Fe&(WG:1'Q"YB,ͮL/3}T;9@jMU-^9`x0)E=m*@dPZy紩`GR>Ǝx 0?\c0N޻:9;yL' ЉV| \ z(| Zx_:ƑtV#~ª!&\} Ԡ&'pjcꆅ" bH36!/۬-c clǾB 02(<3p_pkDatMiFFV_?NKP;yc05W.X$ `44 8ZnM a{5 痾iWCT"K((8q^ia.')=Q\Bb9ăG9MACc쁱}GH59^L;lw:5VgK8~%Qj]_j I-FCc`9Za/v(:l=igAHHl~%̀=݉diR3 Tk} ;|*Nf.S(M*$tju?cq8PЬx^P}_ 6S\x{p}Юt o$?>I@tݲ00X{{N;wG=SVJuQz~90ym^D~,1[qR(i+?:%iNm&Č-@ذ@{2 "a)XZwW¸$:=P"5,c1pnvr>wt.%'J :tRU g%h0V`\Ce 5e9OV3㪡(pR}|Y |^$]`@ž, ɋoy[p$N̘{& 7=j561U*s4#ZE3F$Ahғvaf3P]w%'LHq..6@w&sֱe}4eK;o1 j=]fu(&Cl&YMN޿T1JsG?].1Fƨ h>}g07*1UT e֬~x3rǩPFhkgv$ >E_QSDD[&f]WFQہ^oLcY}';]:*+qNbX}=Ba~?ͨQi=ڗyM#FV7VY @@P hZ# ?}[m(9(Ǹj^MysT3#]Ԫx8swGJjMQrHGf)$m%xxFÓGAZMg d7l* +whvDcq@ja"RUatԭ+$85*q?s,<`Ԅ+ #n#ENm)~vY±!1ڃ /۷IFhvn1IqKH+$j$|`mkƓzb5+-4{j`\#gkm׻R(G:"pC_f%lصvwQo_@޾,`P'P\F6`GڝLMj+dl5+CIV=ѵzpDzym+VP뻔W[%}9S*W/v)`յ4Ej>cYjx)[s9OT*p#2pfkSVRbH~5mF4iDXO'mXT/N?~&<\̴ yyE@EPy3:ZK[XypvڧRD JBA꿤PJ- Zl?Ұi,t=췹Lŗ%iȎL9Ƕ:,kS5ɔȢ:>]g.l!&_0X@MH⢜? Vs5i?8 )xY-[/`UO,H}0]vȏi'"?wQ ^]:!h E?8:ƺ+,׏‚&>MBv`0SCL;VUCɁV {Lҫc,,I7kʌ#xSJ3bFϨHŊ!7cU JZP^;/󀝻z{Xޘ%|ljbfo ٤*-OPv X3lti|a묽Uh4m3lH^]qƛ f/M,]Fkyנӫ2wI^GڗQ݂d4/~a'Q)80G  WZ$m J UnRr<[2 ]I/9bC0}$;Dq&Ey!j؛HdQUa"3ukYgBgPn lKɥ]N) 26ε2Ypv4QZZ{\ʭE-AP3|ޢg5 I~ NڈE ׀4hnjFY@cTɑ\.'TMЪ=X X,8ލ#$u.&IW<{1UŰ9-Zej̶k3.dW4LrKn~6*0'#ײb8jQJ=.Tf b\[ano-u9ygNl+Xq\LfbVo5F+t)kj;$<򀦢=,'l{QpČw.=W$lU?a3kql6|›ʄ:zXo4L=Z->?)`%9E+W,=FS[dY^|Z j̥RH֯s -4qņ:CJ`.U#V2dܸ#U{>n˿""){n2>Og"g#0Jjsר`Y%@[ua㲟*L(oCRh< P!Þ6̱zDgک׶ȋ۲AVX}{SMн _pI\Hk<X?:Vu x9HQRw8?"TpPo l\ג4n1آSN9uCe;{nEjI5Cz r%fbEVV")S0eTxoفJ̼X9>E3 x9W)[9{@`¥JB  UDlrDt1 }ˬGቩŨRU4{GuYN$4Nt=Lx|XfꧥrrSmug*nE (#ef$19D9C:?VcX]@B ?57 Id@_pYE}y K+l2^ٝ ^=%=/Eޙf_ `}jaNV^Kx\,wb*}˖ԵD/h;LE\t )/cTb#Wqى;l_5$5#5̱pE]A8d ;k‘Ҹ,6RK^Wm%;izZ w[&5b X]/uSj+Kܷp]A%0Rᡆ3F6HqW\Y ST <քHY=D5Zrօ\〪:Whg͊ R}nk#bJ͗s ]$R ( |hTELg3X8:'ݵHDA,np%XG@/ shDyG+^F^0SsUYQ !M0e6a y@^ 5'=kіUN!<{>I4`}-.(fY|b=Q^Ñ;> 﫢s:MIvl`s3;Vt\ 91w!]+"Ҭ(a3f* GJ$CQfe,Ggq%>ԛ̝1e6z]f,mS@6jҕN|XĤ1Wi4KC6Co.ؚ:T|,0LKM\9Te3i\n)kUZo}s<_ 0'-.o E [*uUˁwZ9YvD䅩/3vu m4j E:gܿJj{Y&R#L62{ Vg `^Pݭdвl>.is z"D Uhf.T fZꢼm&^rV^$a,zxgp0Pnt]h37w}Jf]Ľ*,nIBIMu'e^'W6 'YoֹƧ?YW{xMj8v~ ,k&G~Ye.72j'|f Hoh3Nϝx{8g# 6˔;C᳘SE"UZHUb>TA8 *;&%j/@ 8k%`7 Km'o[,[F@IJ$oMcC#h SEvY]X 6*&Y(x1_參[1&ü^cȾ;_=^9;[qgKNAn)2'OchGPt[rqϑ%WX:p:,@WGz!O7M&ʤ( ^%g#,"bFT;#B齥σK"!L7ndC_?=(v oj^Ki#^oe#Gː? }WJ;DD<*:Y.^?)~S;2s}&ށ ~2m![il|&< ƋuA37uw\\umf}魯{ﷴ4`D7|*6/mʵ wQ"**yms =%C2tBA$s@f j(P33|!8e{&5esf@6;rq-xs\ϫ*;V=\_>OqeƅDa!+x逧 iχ :<HWpj1\|-A{,Jg,Şb"A|h;$A!bʚ{<5q: H#K Hi`CcU .mᑰ1!M^mԓ/k@nR1EHcz0[p`r;L"iC"ٍ<)GAkp{\ jWRǍ2O*={(0nD=7֐B9 lC2j/8!&άAucFw_66ըgb Ĺ9IMť$Ѩoy`#\!jRY:(ĒY4m3>2ͰRO: ){xmbZxX).TomOψ{]ӴN]/qzB IsTcB-5{:msۯ8YV6 Z-e @  q î`K'=`h?@}^e#*bWP@SʽDws e;j {vl/ ?D룀OLVQ%rt'D놸C'G~#";]{[%n "Z5Gtk` 5r@V7[aC^忆8D´ "Y3X/)wil,]qZQtm\Ry *8nu}/s8D݄pQ||u tdNy,KV |VQ} ¨usdC z}&1S&h̑wqkBzQ4ObKk{;he= ̄ATCM4JNglۈj7-2x:鼆$1tؔ&6̓J)"/(mM.ͺ>& qcGGOb~S] 0<_#یO$֙Z)a(鵖QC)Fx1FUjZuxD2떋T ѺRA'c2٪qw5h'32&=[9QQo&N&&ϧ=P:'v"EM3nK~O87z!2) k_='ңEWuOR5Ptk+4 SǚcUCð:CRX:g,}<#4@\%@|Rok&BUނiI/SagJ?VVWi߬T$:T>ȩmmC^bMe/; ਎'v!T?NYDpCCjᰄ ԗn>ۇ>|/]mpO2шD 5,^PERsQһR9ZssR`Xh%hJD2;IĵY3yͯ|(@E >ۘnX 83\F\,&W?:`NQ+@mLv9oFl8SPT݆ӅXulw̻qIXh\^/V^͞rQ3]ԵgSܝF:J寔NI>7'&kC tЕB6F絳X"zs|A\r}\2D(grV?2 鵱VҢcGWwWt7ljkECXe#߱2Ĕ 1ӎGqM$Vql {Agi[PUNC,{*Hc$$ax2/vZӏ"&$-Ⴍ Cz 9!WQytttob]/4pcGO~ ;1:KaTaG-[ ǙN&;HƬ-f`,<ܶY;{>jNYj;_&v6ct:cj5 ACBļ1S_h5/@==B0tzXӽvn !t\ {#|J-W9/HNZ@H1 ?v#spiHVC{=Stϱ"k 9GH&2Y=Ei8..u\s9͵4pߒu2jMMGMCk} -{߆yoeŶU+NZхW&3@ٲBw>l*F" 4K[G+\ [>E+b5F\ݗ`fgQul-;|ٞڽ p_D`LNA| 6f >`? M6$GT,0/"RSPU\^jowΗjuۣ^ʢp;TeF5gg9+Sd>-}V\+Q>( v颲?}w+|\YRZ o vނCv1&c3py6J< Ws4&:2 W@+<۪cF;>zsEeR8&|)Xq9O/<6ն5秎xl %`zg"GT`dI^lSJ(v۩gt,P!!3XSqU7\[t/l]=Id.=1#5EDZ-2s2SP7~u^bڑ?4L`8ڌ]/ ="{m>gȻoZŵW خ|c;lI .UI0ڜjafm|5RLU?Zv=s~=UΦ+%\o|I ` ݷ7 JjɈAfi{>1 V$5hR4v(]~R6+}uU#?d%E|i]| kF9+4"ODY7>~ s(1K5ԉJvItҁH3l+kR;Ҙ'jL]$̚ޠHm p#ݺBdeaSjnz J^cIѣd/B9 8EwVj+U3H n $47, rÈN7s :ج+ls6C}O;Q3P"y!fkMѤ0~* ؚa,[y=(3[B.W;!#L^ZM\ 2n>}|0fdRj =iD\W~p zA0tG0J '1;?*/ ] !Mt<ʿǤ_XX'S;.2C!NrJQDHnV-/ҡtFL9X!hMÜ`mB˯cr Kދ5-wA&/9?r* ptk w0B]J+pp =6I L4 B}:vPM&=#)ė{w`YLJm1)#Ei3I .Mt'KQ+c%)r!Ed2_^ rHw\ p ЛCytzmp*ߧ@ eIX fm}a۞H 2yN+/TeepF;>A*<5 549 LM99B _Ad^dv; SU;] Ud} r&=eK=XPt}_3}%{gOH]Y0*t=MAVxۡve4uiS;:.ktj^`r] 5鿵Kn.hX?KdQq|g 8L<5/pi6gFx3/:Yz2NIS2G.t&Ys@ɰU!2 2{=Ơ8ZJW3 b@HHEL5FϜ/Rs|B"rɇ5s gNi`74rd|֩U=dޟZp5˥沍׉|WלYhLd%m)˼x8z?ٴn2px'=8NXau^8ooc?t;u&4N9}ȗ%5&[PK jC&Yb8#_#Lidh ,R8R1qf7iC{xk$J&3~d'J1(0-Ah;A$se)E;:|f#f46!JB#Њ)K$L3_̾nRҽ;q n ÿ=#>ܛ ޵ЫuOa~>?D*'*a^W.?3q-hfBo*U g^. kZ nCDE vkƨq2 ;6`Ugza4?J6Z0-tͦ!7xDr9D/ɡ%5Cu),JM @Y!7 KZz+wr d`1XKLQ&ፈPЀ&3rUup=AZX  .3h(Xg 6&lĎ/L4X ا}D%*r$EPLILʼ { 9ב4`" 08ODgA/IIMIrG7{$ a冽loMj^Fh]l%.9wB_el( n X gA&?*dBvN#L%dgkiz k ֠Aƶ`L'ijRrԇ(I짻~/1+="w[A]sޓ=-]EKJ=8m4WsxI/LUqZH-o\b2(^ALUj(J'f,Z1"4@zymN쑙Yu`8dDZq;0O,ĢT^2WD],:y"EE"w^pTG l(7i;Ry\S:M }D?;qE< v/8Ә6( h'%O(O/Z3V8`Κ*%QZ"q;޿^JU܉hAP8䷗eqG1ADZm)$+;^P#V~ E.sG0.i,(֤>X{`T>=|'n^g&yJ("(Wd` 8zE\Q_3I`:!KAyޙD+al/ZX +@LCzuY.U(SM@wDkkUavr;k{8I(nyb{1DznjohJ&m\V<Fi4j7jۭ5iZGM>Tv65#:ç `pc{PӓZpٕO%^,57z1&?L=7v?L`xglj\.v%F[T<+I`0b]v$34Wq9MѮKȜ -̇Ek9ց&΢T +UsW7>wM"X3"er%;+b0Hp^:7>ʧ.vsQ7 \uqNavaۍ̲6+d*ձJpdAUDf|>P2o6v7)'oA/}gsH*W ufct;aH?(}ߢCj-kS P XxE,>rxxgx.X$4[_MMbCrNa;$BE#5ΦW߸#Ȉ_  ~Nq4 >=k F`(YF`]y]vj=>cUJ[{2s|pe<~ T~|!i+(O ',EO{;6 '$RmK)i#Yco4^I@uer9b$fiXC5* T Rȉ+Wȑo+r+ظ\W/= Cg-HIcƤkOxG*&l|*t=w;( Do~ĺ/Q=Sϧ8u%?P&v; d[cnsN'v6vGhkR3k*B5!^dx!d9gm@fHk>x2qnd(h(-JmXDHǂ!@,Jy,τ:KXn1'=> mQeӣ&QMbUPΝ16:JbbK a a(0:?'uR-0+ٜg6tObRi$0= T۹fZN)7릻nZ։z?̺GbJV*F-n:ێQ``j-Z =Wɼ%oҀx0d:FgNL T%4huvr"!egg ynl5Ӻe`xȎ\2b9(/⮞[K) O0UIsq3D7alY4A>{bJI;@ޏ΢dt#~(ԋ*e{D(`1 mT ּ&1\R'OWRGO#l5w~ _Ib|ߎ^c|$j&PRU%f*|8 mVL='X̙Mr1n3r@B&(+oi <4P&F4+8i7d{!_`WiwVk|9Fy0 gޖ!Y?Ih  QSN$d;Χˑ;D3Yߩ1$ܬaW-|PFIv;\c 2j_ ^sr$Lɽw_"8mm] cI% --\O VP>z`ʶ$C>읰m۴gVǩ:un;<FϬ mw{=ܦYWnvSqTﲗݟfyuq#*i sg#a^n[SVI3N(HmlwZβ Q< Ntyz¾^2gc5,(tŲ;HW+ԫɖRqd1uʙ63bC\@ȞU,5~(uCnɗqV45: ]w/]gBup&7k =Vp*i.UVGJS>dh>-DPDVuhaosVЍXIg8&S3Db}LuFɲ@-M u-T0jub=!YZcq(/G&X-Wq;.k]1g*qO[;Es='i'ƁB +9=|Z` sE)A^x~`ўƧ)-iof%ſ(#EJ#` cdì>f.r?uF_L3a1#z_BjaG [(w Eh1Q/-*bu #_ٞwBˌ&6ea#VFijE0qz2(Ԏ*.|<2[ I m B0$ i`\JX`0dmH.\U,ws剝!~lyNn*txNu"e]dgH 0Xd(Yi 25 i g$:">spW] zϪ*dpFG.9`IdR>I4֌ڎe~ Epndf*66Tf=q#^rO0@FBly498eika| n먻S5k <ˆ+LyzMRr5` yQwkBѹv]SXy#`}k~Ju)j jj݌&([$̆ 1e-j\:$, ӿR@|•AilZoӷnWYsKNNwCzss$)ǿpuB?̽~SlX bd\$Hs:7,<~I F xWŘD/~eċ ]ֲI"Ca s0n." _S3e5/8e02Ǒ5+/(ybO蝲_1jd!ujt "tgWE(ANUaDh/ۿ`*ucƕܞkdeMv"I,(QYO֬hf Ú=>c=ZethNJfg. 6+|l!kǫJz6B .0=pƺXHoL F޴xOfjdZJҳ>BĥeRдdAƂz9 4C0TC0A`AK'o\d`Y)<>} j[A&$ &yS$Y+Hc=%Ml^QVKJm[RXj|%,9*2(aS{BmQw}͚[?ۅ~%UxT{9A}n;"⹩I^uڃRx~_ymk3J`~VE5Ԡ!K۷۠1̠fqH%Py0Iy/m<]|&힍-[]ߤҖ{y%"slcZ_׶-I], aF(?* 4wBN8sOu7?hĮL_ FfA f,5Q s6x'B;!{7+/bZW5'T*Z"«=qSR.1W. +Ǥ嫰Nď>CRh,X*2;€!lV"}U'OeT C$JY$av96BQz'p-IbfvJ$GAO/yE^U2c([v^ Mʑ%>Uz(;6:Z]ӣ%i'F}| 7T!ėwLi39r/+BЌ-غQ7]ՙ?-}IZYaw\v}զ0EuFBL$@Ģ6tzazC QNk*Bql=4^cWܐLQA=w; uC@2R1I`Y>Zt@cfl|vSq@HW*J3_E=pYgMlLiכ[nötBfPnFE(Blr>E7r65j.]u+1Qa4c ALكOyJHBqRio+.I*1Fea[γD"zmGY)p4EM3W'I>p1'$$Pzzs.V^V=%{ٿs[@с<3K`a@LfSc, % G+2T{iqx4>)? +m%ͽB.amzgJ ;j$8X%6<lZ^7Cʿ}8~We]/T#:f5A_JN=Α\7S`Vk091i[sh|mj wSLJqU>lb% Po*bF olY\j.H1mUrM@I=IC=2R "s:Ld][XjZrAOE3g fk{+&PJB7W,.-o"~ڍd,:* s%=8{A&j*=r&.2}=o=PvĶ]Xo!(4$Ar<k`5.!mUor 45&i!ʳ|+Ğ*Ҋ,1|nܨ+gYXO]9Nwyļ!| >peYi<{@)=0Ů\L.q] w;spV҉/$j;[~*g?l^)B|X; l᳎*ڴ(z͇f/k@cB=T8ɚ<- lB,VbDtPRU 4Ք= kb2u[@r_)Ke/(@W8v}&>`8ҖI)A,TݏaOF H˲C܉Cw |d2^DWUt{]?lpqZ-V|kFh?OϤnON;f tx^F`ԋT`~zEy`QI[әi WqD[b6Xfu{dqX &~g8y$ۊ_}cS;D)wBݑ(\g:LlO 3Bl Xnx)^<ℂfG+g!盼4d~ ~uj`,~- E6cۚ}Yl4u2wa7I![ du%5'⸍OhJl7}- ӏDYci4%+D]a}P:Aޅ/Yh>2bSyu C'q=q Jz?tEi9C>\YU$P=~دdULK.H"J읣6v xZS!6 ?u3jo&&oK" B>v8n9h'K 3f\SZ2, ʥ}`[W3d(34.I/H~_I3_8<J~jҟ;K㵅OpTsTu0ʸ$>R-z;EOU_Z!~ż+p[jHfǭBoNѴ4&p^ K$Vv~㬾%WQ(Sz55F@%\{EhgM917-ɰ/pYͬvS9p70M:uMTʦzR`t}u)ī+9ehpGu/;8F~YfQYVӠ9 F3@.'B`Eut;y+h`i쌴=r&c}6Ա_&DΕֲ#6ѱ,oDkCת b|vpmZJ,j6x7ر9ᐿ|(D&oօrz"W VHrB%8kvxqc 8HkFRZ^i*o@rscl6j6ű?bH3N1Ti`7X\r :jLwm;B0/4Ζ&>: 818ʵtDzktz? ";H5|O9&?Ck +uRL!w5ƽ./+|Ub!>//_ -I@$fi5Fc7)KQIUVxG T-KBf­H: *ղj6*쪳t(ЙD&i:ΓqeNnmaR{7wFX;) /`8ⁱ?SlVIjD7&j'{;_v!",85j*LЌ|ݕ97}]~Nqi7\#%sQE^qɭTtllH=zζ}>K`\Vlx|:}V4m 8hu|ysS53`s0n9d'*E$ Y(h8Q NBP41ǵ ZA{D ,J: q* ^Z@<"0==j Q=c:C2%^1MԘt6+Z-SOdSǺ1I |`Ln'2^P$/eff%a͘m}&FXh'[秚&6/}RJT,{B5X͈_mOI P+IxWV{ |G>맜Tڣ\_O 15yִÍadםZ~oTo-о_(Ckb4k첻t6@}*v⮦?57 xWXf<ݺ~zjhiadNϱ쾣'9Lz7.7sCRfngXOu.  ƦlSsSebirg.O]]}q3䡃r,?I߬°Tȝͼ?aʺ醊mYAkUnf|Aci.f/"}%2\# Ds=vY*Q9LѧTyѬ~9->*dAA.㟤~}_.W,PrG 9%\v>1ڿԊ۩㡇RD?>]+L\ D7S@;^- UI -aE~)B 3ë׸A:V۵JLoT0kj3TM+T:UXǭ^" qdh--eEPOwUjp32?&_qmUIבtwbj'Kkgam_wl3x\9tD!Uw:K3ƒ8a73 _mj vD0yP]dw7ikI\Xz!%0n3[Ex"Zgy FOԨ)= 8sE$T@t`jE;M"^Fс~liٿ ` Fh^`Oh{!x!KO*'| k\9 MnÂKpF]IQ-(,ƵD":NGEeЪZ0 uvff8v 4b4v'yy׊ё1˲d&4-fZ1 e?}([bܝ@-;)rZn|Z0  S WB8ہ*z*d{l_ؠ3'NNvhJuNj^@=Pqѿ0o2g]Hbȁ[`<WD0x_A\b;E5ôT]nV8gI!eEn":Fp!Sj@K\a[ y2dWE"Q_a&F9^"6|$IQ wg7ޑ yL P1_c]̓-+QsCZ|񯓣nrft"2$^64wDhaeW$ffo^QJ(f?ySԾ+y/H5*v*c̼2XfgI%/uSDUh7:OBc py@DQ*j57·~ZZ%q*(Q^CedG 5{Ab8ޘ(}[|Ee'i7=ksN> +ϙO&47Yi KJ+B([J,K.:~D4_l[BcSXv:YhgŘ*pny_68ΐEgr{4 AhL|Ȗ= pLmݴvL$g֩u.*L-Pc_Ѝ;N'gZ_n4-tS?LIFAT?x-M2dHmvms '>?<QNMuG.Ѱ##5U flHFcjDr$H=[LXawFtM!S[4&P"Py("nX,cchf>j)7܍DN̲VF*Jl\0.aд| z0R ix.qјNȉv)Ra\o6pD+5,Jҽal aXjOGڌt3Tn艠͆CQe[赙S;SشS/m$Ii6%IM(Y-i>%_JݟF+ O6^U]#%h'Dʂ $$^T'HzBs&ٞR bQOSH Qm7a kWz*qD$n!lW41T++Jz;6PYh9t[ "~UOq,RFqIHxʚ]񊎤rݍTT^d;i8FS PӁhWњA: A4gtD%6_qڲٜozѠ/FC+tP? ehsj~$XΟbEcNGXTEuqxT/{bI Ce "obb{ ZMI3r(i] 5*HP+R{)X?qO:w7)8yVf|pq5A;am MvIF'ۨ:߆(> }""ռKex`_D.?e+3/;{Bwʅ~O<."J!:U*?]Eq 960x}fW/;m*%b!dJpX%os0ڝv %@RɫǞ#j2pitr\KFyB* y%bbZ͝NX\vHC:2Wz+ÇѠJ%~Cv9\?0RN̾rJK^jx<#-@JؤS U6RsCn03Q]Iw!E>[ɂ'[Gj@lv(s\3Ko$HtMrp1vn]wwu,Tjbj'hưt刊GlϯluKtxND ΈQ>ϗfVϦ~3eժ)H}I%Xy+l+Vp>F^(ÖPit᫘O r@AeZ4Q%{/S*NQ"&RAF7 PvBHidt3.ˆRYڦMԪUqH-dO0;s^Bk|_ )4u0TeX{n[?:7OȥI57|ڶ` 4ݑ/w|Px$ﯸCpN{fJa՗-ZLޢrXZ][=:2v50hu4|#m邑^Uw1vgsoޱEޔ aSH/'t)GF5s05^(D !9I8ߢpGV<:I0v?o̹>k*Y,+8qrO낷3R|a: 0W.ȅCmlD;የZq6cZ7*a|.y+~9C[KJS#N,-WKH w~ ;(% "G6@3r*[*:aΦ;YŞ|7hV3В't3=pW΀]"ft7ՠ2\pyiNs=UˣYDU, %g$Rݍs6n=>])YEy ir/K"bhpAupEdl) ;L J_0]a,O 7sfDlW#P${Ne+I`Dٿ*2$yfwBlSJ ? KU}2n,hH!w(ۡ{ْEÿ/cW"|A8`{~+ 5cg]vhtr\}ڡ[]Y;7*4De/cѽ1d݋5W2nl2/,m6T!۱,lc5145ҙ4ovik04-xuJ8hr ؟^ѿvk@`l`Gd)TdX`YT߉2fܼ)SZWVyaacAHb໠dr0 WPTbXtSVz&[N-yZx6ÕB9|Œ1dg͜8%xIS#W0׆~ fsKm~{G ޗXM" OSt#L%J'J8G*urQqhn>sFTX̝\&lt'ۚi s|zTXN~6,oERO}٤D m9AZ.ʽ34gWQ~īkߵ4!w}mʱ% 4,SWos(i5IVdc'}0 [ṫϪmALŊ{JMf qr1UU>6^%c310kTP9 z9&FSKtCPK>4>Q$LE9"Cx˦lj{!tō9D6ɕJ0^j2Y3?B.37J@[Z;%arAJg>2xI@y5DI3&zIر0Ar] <;Uj~ psGQ3S#bf,!>$:dpe%}G0^W~{% |QQe* d;R?M^|4Q*%qӪD ?M34V^a6wp"z]_Ȏ_1oK1X,Oe 1|CF!VWgbr "t`&;Gba@'m(Fu[` ^|zum M7S=ty8u(]$g5.1kNR".c%uOd>R;`@a<M: gi]ùHNOMzaŔ-x (-)@mM}x3 {NzC'8b[$l~l4q}hJ =$.ڰ#ovBo nA\.&G'1vxn2]\ uB F-YlD0jE+8K4x_I`yW3u bI(If7~gM"5rzF5KXKwVR(?<\(g$ߓWC1{?:ot"}Q HQg /PeDZ< 1ZPBDѧOGG7Ġ?J ECN *q]db5HWZOwn۹`ʮIf%qb_,Kz]12|`$LK\~5Ki $n@>ļq}bvfLQ[a4(řeVQpw,IxϊFSv;՗m"Md< 0v)Cy^ͲS_YcpΚڐw֝d ZhѴ{mP;7\,At {M/!c;ճfH_Rbh{Kr'7nǬ7`!ka4 p x_ AS51>5Dt!#Q*Rj*xf,ku1a&bɺ S!%F)hl=M5&]ʋGw`jo$KAApK%o)C-EmFTɕ c|XWL̆bTWCˁVe~ZF=W.sšϋ\+,%9*3tĻ5,АlU9/<]&%oVgմ_zC{~H9%"SПA!&8#e~Xb]Ow-X;N}nrm+]Oj3 Tmo ̒L C&Πnl4Une~gF<`ذd9GhsI9^W )^@OE P~J:3^P[r'I*atk$Cc&VoOCu2(}1a>|.GApٳb.\nzv8ǰy^8L~ҕCs04"hMʛ%myF'Jmʱ7AۅAWW+1 e5|$9;%ͳc[ętqlým4'¼pm==[aJ])(-22_bS6&a' 7ΕDq>o&jx6S7'DO4.0ah]~cdLk5qxty/އ:˶T)H', ydL+ṗD ΐە(S ٴuL;BkP./]b]jǗPL_ [eS,YhK`>28@Z̉\⚓<Y-=+qw`V:ݺ^'|Ituk8j!2ZJf}ބQ;Fe"{V6~žLh[SܤR6( ׷g:Կ|Pjc[s\^)Ҕȗ ~;lgH-R{_d4to&uKI4 9g- # _'(Zο_{U-6 vZkm#{mUֵM۝9>y7[>,_Va$ratHۿhv{uȟд՛&ߊ!)A < NV@mu{*=EE )r.dWZn|$4J!XDY7 ]|ORjtjZK7TaƖ-4&#qz v* iqj *ǀMA}W?VLWAj^*dOF\[A6:H+wBCY7L?Lk2݈KcnXX^ Fd>FPԧkӄ o8gX:R71ؘs]E0'qByXF wStS1 -< x&|1LtzGxTRK [ߥDSz#:XKSP2nb܁TƠ~) YmSy~jlka>6H(llH`bzgX ?55f x>7[7k;P3ۚiEm^XjM-4Xn,OWM#ϊ!\NNu0)~GsLZٙTtd] 2u c—FmGNd!Sj?>Pq;"|(SF{=Kp=[zl8I=9zʌlrN5Gk+Ƿ;.f}mT 6FLcRLz1^؆ S+ټrIO:@󷨺>( 2g`ܻ v>Y~rȢD~٢B4ؽpyu9(Η(w6<9 =dD.ຶ|rl x3e -洂L۟wǬѱWh*[r\XAJc8Olƌ.@# µs%sȳaIWÝZo&qOfnc4;ו"$ lV`m2U76ņ-PnO& *>0>lLh)R8O퓪E.q=qlvq0GU%\2ma^w20].C1%'09:8Tۥg<cZVJj:S?G< :<={?eu)򦻪7:>T҈ʫYhÓj,8DN莟1v<#{I>wt̴~z=Lr+kGa<۳qx/v+%eh"` ͷțV>9Pd mnd8dRGDQNdتj8g\_Ncv$& ^w=p@Er< DƾrA[@w^[]vPA,' L&Mm}7۬Q-TIk:|l$t^:{Ƌ~;7^Q;a:9_> ->eCoƓgrD|IK҂07LF1L?brGc.gf5Uqܽ 4 NX1ԯh7+Ǧ9gJfƛu@Bp굀 )VzVx'˺w`k6T^ށSDVuz'xY1L:|+(6@,l:.wˉ27dN<k UImG *T2 o&u #--ۏxidve4NYOpWk+5*9_lzDn"si/+5/MNrg%Pt;%y:͋$Aרty7^ B7Q* 0FxBj!xV50aT{%ef)iyJ/o,^ phzϼR`sW3#~QxH7x=C+r,?{o`j)W]Q е/΅LIaL%gߗ,߿a4iBӖ[9q Ɲ+,JJhE|@B8d,J:vϢ Pn?{n~jԎ :~Ɂbʈ?>QC&X1ЌW!:oj:x~\{@jcQy f0Ev7"@3g$Kԫ&}>R*N@HG T$P ddj(dMVn~*- ]Nhͩ˫)CV'1JCI!mzM3҄|[&+U374ŐT%hƄe3L< 4҄ԹN4]ZԙүrEmݮ Ѷ2@Xobk6 yM>Mqb{i-ٗ|q쓀W6H,Kn]E5"مCJG̹ZP>QZޯ,!|Üw=UyKV1T1ˉWkw:ȿFƃ"x4A,f0z?ihcI޳Rê\FG{&?[i?>蔡&=O`:slE4 #T2tane)غ_2&:#q⬮ o k>|u xu 2sݭ2j⭨1!;7ԉgK':Npw 6tFy \t5s}h>k-FꏎI`[kX-(Kd4 HJ3|̰xF;T?wtHDH\AyI_T:zލ w 9ώhV;F`OeV[«$tL6wޥ$,7r +3 rv}g0bUD7W*I\u^錷*;,#=2)*Ƙ+Xֶ(AX}L6_ pz0YvDYIQCَ\RwKIUܺ^jM\vu|H"tFmNbfLpMct=qHg e΃u7Xo%޴ $ f*7M ~$\2-j9@m `ER4JaEA;6E+v_C0Q5{|RRcg飽]M/{&}niP=!7ug7Z"!-4(GqU;Wyi#IcZ? 4bq0[ j <?$&/8N'J gC=# {&YޮlYSy72%86W11);lvvV(AaxM"CJ,UH .pS6[[D@P*o.yƙuvCd@oQq[StX¤Ϙ؝ ݕMŔgZOJJFxVk0SŬ m7[JE'91ZWeYO2E%JC+QaUY3E "@7VZ!'naf¥nXeDn}ufG4[#5#P.|=)ՌP|2AW@H'-N@\2J(~=9sT_94Wȏ!is/h[3 $nݭiq~{U~,0@m-WkMU'LI''TNnQ̀qa@'a%BuU@w&.a%]nh K *qC2k'A6?l) ?YW,6^=Ȱ4G1TdP|벘'J PM;jwRpoyăѹU8\i5u4E~0ʊGZ:Mu")A9up SK6lJ7%RQ]ɋNDSQWڵ1 Ncx4eY[j.[vZMN! r*X](9f% kY"[-+m,w~UMzKr|M(-zOl^vk1:].d}J0]vG9UaS&{3G!g1h[eP޶X ;ȊƏrT:4ާt5?.$ ZGp2ln_-7Dq |*}_M#V:xkj@o۩GO6+3䤼2F R$ݭ_,xhIL2o8.tQ"wT@M'-{8'QEWR 5g&Sp ο 3 vf?FvG 'j2W* S+ܨÆ1tF@J 3Zo .?jf4P1\d6g*$VđXDf#u!4_W/Le2AC%R>ӭT'8EgT(2V^a;qGdnbn}g7Qi7@&=G*:l9cDMzxQ7O".AԞ'1ЮQww-B+@Qtc<7 %?9\UsvXݪIwݾfG|< o`tּ4>vf |K 2m9,7VY?F&}w.׹Uno>$5pjȩv_=w B'&$|ZsZ@a$ VM ŝx{X-g/% 0RBRfC!CHцzRmM{_Pr|ٖeSC!4͙7.t`\1 [ _ˍ\c֒Z nͯbIS#} '0wsH~1턻%&@xQy[>WԦ# cetRGtkʑBs3w*qyCہeJ 8{ULQ.ǡ;ލqj鰛Lms.LE6~6;|TU:fkt؈O%0]dmgR_ΚQ,!fv/u,{Wt: {q7"gb;,ͪ a!J0 Z>̿rU.AXJe:+߄-(Q?>Z Au=>œry'm s%6K޷r:DÝ!L?1N7BZNނHک>?F&P1INnA@ݚR_dC'j/m4u;B1d;,`h^>mOmSxPY4X!ӑ@wmB[:=Fސ*]T,Zb.4uB٘|yrovdF xD=ua0{oF ܲ&)]ALv y.֦f%wCXJJGW]SK#OSAR֟I uGUuᛄ^ZVkvIP|v XHҗ[^z@ #JuLq;i묖6Zd[* :"C<@RKR)83YgKXyߗk˯`ʩ< @u%//,^Ƶh?zPv D_:ΈiH@雔ǘKis_W8ЅѴ~=u^[sakā#bKV*1Guv`X 9EK*s ʢgP6JMK_&gH64O6-_ =a;"C]˃8(%oL21M#ŸD>ujQVխ:=.Po)PÑq4(O@6գm֝/E_`"ngsa{ w0Ң%5blId=JP/EFX|'R$ؗۿl* g& Y5s)';Ji1ۈxQѕK40,C?,C v ~! eJ+RR۞#dZ|(YGZ[ ?Ÿg! ;-hWAqM w 8~i/珬Tկ9{p`QXUaB S͸Q lZ!5Q SI-Q1 oOA3t ǎ((!Mb!K1{昻#|(ّr8󑿲O34OK@1K֊x(9`nw@q1!@Ð8x5A,U"%j%l+Sl@k^gwp,nVRZ a2UjU64.%Ѧ o?]$Z5QLWe E*D1ף_= C⿧]AwnћC`6j7M0+,wp̩׀,Y|*+WUI,t|X\+;e_KMnT11%%;b l lKZLX$z6~F<+JK%ZQ)4 YHi;&[v ۶_|FXE`$kE|a(@4ChƜv,ƫn bi[`K ~b&q?,e˟~˿>H%rRn P*8"rV o3i!虄 2\zWr~5R6.)U9Ō:wyB̞:L"޳6R!q_tO6C@ZLׁ SaZtŮéPmD^}C 7T3 s G xmnw5Rg-c_6tazx/OIRz<^!clD +YCS[ g$5"2^/VKM]Xs7|d]z*GDjyzTUԤ s̀H;[YlŨX;t@m˝@M'+.AWb"ޭ9M5s1-eu9y@bd, 24.b0T٤6xb; #Y4vA5*=X/O:ۂ~)*N$QJ4r5TĢWvqo{*w=*d 2 @෥"S4_TĠnE޳IeF4nm@r_}m)n 0DM x'59zm'c2keVJ:k+Q4P3vM拏L:{:}ZB߳;rlH|M š<!JQ[$JG@ONjlb1gw<Ҵi.|A1^nQ2%6U~ *z a4Gi^k&p+"n(-likôKq@Bv|V;3a) Xu_8oEcz(]H$ #1)l#3~*U+Ǫg@YS ޤhȸHu^2b"댃{()D-A( )$Yz4z'`oa-Q_yP N8]d8)Ew{B;#!24#vB;c_H)pNKT !c/_OԡE%hF8x{M~)gKBhi yKDžk ^+{4 z arEX/ۍenh⁒g;\*聨L0ipSݨyU7p^P ץ6?GKv2Swi=ܰ\WWk1rV0Ez9F}N9=հ L`C# ,7ɩdd0a?_^ {0/jU%fO+O2ӴĆtӻWަI*g!p$q@cW >UXAjH%3FvC?`7jKs!GZia(E 位ZCcbeq jZֳT&=0c-؁yJKSC"^ziP!obrN58Rr%IU)eH%c!:5o?78uD@ [9?M7jvne4Bz3g}L'1pk'9VO S#YXC|UT{$dJJuU$C[~5gZNk⍞0a<3a0*MYjwipFÚ\S<~x,s[i>(Q|ӫ1B23P?o39V1EA$Bǘ-B3UUm!tM>a'T.14߸u'"ZKvl[2.)ֺi$jvo;ġs`|>2Z |h Qrj?OzԼtS jg<ڴS]aL>֑0l 6qZDhrE'^f[WE-e#z5À0L'я2D k3͊)2MćO;/ GطmC{K\k b- ,B0ojO5'͑}Ĭ4(Ls 3]n$(oiT.D//mj*$@Vx&gxj66cOH6! |K$DgCdHVrXΊp'I-Zv^]4f0)_7+k6{gCAJ6becn_ho}G'vvNxLaK5¼[q얆@o̊qF^E$!8Zﺱ,6GoŜ~ @lfeԂ3R?ؚmmP7&JSEa ۲WU .sq fyRԚ,}ylŢ 3lHRBq`xKGmEP/7h')K= f%IX]\HTCa9K{Խ35ۺ"fb#DQ)^ح?,p#h2-XN 2-N2ngޫq}8ևuf-pmsW57'(}&aᷰah$kO[*%xaЈ1rxo*|#k}qؼLe.᤼.I$$0DwXf.Bx&lcD{Gor9efҤ"|i%8V IPP&ɉ$5ULiu LE>!8wki70SҙA]4/hRFЉ wWJGsVhҗFu0V]wHew1A@jh\1kd*S ěgG-l̨;%)3Kb1.KVM>L3G/꩓o*Lt;9U 6Khex7 HBƩ[; UE`mH wi )FJ:vwB gъC,oNu0zᾋur~w1CRo=Syq" [+k +ndB$d@ѓo .|>=*(b(MP*ٍ D]5 Yl# SP5}< $j[_ڒV>mx}y?Mb'UYsfh"ط"-v3+Lļ;lFYmjɁ8, ɶ7~̟#Sm)(yYqׂƵF0;b3XTecp"tPQpQ.sY9}8_UaK|+@:tE5 ľPiWWS>ch&E.m+y? $Um EbJ"Ar_dL(N|h^㹳wY,TIlfhS;24܏]L .L'2 / x,e?,Q[kl nb/EAM1/ YilY/w_u۶mp0">i̳ܬt{J0PclSe![^B'JF*q'dLnEYלLF]3%Eݞ 8 ::w.5'{hCFp)?pW}ɼ.?w^>n5`ϱpq"ޏ`G/ܧ3$A`cREu&`$#Co|VbݼG" ?Lnؐ\7 >T,# '0WWlV1[t:+uؔۈj=/.Y9)H(qLV Dj?qg,j\(uԕ hECR;n24ELc_l|Xxތ>QL=TL'Mq*^וy9nL3tBvi8_XAv=r'PE zQ4$nDk0krfV^GNQ-ޘZ*6c{Į@*=oDL . HqTϧf44X{Sk_zav]MOUԠг2,^tË1RJeS ZB_6i/g/dHëW@3}@5{cPr_Ӯ^GrF5͔beATHdg+,N Osp&rĮ0oV!m'QWNkG..t]WmlJo]EM\Urz{KgϧWhݧyҿE8b?fNNBݿNSH=}J .xY6Xgi=o =FrJq0 dҙyj>ʛ^h6+C0VZ!xd{5ٙ2ް0ۄ1:L^bnVmH=WHs9W2  Zi>e Ӱ`Rܾ`9֑G[FS',GKlի䌗eu# aپG̏OWE%GEWL,ip } idϥ:hkϽQOiAmd4uV4ļOw=te.8[Y5KqZ1YR7@SIM %Z^E>" A A9ިY @U:9x-|aYWY}݃@n &vm_/~}ZC>=Tb2SZh*ݼK>ً#bVy蚵/=v=%;Imy7$\ͺyO޲:`^688dF/Dwt"Wh)Zv*RUk:qF'dGm%8g͋Մ.^,R `3(ۡM ĝ`3%t'VCU)ҹEPFxFJ 0$V~g\fЧ}k2j6]ک3tR|QNu[Nq "e^x'꜃q>+Q$%jn Ct)yV]෦6aOIdq K ՗$$>dsz+m5&ZP%%2,/\́CR>ciL0W`Tgmª}Q~ SF$?{طɡaG ]"q&QUz%M~>~73^6>bSqQKL:~قuڏJh`Pm{p Ҫz ?/{nMDДj[1-5G{у9¼q2:"#ʸ'g]J=V!ȷ%f&5&dl"YH-N ΠYm?=.8ċ`HTIhu` :3IM Gu|won@xԾ_~#iC3}2pϢ[?i@l!v|5 laZ؅&y~o إsC|0OJQ7J"jsIOthjų`8}t$ 2Cg1Q\%*Ìe9@vulpXZ`Cu ;n+>cnH{$4߹`7) W͇CojJ<Pl/Dj]trcgll Y}ZoU\˟/z 'g% RXl"gv  5Fv g;oj \!c| ҫ͜טּ Mn% *Q?U+Y-}Jrrن U7 _z~ڶZeOl+5ןDΓȗm_rkҐ$&3\ ]6ZDij};c6ֆAw}]#Q 鹆5.\zyISyL x?wOu"(Ɲ+&tWJ{_/+U/5:.)~r?HMa b"HK|+Vf $[b$9ٱM>#EK$3_l? I=M )`[hOzCkǤ3<ZHMolrv^So_"hO~l SWxz6xŨ9 1Al9J;+®"6qn3O{RqOt[YzӂJCaf 9=k U~MDc&ȐԒ>qNv~#`x{bp g)YȝHzKh?Y |< ]@g:ec]aWMF)a{׉r)h?R' `7[+gSEk$aԁg#qVD/ έF «rYda_(-z4(6tI܈^9&#DK|0L%[C%@ 4ߑ]OC CREkKR۸`q//JBN`NYnae0m-e5Xpy`NNSv&%^ N`?QWxJБotݴVٗ[cm)3WCEu)̔hAh';I_Z/C&jW}PY3P 0#6Bʝw?>z Z&ŽC 2GWGmDmƫdz+l2?;U^܇&VQf9'@r!t/9}"ԦWAG?'ӟG_GmrjV*;~LZPVy(_*+x",:8r)<{ Wg_f8ȀSIh$mn{GV'9vE ffCV*fy#Q*F(S+2Eޕ`BfCJb1ԇ_IّGaA!ܼOk k?;R6~(D;vM(b73˶R:nfhIJMb,}ٙ=H x0K # MXyMjX^hR dQri=5mЪfm$=2"|5>G}[遗L9)YMD<^ v}-`~#>|KEijz #~h=AnہLJıȖME&`wOhHgrLk%΋Q G䧶:]TX(l{PdP_[ Ғ]:Ljх-%zIG]NE̶xӯ2Z_:Y.ΥT=;ՙfz;30>$Š/1xy']Hѕ:zv/ ',eҹ1Y$Oy+0n6"܂5aR :&NCʨƝ /qWJƚhuX .ƥANIn^i~ MSvT(V(X3׷W\3/Galk#W6K]`2 ݝnt }0q`/ͼ#H3l{\:aDRzQrVBrA"Zpӗ;6a4CLC&h\j^mU2cc_!7!=■h-"N p!j5t4ax+Q51 Y#hF*cD.'_y m9)N*#Q*ߣ8ÆCk=׃zVV&XnQ[!Αłԫ:Ο޽n՚RUܟXafLz@uE >=:5*,_,5D-D>9gP9$Wǩکb(>h䥎ө1y}w/ON Ƈӟ.Ozː.%qE85` S?i_,sHBc$J#lZ*גPjdh$MW$f?H朿1Lel 0- xaotDt.ÿ@"TV'-yj'fx>ׅR'hX]+˙tn?3T}zNgrddy8b{z?P>|7hqTJcj{63D?,} L%_9" X4#h&㗠Sx^ Y_dA oZm{͜#QcJlKjXTt:ZtToG([̍_ݠ˚[wH_y̎ԶOS(㐱*A˚MF[pa{z{>ބF[]y8.0{Q^ mlU;9\lPn=*R$?V]V~8N 1З v=8?Z" _(y~qTXe!NAF->Aѓ5be?42O|^r$CXj-_,%7Tf:xu}x67c!T70j߯;}ˀ59lGkf4uS5`3JW}XJ\\B$+ ˻i$mwt6/;TzxxcJhh NWW>SU_{Dil=u$הVaXS;o'xǷcR˝xu4$*Nc%dKy_<\dIQl9ge{G.l`(7MZ LBǰ-\j #mo ïTtU82!"$=7tDeVۙ+kc~#2KMcDbJΨ5 ry~|W%{#k]ӪO<_vn fq>o΄ yG}O9upg`[8K+h `m}-=suD}^%!|41ә☽+*p9(E, XCTBvW=o9yoBj}o3?F"('LwcÄ5&Zǫݙ04cjGZMY5XЄ4Qz/VfCL${>XnHi\=V_>wnz0iզpK{ai:H=; ~EByl}?5u@%WTOIX[p }ѻR eBzЖ r#4_ݵ("R_7($=xn;$C;QO©TH餆rX%߅BQYf U}+$#C2)b}Q4w'Ә*OnkhZ:rw%5P5iŝ9 Oj~ѷIҎ`jC67SQɔ]8.-dJ}BxJXEֆԈ:(OmʯUX\4w ԝnJ?4ǔ>rͅT-|X̗Idy .xfE`ZyhIC?Z6"X&АG[А$"H.,H3'ex^YhjOAXs(+HíJz._Ɵ{iUc!ʿl'`)BUD@'U/h\lx V wO-^C&PLi1S7ܭؒ~ >g䶇h7P zZ!lQ+jW4s-w;K8тDcPt}4 lq 8'Qh(V}@Dcz;R_9ض6q}G\-O1|IBYiȂH(ց9}w-20,JnХmS~N#K\ըleYٵ ۡ:,^Ϻv厰'v=*b2e_0Vmc7R8>f WUn!{|BQxEfslFylQ9V EPE*a܂}ϼ:(zz8F7\K^eVIvR@gwqxR^!. yf7_ĖXj%%=9pNx֦O%Hs,9N,yl'#a3K6&V)7w/I[K=`=Ɍ>՞+[;ulcM Z=7 chء^X?KLN}ZX庬r-"A)2?Zdyտ4oxiMKTN0vG_ u]Va!YmoSXZA:zgpw##N(ܿEn,sH֦zޢ8a@aSiy+lU P]+=y6'"p(oAt[/Qf-[M*ZљIq)YAjW "? J QgNT\a EP(pLJQǢyhl(KBkTǧfLd(<)y7 =n! Y],!$?[1>BZnEQ͖ϤY^CڧX` n\d뇏j-3zntF`Nx$H&% 4)L XAsm8VB#oWQG%]i1U,#":/4`7JHw:$t_*>xiU0n]f %#A$q7 ,NDueSJ5|3`In6\W#n R Z;RId- YLxcٰȼvh/!ٟ)zF)ۼA# F؞c7)1x"%= HĽQbÄ*k? 8. #u(:FCN&"|"b&/1䴕iLtPtE;k*0&Kd;[^06ɦ4G8|/H!R%.6tKi]# x͂9VvAKa 8yGD3R=υ^/M\κPKZdn'!Cc:'J`͊N:qlZ -'K䥖tu ۼ8Ʉ[?K"tW$ k@E{}>V Ʃ I.kXIhZR$I } xsq! p ?,ެ.SČ𭋢!bsQ}q 䧢A}Qzod,M (N7+TH|ʴ\8S ?[|S6920YNԇGSk?X4hl̏t), iU,u-v*wSm{DCm NX[0l.(HݵH ٗm_Ps!}RH(y ܳ-vp±rQ&2.7+1!AV;Dq.ׄ@omGGev")ǒ=v/xwfxkK 僞u6IBYPbH%H_u?}o=Qjozs W:5 $6(gO#V9;<12v5+YhBvX^qM@ʻI3$^ >=/k3 |FG<$B Kjhrp7_oAeEA2`~LLm<8R#~1v npR cpPTcXfK%oZ0dFIzyy4LXzP ʛYʰlM/xPa IV2ϥޡY\ lz~ِ{/y/u{}'c. 3|ܿ*iP⩾]T-4-{dmlv,ȡSiKU<|?[o`~_„əPA`~R'JmV($̊@ev ԗzP'l~Jі7]>mhpH!yT.,Mϙ:g[6s~:ӿ&U4ڜekj71-3oOcim{K 'L 9Qb, HܛW]&y3DjdHf c4IǠagB@jt-@ee_ǥֶd X/q E?}VWo喊Y3~w~&WhW4PAd]S/\JC/X&)VsL0$*СM|ŠI0!Oq6Z,*䶁#X̒6~'_6@wnGR.8uf  a R(DkNH=}fo,+HrӟJ*P^:ss+#pD-|R2-"MȮϫ 0헭N+"j.qHxָn @8Q,X+:I3P`k7΍Ta^xFqHo 6<' `d F^wRf Q ;Q9 TKr C@~'"Uz̞VUo:Y{!|o`KQ?f fd8F?խQYl?Y7j\^"f~ H4*< Ȑ%wR힔_ Z]K_RN$B L;b575#*Da 'hZG7 *JU™!'?H9`VNsA"t`tVCހ7Vg-o57ƚ87m1ŹDzሙߵE9f}=>HXdI*qXo{xN G,*D")8Z $=p"yHk%b vqR>+¶ :8Ϯ) 1,7(@Aͫ(KOjĘ]l3o39XjOI@,kqߺsΒ":n%=!%~0bYCl̵"IA )Rߪ";8wqYʟ{}nʩ:.=fQ$Z>#5XB? ʕ!22002Yiі9S wӚaƫB|H@' &]NG_,C@9m3Cޅ2 v6X ~3Ԡ>li/@f(aij{ώ͖X$:>|Pbڎ ;,vS$(.$'rM ܆^UH&h|θWqYK@@Ƕ"F}>%mx\\=,?RpslsRYz~B"EAsfT$l,m+QiwHY/5:p~P{B;8 Qݥ`)U)OݨOd{6& `'.A8rpgzc[Ap`VY=ݚl,f8僇0Jng"0O' 9̻FmH['n|Ȃn}q>SO+Q+L:úq=(%a6Ab@Ƞa^]MUG~<&g5>9טoOsD|Z5-JGIX@~oB 6*uZ#Kꐔwmy1qxf7`l߼jalЖ&vuf[ry,b.. `Vþu}g&$?9%_ 8AɯFrlb튅ʲhx=<НK#Vҕ$b`'fIRiSesJmsF0@*d<{y7R5(V0(3(#G-hśzneLS%:4CBm~V.S^v^j1+uEApW%>{$=G\ n߼ OFVD0\xꞐ_!>qu+PȬacՊ߽"K]C>1[e:s2u(F}]5dTFo/F2бL 37Yz{Sϼ;0C/A7yK@(鵫oݣy=CPq䍨)G:=p>2">|avP=%~H=:"'2mM:ӏ(l,WŜ*j۳CKe{O „d^B.%jX75;#o3Sb"?B!sXKr܌Mڥ0Q]~o8[.@K/>|OazXĝ/.N y%74AJ,0iW},GY=q*Dṉ\/4ltg U -j@ʼ7T\_%E+ Is,m%H; Fe/%i.~lVv͎?'^`n{3Փ{ZGLǣ.O=#JΟS-LQmfh3 ,?A߬2 6юȺ)N"T)z}]Kl206\RWg0gSj?s#EVI 5/3/1KL kF|iQ8g&:Cs/̈́l 9iyG6$z 8rIR#~e  !1_=h J~bJX5w& ?E =$ٴM/\0ݼa?D\c9Pb߾-4}jg_Z%p[Y &y}h%e/IW<~z)maP+8_>Ÿig=:xpxYMqLgbٴ hMfz&i[-=QWk/ ˍvĞl ϗO.b~jk"6FdJf@iP5LZ_;4`H)O~:g탾UX!551ӳ=8 q~c EBPx3y-?K2<$JHFOxҰ]d+6weݭʟ`O>m.#@\j)і~fNJ@°BM腝gI,՘FJ\-teIfts]S+"DQ-`p~j%f1Vm_LL/ɝRp@dG,%ηQą 0 _U[Pv3*!ɬFňDT,)0|dV pG,6cnrN OlKw}pfvrٮZ  b![y˱z 6| T2&c hmאta \r1HAv=| p=W#~ZwM7:}1[Hh5eR!]6+qnf,*tu^K831?%@~G0|0ef#G KqbGB[sJko Q\1(Oڲز[J;7{h44*MH 3hS Syz[ myJjLf2{ѝ@+EIHW v_ZaO|P] |79[l粟Ei{q`qOћ~#ߑ3D gGay 9R \RjKㆬU;d(fy#|eM#X.V,qZQ }b᭸-[?R0:4*n@"5sQҭAࣚeBEe["4:95 +xHW,]+r, p608T^EWñ*;/DppjUNUT @"nv)F 9mqB_~[ImM[²KCpe?m-l]R8̋B+:xGCTMzu $RaSֳ1xx9ɐԠ+@G2THhn&`wD `cXEgC*g~!0Ag8sчFd-Zz]BXe8M{)*D ;鴻Wb2ġ}\fA͜Kw]% ѫ#}VT !r,ox4LĠ,`5,발*B r*tܑbY !8lGNKimTSބfSC fTQ^L &kpz&;jxq"ŵ;H55fM.dK!DXu"8ĕ){Kùifx-n }Yo3ef\f܂扛RP]{t _pvR@ nŚ8ˆmt@FRHKy=<#,qWF(c^Qdj_uw{6ߵw 1I2xM%B$1j97IZRO5Y%̄r<PGsά/y 3){L_ՖMʊHcQ6#0#Uχa7Od*1*^@S(.RڋE9[`[[Qa?q2Cl;mԠ8yQ7pWW_ߖXAf3$qI) ]q҈~HPN3!9`HVO<Lǂg)~ ͮ+{x'wWsZ:vRd[n?1=IGAN~kplC U8ɠ1^ =焓mfTn]4Ą#T{ؾnA7MHGWjp$?jAbRK[]0cfpu yؘW+uthc{Nx P5 zd1F\]19E̳d<˘ @*<`0W7WܬWȫ2 7$rLiv;X},{əV@CeS `Xtl1O68؂fX{zT-U۸ fVGͳ`t"?%$,)M+HUU nJыxv&T03D r}`0:Sz<`8%7ˤPݮHEULYpqYoTH>e@G YNСY:0c+[ZZ.mKn^w~.p7YtPj]w OhUbكSQ޾ŸDIdlILHҝ4XbM!LA֘san~A3lW\m.w[M?򾆣J'_N!L1c I8}%~ۡE_Hy}InO)I&lXtiiK=DŽc@TA:yg6Tj,";jyc6d;rFx&@k(4Ţ'\'Nx!?p,82-󱖱r lW7n; IXw_,T2>*cph<n,);B{ɻzӚ`* B,͸CbjgA%:Z?D}R;nSJXoLkiN5.|a9M@-z8:Xid}|ⳅ5"n#:< ^4\`7 4W7b>@{ 'fմ7=[A"e7˔ZЖ$E-֩#!(7%?.9<ё=1N5'ܖR[u bj\{*pbDNjB(KԉsԫZ5TĊrMe68I d.ʺo;]@.;_Hz̡0zoTEs @b[ vlET3R5.q=b}՘[)[FK?Bbwһ+ GkW̋XgI BVVfyinJ ^~$3n-`o}q觾e8jB~H>g&c=+_3ྃPBχ#Y4+>Zz2v : &܏QLrGK\{w)6 aq b^OMAm>ì vBˏ8zA@]5vyPJpo?aK(7j$Z" ]FA%nU Iroe` 7Q}8ߩ=kCNKLZDG31Oi\N 'y]Ǚ0&a-yxiȡC&xfA* v^AkIMAP}Y3Η>#L |zV`) 9ņ 0I:Yi05iq3 LA[;vlBcsD?Y=?bȬ|0/Ý"(Zd@>-܈ȹ- fAJFoFj;.o䲇[K\|6= s,z$?p媇b_" Vg]sU/ye%d^[eyZh 8)fS'[>CQ>L5( Ȳޏmj>T-Lk͋G8MND~:N@_QP&, 9/`ϳg&nVs {5㹘[̸82K<$YZV S8 W#MkE{{KPY1k #W!yzb#q1N_CIGGsi)vmYoO`i*ѿ(-&n Ljbr<. D''bYȚepP"cL[IKFmKԁ&ꕠ&{Q &{q@ JbEogGfIC{,)ŗ}=ckn<RMgRI8J?s|h&#_ulՅ7@;eIš&? L=ly-"YU*WJ疘h D(p=̍@N23$=48nY5W& ~iCS>GT+ʄnI` BMzˉh {Y54h^nVcug٫DJU@'ݛ$.pKE,BK,D6g8[$\u!4'|(ݾUicp+dyGP *XDU$2m˅h쩙N^T%`Z^0c7 fLjB1OzTK^Fr6ȉ5;B&>t­ɹMptEe1 =$ŭ\RvV,ӭ3ϑU?2|E2fW;3U}ցT=62)U6-*UTK&J;jǙut^QAvHA2KwOftUűLBZ^O?Y>Z@w׀M{D׃U(&V"啸Qy7b.q~0٨9E pVFsV,2!}}X3N!mR-9&o֬_߈ k.۷r3>^g߿8%J#b$8+Y<ttFM*3,LPwG9Js#a պ4ݘDw1S*iD /3qvY;sYyܮ;BtQ]^y%ǎoH~*w%|ɜUZ wvt#'eѻIvy,{ӎ|&FC92nk8gKuE4 ^euZئYt}4LKs>`ڟS$rDrA 5+|/k38m*!zkr~އf1vqb=,ߥd%Q$dq. x4$!7EC*]5wf: V.ki_[,[(Y$w@LA#Ғ ݵv@Yt̕S`[udGbh(bZ?Mos)g ՋF 62\הIR籈?{̉E"E! _iq $si?Hh dT'$5DҌWZ/T"7}qX̚rO'r^-?~^{Ѡ qPI\/8-fDW{dJ! '!)$dg0t),X!R5?t!LrkMܡ]=mj$ͿkQMz@5ij3Q5&эA *9B|vYL_jբ+8{d~Vv gSgX}}̝39qac)NgӖOu,Au٤kp‚v=\ IZĸeCgc%?}*Ä y)5`\la_aMׂ4r–8N(# YNY堢T,·#j@15|"0S>񋭎V-Hd=nIg( zR@ nQ2Ejq.t3FYDVH|꽟ts}/BOwIT$=Oc]ϳYvyQNRٷ}їcQ ةn^LU~͸zjaٓ8lpݳB(MT_X@]+\a. շe欞Oғ$qqU.Ie[->s9h-u@9Ѝڠ/`PD0qm)NF:Ah [@8gRX6JbYNSC/焱ړz /%+V߹xiNPbrJϣ+&iMBo!hFF!QmM&Tl e?l c /X-u-T4OկWViq˖ܵ]pY&#[I ٿLhHqBik+=c7qD%$h)|DQ;3!tPz_EA&^ Z('dz>6Ht.k-k"VN%G38#IyNl;å;ps=egdlC:|"3"R1 'ȜIV@HZy&B %ay!v+ opC{_fnf]K)`miqsX1B~c{lq  e$ Sf)fO&I_TW ${tO3Kdz kJ!1!irRfqH-걼= 1gENqŽ((-;}(]f4Oـ;raR{6Z̓9:R]=AMC<|=5%9)͍>Iuѣ߹tlS7e":*Q~kZ{o ,j1tJZ`}GU`|[s{xI= 7!ul̘Q5kp2n"uÆP/[)/Ț=`= 6$|jd1՗^l; @}+< М)$>E@,n%B9یMi%]Z"z=^3IBs&Jw׻^_r"t $r{,rU-Ę˴<׆]lD|J:nO)I.rcwKq[^=4|AlO=o K!Id;A,:`Gخ%/rۚЛƅ\ } W'dQ U[~7oI'T @=G}tf2,s4󰵩qv"R#IB³0MutXe8iKXaY,F\A$D,xh:AZW1_?rnAi9bsCFƘНSHn9~^;G{D3SR`?{O5+m1zI9yer MJ P#e%QFj:DjU\7oxn3%-$ŏ>2]C$7y=&( *5r_QR]њ{7@57(o8C8:N}S&.3c$Dy(Rv*f@yaD~Y'*"ᆡn!1Ug,s/ ;X2un^-}ᤡ]sk\ơ rG<~Yhx+E%:JsaZh*> [k.sMתz))H7\8pFv` ȗ,|*M mЮ^/XHY:α\7O"/^ ]ww]i:ڋdXǚ5dx2#"vߡ&ZO,@^E ?3MBE}7ƴJR>o1ӎT" ZMK4cd_B"H x;d,gO 7w{ŴdaAƻž d19R^8hSq|a1JUf=bu.Mr\z jdFַP#{RTT.@bTcS5Js/^}ȸѐZ:%-[0{)DmK 2J} KD> E) 80Jٟ^La݈¨⏱;kB?1vg.)i ZUL9vBsY zYP>zO3 Ǵ7ca۟ng%4|€M4G]'F"Mg5"V&#Qd易Rf S E5Ƣn2 =R[DƬH_"z^ס\)XG12BhdN\a>&*C7wUWU&uwS^*ع˜cg㳓T"AC 󏼒V#YIxZq`w,@p, cZgek๴|rX2uh؁uy5ӕC:9&məoY+_GF3eq ?.0ho >/eBhƧۅiORˈ3EGo>jF?1Oj 磥DLt.ېHH %^=Z>7HuΞ-I3T 'zuUȡQZfAwS7BC'V%4T]"FX 9',D X n7a(n GAVSy;~E郖' vC;>0a>qy Um`,=ڍC3vOH>ҷ?c蕅;U~MNPVߓߌޤI-t-Xuj̱ތjy!.mR֤ 0 n B! :7""VMt1v%H}H~YlQ:vt`$=m5s+l:R 7 8׭wq 8NN +i,C1zD7E)ď:>^; O)(@)*[y$[~F75s? l7GY1T HWs_qb-ʜ}?Z/N@`Nwgd5`Nd`3kR?n*"hN]0@ dcmTԆ̯ chБxx#Bo$]9-Xjۑ  d&yC}3;|830nnQnIJڠBl)B2Gh42z7N"3Y|օ ~)'@S.I'3b_}\D|R_}"_wNIJS|+'hz_[.o3eī^YsTeNS[A_C6q7< tĸO( ؼk1 %UmUgȵ* ^ʆ:>Lֺ|Kw0љ%Dh&bf.iR{՝ApmR N\)zwZ<| x/B w6VkF|IWMcdGJ Rٔ\vNfz{"72WPr^6oXyJFd}`=AchпU! 1|ʘ3,3ktu41Fͽ]`B`dX4Tт= 1T22ˤ9ĆE|6CXX[2TzL'^'CsZ,q! (6h T+jZn) q˹֑upƏ_8*lʀ Qz8w?bGgxiٷV㑾]p󥵙#<qؿZMkޯ8NM NjTk"Ʌ eX.zmV4-f0Pd,';GPH,ў,ixoR ciV8q|=S杉mʼnm+P͍ÇwcTʴl/OCJ  ^@W2 Q|"?qѽAyU/|Eԏ;He=لxoݱx.Yd?iC d̨p+,kPnԒ=Q8$-! 0  Y^q|:|5X&Һ̍ uC/kX# ;ڃ#3n^!&se/Ftv2*/f,Pa_wH FLHr!R {6: _&#R6dmp{ l2uY0128}vÌߦvb1B!%=1*V)]_9Cǒ  E+5*Ďp(8_AaH6';k5F8z˖rJhQqދ[*;ST%4ӝp9DaL7ȣIDUX- PB}&mF8&4U,Sv^1+Ϧ}/}w++C5̘HWר '}]b AOomWݠ L^gKtm~P^'z[ըk\ua1qq)cnc XM0%Kib<q4+UGVŸت{C0L rttU"# h:WDC[7|o\Xp͝F4ը7kE؅˜"9yٛԞe߀փ_yr2WnX!ňYuTkobޣ$.1B*~h5K[bat-Eٿped/S.(V2€jb.v+?@al|Cx$`t{AaֽL=о3D5x s-z{(،2ϵY?Ĝ#ǔ`Y\M.dZMqFJ/mpwpqHN,xmVW8{*]B[<xi_(ܻwa%X$(N͔T~Z)[ӡY~(neH]k2X &r${x L5Eba6s׻F ycUfi:K^Ω«C8|w0G.S7 {:XZv)4\:Ӏezg?&QEf߰P~[:w2~\۬Y&ۨmuygI`X9.L P `'zL(†S˓ cpAwz!ytοDQ,hYY&p!߶o6*=p7vBaAf_>u[D҄5]rY7^žpALFE k s7~~SC{y^|avmmz$ԀV|kW0\*Ґ@IǙKYfZso)5R*j}e9 eEyTN >Mh3%cQ_7xfrٻV4Yec`nbƁjfl^:]xcOĞ޴@q7W:&-a'?$Ç{Op-tNGXBq/g 4dC(-đwwXˬih  TM}GF:#=f;@O0;XItT8uڍA]NQ<|@Se1V_(+/5е.Ei>#;ձn_L8LXy~ HMG2,(,6 B<ިydnսD4'j0LɤEZy_WOnõ(W= /՟No{X=KIgzk=&r7u'L+EQs> dx{oO@f芄*s>PhyXNr=fO1AC,~tt1[iTr3j2=6r|V}Vpnd53*ڪ*@9{F~ W!>6bKtb߰uK~JyO|CyVۯt%D# f`jώW'C=~+G:Ǫ0onPຑApf# 4JRt-tŨj"Oѿ?ä́?p^bLEh'U) dxM!G='HX5cr焧yr/CIyJxڢl? ;; Zko9zC,( z @dkXbG꼰w&P rt}+ÿ_ęywpž-0~轆B xCj86tAQ暚+_Hzmk-9*h~# .= NC-Ȫq#t ;R&U<\w-7xfCx(FxR%1nVj5#ģ:πBB VI[+}Z ˕i0q,YQIc4x cV(_ˀP%鸆KAk{\HD9 Cl++.k(LD f<52xJZq4,\%Dxz~;;׺/P}*PD=yi. 6ƿlJwM$Cy?{P|\k}[WE |1/hܠuѦ΀}0r1"d7:`p2m|5w6nܧq&"mJ2xVrz^Q.gtzi ҧ:@Bgy,G,sqg_aU߲x;݋Q!^-1XY%dv[66: ">3sZ;31\3Wgl&R]Nz,l6@R.お+H\y&`r&[% -5)]W: <#1(#MFawsoELMM49` qNpN3C߭,ᘠ6mm7Ks ^,O"Ѽ^FEaȮ|@%4x a{-2TPDuQax|ܬ}xfƓ]p|o2X M .P^>Q"@)*;!&^bpiT`d*??dіcMgvD5jm5?Hw V:Av, g?dS$N)Du\%4aѾjmyɁ .Jˡȧ"m`  7BtOLfJwv4}XZ|޿j]Ɔ 5ڻ58(֮ϣF+mYӔţ9|0='Gc;g-Ck׷!-9LY#34:I$cBh"WEި pbgzД]rHԘ4]m#B,vP~PZ-}!e ;IUMkD) ¤6~,9͠k sNt|3K(mTt^}0)u`r ,Fڠ;(\ȬZS󑶑0EX۸^T5B?*=Tv/[(,8s(NɈwD镖<: iޅ@xx.NG+< ξňg8%?rIޕq"|WbP CU)87 B>OߥS{qI5OҬ Y[ jz;&;{Q+}6밎Q2YRKs<2mϖ.ED6 %~HKNKpGK)hE`l1$tsSw\~s @:d`7~$S"y΋|7U*%?pvɭլU-`$,alIz#[ʈ6'13oSa):ⷍw}7 &})WbPL.7vCVQVZ\!c(1u'29 F55Rcmn%§$T#%w7kN MScOek 9#vm<cB7 (&L5mdp^ AP2CGeb'O*]ƏOʼ;"t§Ĵ!` 8FPAbܥPDHsziΞxMf  SP -x8([rl`Z敏6#SKu?OR~7VeFo*dŸY΅X, j|4;зgnT¹:*G{`vz@n@E7WkkXgXQ@`hFv6tUHLCZ17'WK\k`}b!ь+iS~vzB'GnmM2T8i-f#nhPD+CR$2ig_<|QX+RcY[]p`=LPJv[/e_P$K4֬; iمa~@HJ  e ꘎@;w@̉gKޱWc ?;>0 Sa Q#R+5yt?c2Mu=m}!Nj=GT ֪\|\׉8U\UuT(9}{b+H W:$5j V.ׂ''v # ӭi3%͘8*b4p w]:dUnVáOzeH5 t̻;+[ڙ+Ɵ$;bS-/׊Yp*.OQe}w]UCGO}@#$i#mXcJl(aЏRthRӀq#dH:iĕ+Ty 9V" !_? 5]q8`p:,cԌT!=k6uzWQ*vxDry>aTΦ@S<iab2mkh J=1j"V2:uwGݯs %, R\c9T#ʞqjߞHo@h`W 9uBJ ӈ̻tXqލR čwwp6Th|>I+aӘjl |7w7bj0Zͨɩ2I߱P@X\cnڮY=:Rq=ijS Uqp 6%uN_y[; Bs< n0"z,:["ݫk1ۉߺ٥ 7y/@~ A㑀whÕeML3*="oj )L `\_f+؊ }q |$ݙT _K1-[@^T):9 d!%qa>7i"b*juZqiaDEߥ,/^E6G}!-N|w﹔%6\V_*:*8GGwmf_\̔Q+*9a ,>K98 nx[[°7;) TT9'5|LjJ][M񌈚 2U<$o d6u- 5á_=F[9)F5l܇R|Zwc)JԢyXoacJ cjE;}J-% rr{l8T5(S*J퍛 :an 涠NqHaQ= S8,Of&si81YX쨱.v#$yOd0b1owiiKGK{چMXԃeހV@+h#\x]DoV) TIk&2kx-`ÀaAFm;j},O%OoeL:hy6TjRzҭLx#G(+q<̤I3D2fd̅.9 ^!,Ald>=`+"evXںԅCwݱ1om]9-5 o!y^r6[Z8>?`V5;I`2)j GHYo0ceVTWy9Fjo]F'8q;XIIȅvY",rYLL{i P޳I6 5ZxU[I~l_nӟ(݀40//cƮ!47 ˗bdIS3d4d-)*eştahP5Cڤ(fۯjaߍa~7];qr<xqCDs&5=:I&yR`c돀A$ }eI;δlP*pvvRcGXkED5W?UVh:E EchEJ8. $Ɉ$^d"'kD2-}hlmq(8 d&_y/O3KD Fqӫ3P4 b5߾zQou.qH@:Vn& i#%2֑^cˊ=hg:p@Rٳp>Ufjw}=făT^T©o>, ug.a3.JNW UX OCI=^r><4dΝ9㭟*:ء 2bU "A'J[Rtuwb x)d_m[, dP9#6aCtTC؝ O})VU:S?'>ɄNcF^e#@y[OKk0eA32'!K#bXq@u`mQy#>6aÒ4⍟L3}6ˠ+lJPXyLkf;UjȈ qEۺDǥgمhLfCCK1hE1R,J{@n4Fܥ]A@h_!9RRߺݱ+ Pr::f& &Am-AtH ^2?r I A'jA!p|*+鉄yi cwa3V00e%qչӶsh8S3Tb8UgA ,W^@#ip 8/\M_^M-gT=1nM-gmGf5p%9\>G2'vOfR5}c. )4K >"bBkms}"AM9{j=$exI;3P,/t%Kᶌ1*Xc;`2v!g(r9F&/duM3m_ +g'.5jD>?y}U|ÿHqaT=?1S!~yL!9NJxScgڲȂlƶAMLCOJFf3QAՃjsfD+qTza_T)W2O[ gKJw9Hyݾ/LO->y(j)YD paxIO)xLQpX8gOQHCxDo@6;WYOk #1&-pS}Ҳ!?Í?^[4$F?w1N'-P1٫*,{YjpeBDž2㞈|HJ/YC:^vGPaLǯ wVªTtq@Kx1.F !A΢Lz&$qPcӊre9@_U[_3 x"ȳjtJ&?W6'_j4 ΀G>|fպߥhzO7c^ B6 `X cdԷv!)ùJ2O+{_xmȖ(*蛅\}"MjbUl?Pή/? o{эUT ʐ sT!@eW!G%!߁ax֌%,I(- _rG\#`tm;`'WbTjշ/87AVDQAy? ViW[azYo} 3n򄨯^+\c~c;E5nml t߯nfڐ9iR *b)Vũ4&%Ǝ$E6#iEUP1'OΩ9m(L23ңYYIyUA6ě^q+#2mSWCX\N'MˍRraDZp§f} x)1;v:2ockז=$ ї-15cb6hxi@fۢoi\m ɲl}/&zOjM+yu k*$P7U2փ`Yuo@Ђf)R XTxDǛP(w,UG[r/M,riK^f λxxh~W&GԲTlă !C칸sY:/뻛\pGAMS#)hdD NIT$$ {pWLIYx VlaЏ]Oka@U0LV["㇊[ :ޝdBg@gх i);E9ҕv]p^eCX@rԝocU` D-^)T )8fE抎`eit|_ԉ:Z-LTR.6芣\md )JU :a$ܟ3R8'2͘B3Iy AƆme[wFHi,7hV`˙;, "6ߧ#@h)Ϥ؟cqd|OTR%OhUT륶cgb2 /pىHt р7"/U4DR*\p9i$'+zkz& e8GtJ"\*DUfQ~S͗&q3[[j%9R­+U!] 104(Y]\q $1(m,Y؉wɲ~aů5'&⅊q!]O\>ʌ^`Iȉj  "&ɿ~64ٮ&3\H01Tyr=@O:Bwv=eUHfԹqE1Yћܶa.D ~wN)aXqx4O 6~)A@|OGkhZ_$E5$ǫb~y:1Nk\+HQ0u#s2aD"^-^ 򍥲Eh 74YC/Gm|'OA2"G1lc_HF?7ٟ~LYj~ƋE3M3J_^fwV^҄Up,AL7"Bv憾r#*ڡ 'am$C:=3@嘊&ix9Vᒽ#Ejƅ81ņ D~ʺk(uy/Yr = Z.{ˁ; 2ՕsEfh!肢iYCyv4|8, JiFć?0!>P۩C Q|L ]ơv豅ũN'q7yjR`-!+[>N:ѤvTuR'I)35 Nu!7p{uot-&-@3FiKgLUn_qw=׃o/*н}Ig ?s9zy!^1aE7\IY5-\ADysϱy fӳPc.7O<ƾ=r씉'ld"FdոH6CI`Ĥ٘Oz~wiuRUG ڭ`R?[g+p_/쩨8Č[;BFǐ}5˾B+BhZ=r?wrnȽ,LJ-f!ﶦ$RT6=G,%^A{O vv&q"n'-Pqpc- mf +Lв>vƺT7>+&$*ˉ:Ok]Il΄,W96_5!^~sUn[5u<7v?`Gf}\,ۼ>|whYFGJQnf@|Vp|I<QZN/tQcg10 *8,<3cmWOD8Yc@*QipIxGBRO_+ww).`:⊢ezx kΕI{nc|* Q>(4B#C^xcλenr7#F(CmukC*§2ɽ|˂dp+s~pP_13%EU;Z +}'#qn@unq v(aw5,Lmu+DB-u-u 0XBQ"+>F)U?oqŽqv%hh4g,^Z{}nO1/Lx#EF=AQ őͪ'6Blv3QO0 5`xQ^PHng lRa(o-4~HOS[mҳy֮s?JnMə]dA`DwFΖi`%""9YRToGꑋDo3l82T:_GNjޫ]8Hފ^[S{*FQNՔ~QDs>1Ly S~:SZvCʹ3ALb8vx XA.93J][7B!'3 o#nTBiH&F ֶ$S j)3z@ly$S@ 䧺Ie|l(,Qsa(;CG$ HT1gD1cD 1C #k՟\H0[C;S'=96 <mXmpsGY5Z 2M菤 O}ri R:b]YC9*"b{_Sͺ2K%|٦A #9(WzxJP>TTgcm~+#}y}rWWb .U]RԷՊtL^'R~ |ؾd:s'}#9`PiFG~{.5vG )d:o{ܼ9gC7%Kp^DJW6TRi߰z=yGwζrwG4nC.j$0E\-KKQ\Ya A"i' R]6. 0L4"miul) | h]^8.Wr~:HcFYa#Ua4=Ȁps)ؕw6ƾ#8X wT#'b@7 ]0-QMVg`{Rɽӊ\}m[\%jQ"lz0ؗV}3GP7CMikixjae d2⿘p Bب7a~4Ik}äT%I_I^DL^!ɳ%UEr-C&֥M4iPj3;t*vY0#t=6nN i]sTsGc1t5. %;bs#Os>|k㸯+N@~~/ Dg !DaL"|ຟT:7*@5/uIƲ?^EbSAC }bչ3x>mho<TP |bo:M1!_c>ƪbA=JV{̋ʊ)0oOK? C1>BzYtzwqMpGtciz ߞW&yq0/S }t-X_҇ն^PaFLxU٭>.֣+`z$FфԾ}s.߻% Pxk^6kD#T'$C~A@1:$ ]PN\uǶ\+۰P-AM+q?J ].d8ӱ:'au.[w!n؝z| 4,c}Hn~F])qVwMX%I> FfRS/Kaٶӈ2RUv(,zа=+ >t7'%S_B l#P|\%[>,gmSj6=:mq+SUp?J9p(r*GX0fY8_#>RKf$Ckhmvլ8QKĨpzx) ;ʓl(5^噯ܽl`ɟ;U45uYUeuP~,*m!O[2SzJ-eQFȐ  zD"R>#wXr \P[4+P1b%wvtO3.[KO+9CMa7,8C<`U(Oݡ*:FWj Gc1,tC%u 8b?Bj*ׁ~`N$QИh=3l9%eJ.ȐkN^dQ w,;Czs5X1&1A&Dk@(zsd#d%'U\nŠQ+?a,EDwE6 '|L%‚ov6Nl aPZN˺h\4y.51Ͳ;ùqow: ܴ fkxje6D\mXikX+PÍq#Ud9U$TZgd~~,MpF YsN_2eN{ \82"נ.a/hҫΝv=0fl/ myҳI Km~"oe+)+r|Yy`\vӛju&uo4#K^ N T+q;׬'I =Lb77Ru [/̩kJ۾DhAxnwO0_m< ;! xhXY dQhŵ0mOЋ-xQETWwF3]Kʫ sոǃHSb4Lw\(RNg똲D&EI-83U:D֐Rrra~](u˳OGDyNx"?beS3L0Ic `,佀NLdfr"Ax]jܴlpR6/àJ x4 _ z݋ZQA,@?0RFm/-,^ }G :F~SJ)Zy9lRT!BE2Kl fpKvKr@Ƹ^<d *ʸia vUZ*!:2bZ&KH VCY( ]9y,̜DG9sDu8FI6Q{5Q$%Ggcte ّl}MF)n86xAlD^"rB\`#5=sa'"wΜ#$ʾx Wd<|w~Wǣz*X}75tp ,݀,ׁ21'7uT PJZ;8`[Hb\ `˿ƣ>qxK A6xv .Jz6:4 v D+'cМI\ir(UIH6"'F #Ӿ6Ju, N*k1*79s܂%O$N=["1⟶fUFiN=h0DdFVzcE4 k Lg')fI=r^ёdUZ띎yYQ>o9gWIc`qmM3Oɵ]/ATfdd4)N)dw#'}I 6|_RV0T8 y|5"EU05$ XČG"Ʉ:914R!R,A ڃzᣔS]݃\Gg/q+9GOy *@#P[& ,;賍$dzJzZv,2U |m$dV]N:&u@f#$!hBǜ+W2(+|CC K/HR󃵆q9X"'(A']1e_vzTx cMNHS=x_iyV0RGE@[OV9*|~LًԉֹR&$4cb;pF_C 2D5z$6śN y)U/A:A_vg*P3\sn-"T)W8F-QlƛBL%= VNspC-螺x;+Z6;3V6j/&>2l ]OIe&+6dӸ֧|Gluvlܯ4J\ _,2D+jM4y+^xԨKG _3y]jsavjՏX]QЧPʬ}KQc$!4[ԞABbFoynFi/ EXih5`'1B4w/˸u( !"SX)p:$y2VhSm8rozҀep YiE@+AMDJ q56hNĠn(ufbl2,zd=4 ]#$cƳFs 8h{B3`GSVBM ?pu8HKGoD \ :`ZQ5"z{ܕJls؈THocs>KrdvQt?(ȓ sEwJA9I3d ނOƐU2|uYR>4J!yW9t.+vr)V R_= 8Rw!CV9ԦkSF] Ψ:V߸CCVB-j235Qo2BG˼sاd,6o#=3M%u=EHr mKaIi D.da=:V;eh-ǻ<ľ R 92 JD}uk]y픕iQN5T=})G &mgrB2҆胠((f ^o֘gGh?o3ei_UrBt$/tAq72<\{]p Gs-DXۇ0x&ו4iip  ][dP|Hf"-(xDeSE^UNF@7, sN-eh Vژգ,/Xmla"k~WBQݩJ{z*WPg2C&L2*!ӗeR\UZY7y]mV^e6-};y$s ϧ©Q `%vơ^Jrj$a "E=5y .32qxnh7&T21aӋ)3[قYf-H', Ps%%&=*8eW-wjGG#9]h^=h=pw0LGLIٌF Ss#_nGs[ AN 6_iM| 9vm]7ߑTD' o%5UMa_i+,o 윅#u ŕ,an$V9Fsy]W{C6DP?-1 {aR.nh *rØ1jgE>e9]mOCWUlaxK+s!/ Qt,+VbY}w8# G`\pɘzN&rdܘ\o(oN{Tn?o]UgU.5kr%FУE?u ?>ߧY{uh,({;3—o'S[#e{^2FeE:ߡ_B7ϿgHqo%ʍTE+!I(g-Oّ =YB=:qR>v_W$B,4gGr1wܬ {☟:+w^7`d|CznזnJ~)uX1ѡj2߼L10|a(*Գ_f⍿[$#/eAM8%pt`{W<&4&Ձ7y.w TxsNߒS!ؔTPFF.;niVNq'z$;ܬqT<&,"6 9&GSMB'FgV j&M|ZpqZ`'4ڲymrְAb$D\Y{ ܜ¶TcF/'M'J-5 7d|dgƫQr;װcA1!x*-ӁqC3D߼Nm4 dX)(nVk>Rm}ַ^f+q|s˾6Y/xyٸ#(U  F@wuCq]H@bdtxkHVQ^,љVEa=|~OO oVn75B2PN8cᶌ7i3NW')[lީ֣!apaAp'\(q]s-# E~O"a±3hIzM~X8 L-Qg1^bi]YC< ðlKObMSV*VPHC:`dSՄ93 qX $~R05*yq, n4:S9a&j [;Kv)j -r|dɼ^*pݵFK{̼ pvߑmQEV}cw5{K+@{8 Btc]+RE^ lad`?W6mX\Gteط.fG2 ߷m!2J{YV#%b| z%ռ LXi(+%qjGQ6pQbZn^'Lm?E*&LUPktp̹\t>E%z}2Ԏvd߬\%%N 7խSêe%X!g٬fe}U@>6ۘs4tߖz[YjXIO;s(xt7t 7 (u>pc )ʽ+|yEf&PE)Dkr{?T+d"7_IAB<ӛ~AcRvٱ7ϵTۼ{٧W"Y|ԊuYP:բvl\ A4f!OCv/2<;t8%O{7[RJߏ~ 6Mn'4ԬI7W1^Ųր!ph$GSs|sxlxˏEBO*?ȩ,޷&YA骔{0dQ!hz6Xψ6r)XMϟYFR;x uM= lC%m,Rs&^r' b(ȃI 46_0?{NOvIfD9=ilh(;0By%5yDHXn-Q$#bA"SaMTNi"<@ ]/FWJHiX:|]'b_X$ /nbHمm2ګ-JB_ |' ܗ"8!(v`N+q(CV0 Q 8erϚ\3փJ2JםL[zY3`xKXG5=kg_0Uu<7ZH͒f/aNa$(Z ,a쇃mX8q Hue-S> _3Jy73+~NNW-]{ؔ !5+䈫?mHWmc52F~@h^U|@(-xOm}R qfݟ*4Wsqc֯тxUTDq] 9IBbG$_/-..{UG5 p껋t@Aks (*n}"ԮZn&BGRgوGq;rtcNb \0$Ș!eL8o J6֑Ikdl  3/}YZqZNχ.0ЪBfmu Z}G UK{? vPSLELZԭь%()qOJ!Ohw~ '8{i!? bu==9Qߏ>ʀW+s}JUF@X/恝l¼A)k'EKeJgA5"^2-4^KaRSinL?Bb'eNkNBvK_x,:,.k9g+IroZpEw6qs0a)9M! ]0i6AoN.)~m__&J^f!]1ma-#u#1H6@K "ن:>R*4L6bș"y~ YZ