libfwupdplugin1-1.5.8-150300.3.5.1 >  A bp9|KZ,tQyE䂁3bzǭUD"ac79v |BJYXTSF$Wo1;x"GO: N?QvcX~R :R+~*r_֝ū+GR}f>CewN:jibbƶ^' ?fc.CcRsaكot ZwT=>M?!64.DyJ^`[W'ӆIhL w^59bf4c855058d3d1fd7f1dace2cddf05801908a612fbb7e5717434cc469fa873d2fd764a43097d41de4ddb7794b89c29296b99fafTbp9|tU_ Ẓ:-mbq!gU0k*.U]CYJJmcWSh96{@?'#E%+gJˌ;3_*I-5/ B3RQE4N>Vg\rI~?ۂ&L{z{nJzL$L.~ $P$XTs{p9q+ge1P,D05ImhE̤Ijn ^ rt[f8 p>p@9?9d % V) ?Pcit|     (07 l? h?C?(8R9R:R>2b@2qF2G2H2I2X27Y37\3]3^4b4 c4d5Ie5Nf5Ql5Su5hv5pw6x6y6$z88889Clibfwupdplugin11.5.8150300.3.5.1Allow session software to update device firmwarefwupd is a daemon to allows session software to update device firmware on the local machine.bcabernet SUSE Linux Enterprise 15SUSE LLC GPL-2.0-or-later AND LGPL-2.1-or-laterhttps://www.suse.com/System/Librarieshttps://fwupd.org/linuxppc64le bbf29e2e6626351e7ad9940a9d48219a1978e48d572c9d8d753b6ee715f18be2edlibfwupdplugin.so.1.0.0rootrootrootrootfwupd-1.5.8-150300.3.5.1.src.rpmlibfwupdplugin.so.1()(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.1.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.3.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.6.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.7.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.7.2)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.8.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.9.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.9.3)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.9.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.9.7)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_0.9.8)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.2)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.3)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.4)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.6)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.7)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.8)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.0.9)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.1.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.1.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.1.2)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.2.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.2.2)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.2.4)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.2.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.2.6)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.2.9)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.2)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.3)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.4)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.6)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.8)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.3.9)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.4.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.4.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.4.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.4.6)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.4.7)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.0)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.1)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.2)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.3)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.4)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.5)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.6)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.7)(64bit)libfwupdplugin.so.1(LIBFWUPDPLUGIN_1.5.8)(64bit)libfwupdplugin1libfwupdplugin1(ppc-64) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    /sbin/ldconfig/sbin/ldconfigfwupdlibarchive.so.13()(64bit)libc.so.6()(64bit)libc.so.6(GLIBC_2.17)(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.6)(64bit)libfwupd.so.2(LIBFWUPD_1.3.7)(64bit)libfwupd.so.2(LIBFWUPD_1.4.0)(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)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.5)(64bit)libgusb.so.2(LIBGUSB_0.2.8)(64bit)libgusb.so.2(LIBGUSB_0.3.1)(64bit)libjcat.so.1()(64bit)libjcat.so.1(LIBJCAT_0.1.0)(64bit)libpthread.so.0()(64bit)libpthread.so.0(GLIBC_2.17)(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.13)(64bit)libxmlb.so.2(LIBXMLB_0.1.15)(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)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)1.5.83.0.4-14.6.0-14.0-15.2-14.14.3aZ@`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.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 (e.g. NVMe-over-Fabrics) when probing. (bsc#1193921)- 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/ldconfigcabernet 16551083491.5.8-150300.3.5.11.5.8-150300.3.5.1libfwupdplugin.so.1libfwupdplugin.so.1.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:Maintenance:24641/SUSE_SLE-15-SP3_Update/0e9319e520ef939ad798c08e5b308527-fwupd.SUSE_SLE-15-SP3_Updatecpioxz5ppc64le-suse-linuxELF 64-bit LSB shared object, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, BuildID[sha1]=541d44847ff5e7d78608610af7e1d4d228c6391d, 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/P0P0P1P1P2P2P3P3P4P4PR.R0RR RRRR,R)R+R(R*R'R7R4R8R6R:R3R9R2R5RRRRRR RR RR RRRRRR R RRRRRR1R!R$R"R-R&R%R#RRR/RZdM)}CY8]éutf-895eefd9b5a1f10f2efe40fb44ae658234eef562890526c6e09e99ea5ef2a0e31?7zXZ !t/ ] cr$x#Fmpiur@7hj `/aJԣS ^3L qwsLST/eɆ}b"tmh:8}p;WJu:};pO ("E(a;i1xlS D5UN/@/h,n<ɷ3w]f^ al`N[`iFX_|-@⇿F؎@;F屽)T=9w!]IN8&vHሑCwYL`XRD'Y'BD*]13y^ ;` 9; ZKl|~aI܂O#4 kEIu?!H*oNVm :–LZV|k,<)w~L\WLo8;4UҭMPEw]!;p"錸!0RadZ$g}2ʼn+VN̔C Ha#3Td8?]̏&ʁ{$( Eʴy'+  i9KV65(q[Rȧf(^i'lt# \̎W^IKJgȃF򮄧LK=|vlO׆VFwT+ƈ4YI|\j.2͝+kcG{{]@cWA,s9j[暚+>ymtؙ/d_m"-OvԨvx9yߊNنk=JlM$֙lms< .Z@XQIz}U8hVk? 0f+'!+R{%iĠ^J0Q&Pz| t5 G ;՚ڃDǼ(MW2CFˉ+n?zst3CTJ%ǭ Ҩ%7o]Xž"`MMh +$_R^JTc4e&f}'nF ܴXج_mZ*)dh@t,=ciS*蹒bw>8^InjLrL*-Opr5gnZjܸ/6[b[7 >Mj{l47v""" u$װ'I=j6Q3D\<50S=3 <;_>^g }{[[G;*s,H 7n){kFzK}fG A+1/ChH?va+{zaV>")Er55M6Y;e#Pqo}s? c[,lsIC(YN(8nnITR[IUIlobڬxLnmk5'㉴( 5\)+pMI5ydLDE垳D- uoڠnlJJ(>t?q=ުR뢥!Hc*gp .EF`6΂K;еLPhy}ohPh/Fss۽!Dη]WW/3su.It{|(JK;a vXL0  3Jyg"(3?,xohxg)rG DG=x00n-X}xvwe-bMu|[ tTbO90xiNnx'ŎOHAI!7] $R1zK}t^:n}AC, hj`_;ѹX]kk}PVy5fLL?q73 /BeNahTĻo$=R?3W&]33?l&:=#8X,YCngI~z3`n"PB g+݌%Ĝїpf*kO+1/^>kg?Y 7)È;` Y;#*E|9EOpw P4- Ay{>:nyj:R4=|ϯaIE*sAKSZ 3-?|Ŭ;ބʅl~ ~V)3eqU?A^{5 U)e3b48<~dV,%:d. J@k(q (F7>OdkY/ЛKq-:2!HЕa>cs_ D -B,@|GsK&ImbD)w$t\PJ(D[}R^ \TXnpĜxL(,쿗B^ŀ.ՙm$=?G`gJ7Fugi0}F ϑV'K l8WÆ nzf{=7 y&yaNhS)%O~ƍ8u3ПG3u4,}R]<q H>),8ЏdQߤ̷> 1a fd9D(q/lGCeL8ڑҼ7^\RsOQ!3=~pK2wG9J?&X(#7JUL{AG_R@t_@.eMkKVqNNEƗ<l78/ *IL@Pg/g#'u"ނ9nςZ[~&_韆DA |A+RK-RJ[[5$Ť9&86(Kf19,HI@1NI}-kf8Lu,Rh뉠 Q/cw軚@ijʂlG ٞosȐ_Ue!}b.E+ zeau)Bf/ƶRB̝^?_쒃Ҵv8:oj,XT3py+~j2s *y lv?+ZjO պ&l 45{`iQǕ(lV>ʜ_Wje[(M|$O],/t9ZeBmgCa ' \\/H[E-qf-쒫9:k!5hΓr8k:~Һ'sȤ ☲W󰺃3 3ÊK`3%`pJ)r$=W,Ow:Ci$7c5 _=;MfwjĘ!xeQ|tH㌘!*IDO ȊJPd?8*b[ L)0IHN%2i68"LԨΓPeby6Dyv =ǰg(Oeku|n+'p:ƪEwI\e պ܊ɿ/c &*D·wVh4͋dzieylÚyDAӃPɀٞS[$+ZNJuQ6: PVw֑QI$9N{\( G^[{ 9uYN=jĺ,TLK~Ha\;>6B+f+:N??6lX;\ w,А*89z~1Qrg܌ ~f2}ddž3_~>K @#cRW>-t݁ڸ1bW2_NԎ=nИ0~Vsb0/m)zPت[:%Sʷ"ђ+6ly;ɯ%h&}+v!,*pQe#*͒<$#rxlht62󄙏2F+Z`썷BSi#(iQD\isX :Q|jzg:moQN,?:q&Q=ow%[*|PUO"8+lItò<Ƃ11?S eS_a]P%D'HE76VCCr w߄`m{ZKlVr񔭼q𑊞#4Cb IΡ>C7Y/> Y3c&?kL<`^;HG;R;,L "Lmվ.8_M9Ki$[n>w8,iUbL 1'<ԣҨhi7u#dSEϴ# C8P++AӶvsz\44<^Ɖ.Ad.1l+C졆XFkTt1]s=5HTS'IO bcւfNmM13VꜽYߤs.UPe-ݗb]cr?fpu09[p)g4ἌoG}a`VE琢!?)=O"n൙јV^14x$Z* j\mV>}X~M%f *IIb5Dm[rQ4AM%0UХMrFه,qѦH$u2b)9mr?o"e&$A)y;eTSQ931;|%LBLdh>b՛^ #5ED_b8=JN/IFe=' _k_AT UR? if\vKR["ڀLJ ؍J{M>壝H*[#;S!&s m1STڒtTiN1R-;[X#w@RtZDpÐuβ#vDK)' ]DC`PoCVN*SFﻤܝZ{^]U#xŭisG- Uba7Pan'|poDU+!AßZniD߀'jğpS%iH?Hu>~ ՊU3@xKqhJuWjxaʴQ,:-ZYz#O1@en9  (wa@0!qӉe{PKIT?ay*<_ϣ~MMc:˿9OnQY 13_ ϛaz7( FE "V5:}܁fnd Yk,X+t0%by寽4#]fC޶8,5`dU1>+XfEY;y]:?`K+|AHvMn@xV*}xŚ<m+[7"FdW9 `CsQ?*s3Wf&VH?N;#jˊV73;>&ڋW]̾bsڀ@*r(B-XĠ7IT g0tA42^YNKrvr;uMvf1GEs3y۲؊nDH_Iud\z[yj&6S-0<3 S<fqE3tD  -T>nЖ M]XiB#i*kRAL9' cDŽ> #W@<=t֗j6A(J5*'כm.onKv A T!a:ѐCc~o'iRp*0BM*]^`HT!qYrdgwM+}أjf`q!.9  G {[܉>ݛynj:bCG.& |ƐcIpxxHWf+2fFXCdE0h&ߵJIS8xJ*"[M}{si"V0T]cnAxگN [9 !R 4ǚN.fc VJB\3Y= ϳI۠e&59mR! cޏ_CUB|ݣX,MMvnS~`d#NI-i"Mk&C_ks cUFŝL zuۆO-t}oX2.rr8@g$)H4 CԮ'|A pJ~qFj8NU7daU Fe]MT` ^Ywq5GcږtfM]Gքg#\F@62$Ȩ^ 5SV+͸.x$J0RH&U}Cx ݭ·cS%𿵶s秬w4>V U9޾2`Aqp__!{|*\iy3+N;]QHnxT{gOBҐҤ= ]r>Dh$ߚߛ8ғ&WXP͚6:R%X樘htpoaOXݧNכj:5E̿ΐ8:.mD t81Gjl<1"{uww *aB}Y!ZF~%"1Ԋ۞SV +24J}Qg5bN3bZJXl7߷`ŽF!R*γAjŽS}bQ{B; (w),Wfax#ʣ$&MPkxLRǯγ%1OΡC~ nZʷƄb.Y2dgtAL4|R{ 3ٞK,LDbnJv) rGnSq!`)-^j@ Fu6OP* f1'zgoލXi:VݷhO+IR$ԛL8ae -ԘDLS[DeNϘuIʲBM.set|]U}Y`h^-Ne&@EVn&)Iw2Ӊ^=eP@I]G#^ظ@=r3ldu^dАE"M`p/v5PZk+3腊|# :|(ӚwL~ׯ},'9:0Mz9Forol6n~*E>{K M\u>dw#s|7okkFufp2 ÙxmLezTA\ʣgT4MmuC1%a".=ZPޫ(aAP]M+ ܲT% Q HArViy6I'~"(}hυhOfy_JV5?x5Q*5`M_s!/9|9L_SbN=劷ݜΗ dq/O2ww?aRY,؄wvyhD0SѴm1Sj93mzSʮ6sP{ء_Ǥrw]!HX=ң[˰HK@2zѹ2pTn\ۦ#_/ *WYXhUT!㬢Wp zRՊ#C!d}6D4)Kv֑О\("IpǏ؊u-44/b!7aX^h6񆡀@B* !.YF YEmP^ˆYp(uh4!wv6zw{ 6-@2 "]16O dp0».Ul6*;9idg ?.7?mo(2McҎ`IOne7Qn;s(>K @3߁bi 50#^y4XBQ.j0ÿ/ִN }Z7* _y޵K[zt̐y 9Bnj$ػ>.tJsQ"'T 8'vK!RPcXP,6}g߫*y{txckl̩c"\f^峳P{ewzںV:fx {>fN ܌ű@:(gٶR5^\MpKF[ b+'1(QDU}B+EK'IX 3J̓rݎ&"y#Lpa_F.8i!7[Is?4.@ #חF8ۄW)Xrx/؁}sw8,}ͱ\$?㠏Sq:X(ッ<8@X}{vZ\:)fƥϕ~oyRߙڝo_'qP_JME(MFQ5Eꑀ&O އœ;xe5Lbr?]`.HUNuR} (U,e$2Qцmtt4!F/uHO>[ލg=򱫢qŭS߹Ƨ˭T^lu/)BhFDm{ 6)r]OuhEUI}Q0-Ow~1[1BdK6pſPiWcD Vi㖼%"gvv8XtYuJ[TA,ok+7yZP V@gw* %_M1?̜}O6wL-#ۻ)]BcKl>0}N]7٨C \q"oOu+Jil[ J{su,z?hEXʪ L1/Rzާ]H0Mّ \c@W|~"FG jD I m?8h69]d1Jmr߀e-DZ5^1Vso{O~N#eD?"/v&PM3?=xw(&`.]bil>_ 4[N_qI*k4nm]n$T%G,jM-9~n剐zF!.)B<"i9!z vX#nϪ-OԊvQ و >mMrauԢXjDY@D(DmŬ[RZZ%ԨoP !%S`RHX)J=ś2 Vs0~ a~TJazhN'=J ,AvDqܯ MFL ,-2% V%'ҁ@-;[;f ߸F=.WZB![(YHrtGR.dPXMʀED qm7+7CR^Gק4VG~t5dpV]Wx_ `.fzct*m M 8 8SlM};x.:w{ OL.?,]T)etRE((@RndJvh ;aŃK5&Ɏuv)B_6pJܗp5Z==4c0SfF1u!]V_ i 絳r-7. H)?Wao۳/:'ᗶ1oН$v&)҈apR BI$ J:cҊHHV!$ nZ_h؅@l O !F+ ?3;sZ3 Y˴uUj,V@9m~.Z1ܙf@BNVLLёP /2'r؊%5M0;ʖ'kPEj!4a- iV.˝V3;ZCoÔ8P| bf+i \_ȅ1&hk S MQ)&m'R ^3mgV[x62lS7%\x֡n-4 }n <=oԬ[G>2KWlk]7qSKepaLc([ r%| P^_!Z?;n"9%)8Sԗ-OeX7e-^E%1 nܳ[3 Ϲ^ pgމ7bmpJB<K`9㖴 ?,JZGV*5yMcvcW/hRN0onJ9BL̰ ' 2` *6αLX뻽Uב*hʶΚvb[D7y7s, 2s5SZ3Q;Az8}9ˠ\S|/RAYMa&2w$_sTTibXɉ`>l)OcNւߡ*C͍K9?[eh^aJDݑ|N9iJ3|F.}>עV┸ʖVyJ<Èy6: &b ;Kcłvii:p62=kϾ ;!rjMSi92Ùݜ_) 2G26Gs}anyB[!5,i4Y\S 6I|6*9¥YG͙cׅbMol۞?"t8=E캊+yDfX nB^xv1e@Kr]ޱaXD;1NXb[?fPWiy BE}dK ߠ(h`r~˷#A$fcW &sed SݤIٯdP .RX?>wxA,~1Co?G8Da}R0; +Ј?[qk6t/PXUamf{4t"RFrk%j$ vŵ 2@a}D sUn wiD W5^;&% pC@Zpx}$"T⢚)KOQ%,:ĊL6EԤ۩Iav]RZP\6Mhe^JY9RM+^e~t\s>gBs8`#gLJChpL9@pXcC[9{3uBm7vDy53Mu.5?+fѸȗ3_BÐ\' p*a(knK@˶#OURPZ'Jv`)ԅ} ȹ!H ? \CNfM0f:j'/?_nw,z+m)VYMt9i3:FhƃqL`,$œ#9Hz: Ԋ$Z.1Os:Nj7!Q5͏Asgү AjWygХ&w׵%-vTZ :>?5 {/v*ά7;V^0% @77#űEQiƚ)LXmL=x]Q6xӍF`]qiAd(xԪjwWgIh;{RkuA&0JԖ-i>rjq^7O`uyMr?fȊpඓ#8mde|-X-Kܵ*@ui6'E<[[&5TXզŬ|Kn`ſj= OLp#!3ܢ}bWC/ftze9*jzpř_f?ד(&eၱ6Y fF4P?O>>xuy$MW{mܠоFMZ]o n+((Ռ cf}};}sf  |`Xy6,N g^}jٵ;]9)S[:"(#f6\Sdǀ~Y>)O G+asדhnf EAhT|`Zº*u-?XZTlQcw@蚇 WqZb:ɾ5) -%)H/,J5 `NaJ3Fo}(gE.$l^^k+Ȅe"V]m\o,Ʉ.yFޥf*2J O ,=PA '2" 3+G2(B,H]yΎ)H GJv%@g3܁H45C|\; 5Ne'V~zR>$ 5E Ñ}}ũ4`p%ڍ ?FOsd1YjREy#wq`h˱f4j#u0o 4t ۻ57W@p L U8J |NcAZytIHd<\T9By@Յ!|#PR?ֵtfC]#HE$ Y-$bKZT? atі6ZNo*rc'1C Q c aIGMo8WG:}J3U.,r&8FqT8}d C3|\)!_89H E2 nu(7 dyГUi^a[+{|^!k9BZJtu"㷑#,1G[PY^04B¿q ~I뽋P_, @?vjsD0IZRR *FeL^] .Nܸ5ax!'k8Ʋtp]ȖȜd_Gո'lL&଼$.Hx>hh Ut+taapflt|XDf DwHwgRzI_HzPp8 ս4.?+/>ZGU+q7~}"(خfZt(:h< ɒH4oT;!1)&u67{OG|"< 0R"Lm Y~w|JA*6j}ĴUsr3a˜PUzl1-[H'as3~N{)ZRQkC ->}1CP7 FY*n*Q߁4|>QIh4EXZ0G"?HO0jbn T7&jt2q"uj?-ca&Y>=3XܯBt\ ڙ|}9rt] ( /1w+#`rAɈYnY\M/Ң(絈e?Pck@qexGot/unq"cMEE؉kĬmtp2]|wӢ?Xhy0|mcxl)_H\.K\4oPPx )-ŭS0$1Dth'Stf~ׇ:me`HLr%KJrV]g2E5_s6ਭdn # kU_)!oϻ@nf!n #{Ӈ:oj܁ע$J-VH=S7&$@&H^Ay/obϼ9 O~+ i; Idh_Fap+ᗢx,L[i.e5Xqŧa3($Ufe7깱OjfL*E:TCZv >K)N)͊#ɮI:b`}?8z͖M o p\o2];NZ;%.KqSgz۫-AM^J','9H+ T3"<u  bzM2$YSQHo?:4UME<zGS JM% vlɭAc ɉw}UM#lv=U2g&!$xBtfΒI<>Hly_k.yG$UgPXB_H j Ԗ^V6B؄s=2\-(K] J]+HŭM|e@b>2{Ë։7$)^w-ބ{XcqE\H;YVʲyzK0Z(<3c6pk 8I+bp7ZTߢB8s}!}Es}4bǦw >IQix D4i,,Z?gbxJ9-}j\'A;:Š0ޛmy2vs#j ,yХЦh];̙7׋m`lHʚIzo-󁷐(EݖJ}y斺O}ib?\Ƿ81>uKdhj6&-'=[wujsB(@Q]hT*nlkMҩ/b0n]4=#iŊ.FA.lGa z/ 8J]GפǜDgɋd&J:G&qsa1~z堻)ϐYrþ/ 3Iަr :ɭ E䘛iykE@w5:'kg3vH{w@Z5Ω$h~Vzd$!%tf= +ﱑ"4o;ho4 c`+hW)->NlDI+ +y*14p Y@/GF1-Tv28eb7ytN4%+L5|kޙx(ʡlkW.k nU@݋MjN=eG:"Ls#Z4AQ.b=u+VD@֑!{ x W\g[\s,|,4g l)8?M)I.{N!2jO6(q䇫)ߡ0}+p/Ol2SdeT[ݷ^h8k ASFd4(K%$^:ž+zjBgBLgcD9KPWn\|bjEJ8Sȳb?40Cb.*ham7p}P+"'>%DzMD,ܜ4AF2qkaF_L0u7h-7H]B`&ހKhntRBT^I}xLM2dyvǿYf~ML?o43&;tb3B`DT2̲KcY9FXX)C #[U9Cbu8z.m cݯ soRT~9;xB2Zf(h)pVb^'TR}(=į6eSӋsR&Fb*EkXy`w䮁R4`xHo[8&M.X2֎h;r.h3DmavF!sIU& & [weƌ^ Qұ9(\)ܞQ'Oj~9 U7ͳ"!&%;U@=@_f.1;& XA$ގdӞHO$%3v}leGљՊmʠ7^ޮn٠$l} fH_mbPuq ̫(o<%E[:RѺgTCx*Ƞ;SYvg yTx SpjVfU đ%In˔2ʬ0 suU a59t62&d'!t @b_z5WNX*PS)YDp|0݄SY]9q@Wz+3^Գ"C5XXM 5_(6g(sT=2O,m~H!ÙcWÅ0rp 7 |is-bʒaM` ###GU0 z*ޢȔ "k ]E ԁy'V녁鲯SqglX聐& m_JNbKi=-,BMGv{k'sY fхm\ mz|A|g y4m'1azy.WWMn1.q&ނpc6]taSRX!8l^,6:(@s"7~&aަ(5!o,b.YՒQ"ZSpLb5ל9Xm;-P֗:GHa Mb}qqӶ35;} 0AIPG7yӲR%p14Gc,]OjXJo-w?Iʼn!;I/- ׋nm(SfAK)h޹C~1D1bTayJ]\Z+VMӮ~C ]'Z=Ym77AC~xg~~:r}C &=E3}_5tbG} WΕl\*䉇l/?xl`&hrb'%PW}i\8׶~ՕZ֢ުǛnFfkhqK(9G%HD}r;Xw7S{z|a bF׫OSIB%!ocV˞\ }K) ;Z̡adx4i 4s?h'PçL s[нQfSNerz;0W`k!o<'ojR9{ďhFw(gW)g_ \\MR9 +VͬDL%'> mć"+dVGqNڎ!FəCn[OrV\Vu4V 5Ac Cg($T[IpQpB{6FZZ~]uoRMkxY&1sx@*ëyMGl #LM;*V\NBMԟ!<۵%q?>n˅̈́ܕ^#<:cq75^dk=A#Fo jꛮ;NFL j>OCEXX)Bl=a)z(?,0"E.ɸ7u۰/G{?2D&Yt(Ґ*WIvK* BRVތ2Y! 4_ MیvLL [4푖z#2 ì: 2/#;yO#Do< M e2P,2i(i)V+2/dC=4FKW:bAѤ#Hde"R_֯mlK>dD^-u)ff6"U~̐ \@ ]OLtsԤ9$8"88XMdVot)Si ,X(_􀯀5 2Q>̓멓I/>U'#TzL7KT/iK;E8iAn'ܡdnZQŸZw4~59h?U)ķLW/&(1g<2 d B5 DN1^>a@3-,di _cLk=q=$c[;Lp~Kp71y''/Z"8acam\$6 |H-Rs1ztNּX8}̰S3r*7^z6L ^ ~P*[>bؓ5HvKPAq?iǶh-G4d)eKphHm|_KRh+*^j2nȓ!ޓQ,ZFy{[->0l0 Zpq06~[IĽ{C(ROEgIQ,2d8_20'ZI w>ny}3%w(A'bRb˽-/g:Vnҙ+Gĩ~BĚc]#B~X Om/;~ݘ$JSmCArP 7(eBJuٗE0!T!2>`V'sE}6RVM#BppGG!%<^G90; b@"st-{]m7cN_gVM =(\_3U8ХDƌKl,] |o&yqw> _z`_*r@HX]]tNٲH8?\wÓ:s,"<ImY:tDz77(7Ѣy Z3<̕"dTgW4jDR=srFeݬV{aEv hi03Mi݀/uuZz'GUT) (ƾZ U?{3؃); 7ebC9w{`ly0|8ď))3ׅ7ӆq%iH`&QċU\r< a{djn <}@PJ VLT*Bfc4Zv| {VAd2>}I{Ѵ *n;msQ&oy&rO<(8J)EJDZ)2fN-F]UNt$4=d7jɲM] *'hHVr,Wھ+$]SwSKeR>i,TَK3RRLsXhƏ!YLE7!a9^ݞ&kW.,F1rtr4A&h=RV) &53#D,dgZcj3$>QiI>BUq |ԵvhѦh@Ayyv;=;kdpjdW)]yr@@ QˇQ?yWg6iZ\7?U2B]baaGSȀAGPyhpFPBݓs߈f=e\/%EK9ϭ$E*Z`R('ŜDT& Wtl!xaIupW9C7z21?pbR= c.8%'FE6gF&]#Kk.H\ih89i/Sk1l-ìO.Ųk+ceUw YEhHH/ u`@LE8`=󴻰jd dRM_Y'K$ d Sˎ;ӗCΜ-Q~7mKie;pql45D3흞W$ /re Rѭ`1wݕ9B?<*C)XZbvdLlr.F.p抃ZEd6kJ~w5Ql*6}225-NK-zfrrd-ULE2X71*QjFb؉e%شr+GKx>INMt`ŌTB' %knAkLwzu*VJ6 ׮2f)e庳W{&O%=XUQkqKBtK1:0 |=de(,$!BUY{_v}pqb II:$hԗ2wˀ{-G(KJBol`gtAqe{gf D]&}{B o>ç,WF>B?cM&ZC>o$(.K\mrMxTϰ1]gg<(x/nCڂ'#2aל Ѵ_둭! /lsaKh\O^J'MMݻ.﯋_?֍/Z/keEiA8|/E߭MɄd2@_#zV*GK ўb!U Zv>J$Zz" .+}O~z YOW@@ot,Q,vn͑¯xwؗfSfc쁌-XZeG!.c{*Ewl&[S $N憢g zT\͈?Χ׀ x=e[eKzZ{jS182뫭[V9XۅPYܛ`st/}i/Q Ӥ bCAM)vM)YiRC%ThL9o'HﲮM<}6Ҥ..7[-5P!jP!`bnPOi+JV/E1V-K)^~reegsئodsgV\٨y24UEUGZj)5z8YYϣQǓc 1L)[vhL±8_z :-:mo,xf}rxSJ~{=pӟ50*yY30à{=W]Em^LҠح?}CCWR QHAR\4qdAWTYcrk%TŬ\s0\/N^qm4PͬPE#.s5jN. %*rh$aа=@{0!PYW!cW>Vc^0&mfD/t ua 4`79wwW5a_`k=(]\,Bn KT〠Q.-#kv(ު̨. t-lQ놌2VTLfp_9n%6wWqB,~D7.TLʚt}6yt3¯0jBXxfwGB!S|Qtk;y>dvل^9`۹[ppд1u[[{Ab~w$Hqbz:(y\GZm06S>_^5i6M߹_Vqk!*\Y`"'OSCJ^ "r~ʹm3ԓye!XrTrRqJz`o.nuY%͏`gvA]!P]$ A2=5NmZ |I1g\`$ҩm}lUʖ|P͟8 ۆgѮ-8lKgMW'';v&CSy1:2fYe3k:סE6tp5npe0ܢ~TaR2D4T?ԉD$Ki" վ:XR2r@KR:25,$e5TP@&TǪ*"iyjI̕r120 6V$GN bowNaWRHM Ԯ< KsPr :sdL ;cEeU8/Y)(' *Vmb0$_3.'xUA"d273"('U%"rYWOT[kᨏ K`opS" IvUr lF'*Ύ$}Ng*![&*#n$=Ŝ 2b T7D\rerYmQlwͩ ^[ 4%(zeX¼8(x:a~s\ \#/C "tP+&jNsp+YwOi5uHhUdp77Ioyc1ӟ*Qﬖб9o`3'&[`SBըW**,\߃o rU%e_AvPPgOM.,?ow;]FiJ1P,OOiU,ۦ cn)'Ǭt52_B5xYlƎHQA͟dŠL|~Ze~1H})s^.޸z%g;whs р^\W,jËb*p!EJ_̧xC򯜜~lER@|`#;(f}rvorFQ` Dk]|샢m)Y#VN-B` {H>=DC/>w, LaSFԼwC Xr RM\(L'W i?(<"'9_Io@qhv'߹6Q%ɚ=fLWJ(Ĵ !h^-]7~*J9(C͔P=6[/&v~TݴNE}Lp/ˋV# jNZjcێT~8e }YCp?9,q㬒q|: χnTCyvJnҽef@T4|HGF5&X}vt$I*} @(Xj)#K^}-9& ZB; :2G*%@%ں390nm2܄ێ}v?KbW D$2Ḭ`@;m5I0QϬTg\J a GD?nYFF;k`qv1MZ>hIe9d V{PGeCTVr3f[) W^SR󄙪PUZ;3:•u} |T(R'H9Ls`uۢ;i2f0o],ycFHou$ά= 8+RW)D鋌\2vV->#D j%,MnIuRѡ"fIl "Q^`eC,[*Og=$sEig! FCƢܰs;Ph];a-o˼JC9$9E$`[5ŴKɉXK 52 baJphLpd0 Q?r%qČxį쟬dEgaӋQz[G/!I5;hPLoW]<<فyn{LX*XPw)[zSxgBKaWTdIܜxL5k挊^'b8:O-d6X}ӰTH5ym2@Lt|؈),G{ +`42 hont%]t:]W]@@÷zB.:)X/!+**y6 WR;D A0-#3gc-"._Bn39(kY̯Uv"VX ΡqC ^rOL#,q!za"oX-KMj2z8XϋNܭ"x;:_4~|34Tښ>m)qethCu4Zi]9yMF`P]Y5K/Y߆,%`{Ww ɹwd21[mk|jU6Ħ,QDj:2',TyLsOC<`"%Z-)?* :]-qU0O<,Zb0vq:&LHo286%|I%7w: #6.6~#@#W^U NW +aԀ ]GT\s5[I![ҥx mPrд$b퐉a9soSTCxbx1gXT`Iը )i7Wze`6HP`w8ti6zU˫,/ W/{^T9[3v8(fD/mJ*s!NWJgjLSju]9M1Trv ]މkF퉪%*T;1Ҟxtzb)Iᗙ]Sq t${]2[h@9tciq xY6{4 f '`{9Es{ d45 >32uaYP3n{M)~2D[,ȓ#3!umT$[HA \LM[v)z&|K&st#i,E#ldfS-^JfW,$Y%C3)&(e5t?& ~n>* H Dfpԧ(#E1 =J5mIP&SGN\8ϟ!X-FvVEgZU*ɸrv#;:?%tٓ]ow;͜p{|0!Q;XY ~SmڳI#w.Lш6̨KG¸i@eC~]2~>ur_0RYH!;0s>百遹8؎yFԝ}= _4HV5HP'c0-B߂|XX5 FCHֿ`yWnf猨d:}Zs%9 m\~O ׅL hB,LE7-ZY9-ǀOk&` gDA-FFrku‚O)lg#k9l>)S:mds{,]QOpsg/$=N7sh&ȗlRcg6'X˖'ԕ\n&0BH.*X28/WB}B lXoKܤgH;ˡaZԅ ;I$A6epsAp֝qjht'GKS4W&ܷw0lڶZG!W]c XyblC\hlaf 2%eV*:'/%aRmR6]I~LIri>#h\HjImK_19(Y".°B!Ҁ# ݭv\tnB>&YtN= r! V 2?6*)Gch]kgkRL`i0Fd@,Y GxI=ޱfj_Tr&Xd}hPGkjA\EDGWEkc\O^<]H.k`Rgjpt '_iEWb0aصl+mc'QЦ$@, + =f2:Be捠{BB{ԋdpƦ_~U1>.wbԠn1 , bWWw떒N ΛLv8dCkIu'M"F(ѵ~3pCQ*ْzNz"rCO 8£n|D#>l쬵VzկN=6CEixAZxTx>]l۳`-I>kPp74ϑց+A#qP <$^Ԝ6 4Dn-D˺uT(3y{jW'wl2qJH j^&e%EL'ضn{I'Ij@sxH|JCU}+v8LDՈ.M07ޑװ:ڟ*,:fܢ&S'V>2IEq[{%U%`U]|T/́[{!=`72!%X$'`R߹VRoCHsH) |A;~JBYtKI"53rvQٺvs^L j[u.es6ա67㢹[А#+2ch#+FUɫw9,F%8W&Ūav"#Omّ x3-'2@ Ms}|e֦U[5)@^yv7 m4cs~rHab]@p+fp2cjcqXg;ʠS C{twE*T%HAv4Sb#%[dK\D'vq7M61o[0,.ܗwhkjbyb MyM vڃԌnkK ՝]1^^JZyz/QN` $ 7?Wso=8NȑppjšQlNK'"zQrV3ʁ}щ{wmT/>OwT|"# `f8{g ˬd|XӟSkԞCOt_0hi=P%dL9&[`}Կ5PLpAPj0+vx y8FRެhv.aNx Jen@D2dG~ &zKI!;!Jiy-j5-THJ)w|mM]9ȇ*lRE3*Ԛ\tЮ9DtC~dѿ%\02m ĝiMI'~8Jnң|G>w )aja!EMypxa #vGĜ\vk|T =0#>ܯd#RLT+t CJL'mJe1 R"d]kxK!0@.L.Fw}\S,L:Jx`*Cp+гcyci1T a+g&@WYͮ (l^T$-bJicsn}H…\Bp&iS;[(B7U$v_`X tg멨A;ZZ^M;4bjO^M )f6mOv#Y|% =r/hNִ:D!H@Kؕ;9oGZOqҚXN{ߟ9~РXVIjm%q=t (d}<ݼhb{) Czp6P 3~1kK't_5[:0Ph,aip)GDԢL8Ԟ PT,:Dhd< ؖr i=x|d/lBI F\F;yM؎>x8 1(ɛ/:so z~TH?zqL{; 5/"xE_?joY+vLW(27,}GsE5Uj@:*v_8۔ψ]mW!;L4 N$9'Cّ=9ٲVu5&۟qki&́8ʹE֦Y-ChSDRp2u5=2BsaH']w4qCpP2 ekz >s/4TXZM!葉~'r0Ls@>NqSvWW3_,\K% 2# B N SEQ 1lO! HĕEd"Y < 4B,JmNЖAtE@с"#R3*ᷳ;Bd{(ky&BD 4VX"_8#&~kf,Y?=ucV^̮M.al.Cv{S|L S Hnғ]ijhʁq"eR bFdhJrZͺ_,yBFܼ[Ṱ}v`Q31kBM( n; ;ړJ*BƵ7,DFE6ߕה: `QrV ˡC Ļ^T28ռED3i78c`![AU30DbpEEQ1=^߂?,%xM :z W5*d-x"$%?h4f g"L3%McOIԩY.+N?zAVĕÅ-1."ɣhkQ>a>rpv&G'HV\}k񘖈v _c cܴI43-%-8"뱭NsF.a#+U P '`5Lb%v>wk]U2YX537GX˫-/2dxWW){Z,E\+һXx>UR8ao|DBhj\GZR` 6 Y2V Iqv;݄0@Bn +:J%gB=~E`c)3{X{.|YK?C+="f/okia.2>yy`#EIMb&ۊYkz6e0o% fs||L[ Lf~+tiNT/`pF"ΤJYƍt/!4TĤ,*Aqd*(zPbQ:TS$,Czz|vUj 'w.-׺SդA£2ao9c@qfkNEY'1az l  rˆ,7ћvyFw3JU0::"u׬G?y6J f-/)Tlbߙ(O 9] 'V[)[;6ɳTsx-\Ȟ_2;tE HO-1k8m=rt*ت5<6j*dH.0gsPca[#ȃ]Ejnݔ'l^9\Gd>-rrIBLc q$ Ž 7b7I?yȰAwʒe!&9s`ٖ_wv 쌏j9 Ys퓃0*tdFƳB1^5 JW]8dWEƊ}dzRZ BI/ "Ai>x ΘIЪ˷6{5LxOdܥ63qSև=MvAj}PgoXeQ#za|2 ߅W\Yv:K=/:Ű=Q<-t81cTh>] LZ~MoQh+؄%_arѝԙ!Noӽʝۯ-_ɏ\{zN==*j45Y6!0+uJg%!>0'3ŜԎm)Rn,Crt!0JL-/rBlHZW9?י>gW爓D>0nfh_Tc o$gsNvNUu FHB4N[;Ѓ>T;Yl ZՒoJnwnPM5 2̄@\})OXSP!@fp '>ExiPȵ"2USXR|IRuNg xۮOR+d ֘Ćȭ^A yG@av)H!}\Ys%-:}Kr*A&s DbXagE%Af~\z5}J1B,*K":}\5)|ÒXj.:؁cwgl=#EBE{U7vڡAbwTo*2tK+FWA~ϭ|FRp:ĴNJCȕ是?aX6Z5ح1wKQ0B*+JLZX5o]C"RLl k\yσ?_ֹمkE b_)Ms ];J{܌j$ˆ|µm)e41q([ci&QC 즚[4-1)^Kl>Z~76`c,O,{}4KǏaeN"(*2-H6&+ZG:6=I%n+\*}A4PJ !5(uy{ gF7cGjv'/EAT|[V\MjX*bwiq&b`wTVIÙ78 ,4 [!H'Tx Zez {S@c7N3Nۈ8qS)j nN{6pO1$GZb!+b7B c5|Ϟs6d'k!TLJ#}4i0r2, f5$QRI#((XhJ嶗"UWG }ExqH.\8T&C<,}\N x[P)O B$6=婅"5:oݍD9$d8 p>Q6^wW dUS0GluXDɤM N{y)*وxVJ#g_`اfR>- Ig2lڭ˼&Wi$4Dy?$I WT0!c^egWk[WCOg˿0nB1Y@j  `(ى<u g})q%z Gg KX#ak00&]!$FzG~)!HXfARai| $|Z j]o u/,mD7.2ҙAj dÞ0H[l:kirNg$J/4HoV;A'Ia,4> 4@l_+iM i\A;Vsc@6ޖg[Sv ~`wDZ&Mh "S ~jv_o |`<5[GYu*b򾸦*:'DP{GwFٜWԸWl)8*Id#L-c@RUqv5/‰͗4LkDȪmr0k&>ʼnq0j:Sm8ZRGGyrGq9*뫭@8WjIzxV%Z`\|UTk^zFiVY:$ ܐe1T9mm-̘DYPFpۤvF{R'į/Ʀ, 9$h}i -? Ms%1dH%z2zݪ:zqBr["kɒT%ç:<-<[6&PU iݕ‰~Wk T*n-B0bI4^߭֨ߟO;]I0t0NYub'X- wg CFtxmؙ/"s3?8k}._2/bÁk")Ν,p=Sǿ3^ztgTg~V7ݼRZ|0ׅ]YM<2Fo=*\H8cFܤWR۩κ7-mk_#C1#ldhWszg+NZ! 19PrZ;Mu\GgSTiMS.sbpvpI>aa +%ۍ+)=;q}|RB¬IxoV@ʆ>.E\ ̒G"~_N~f 6, ƬI}jI qݬ]] ZlXlDs Ḱݦo==2-x[B2 )hl)s\z%Lq9E\4@#YA:ܕ8AMZ&ź|Q=}:QLyzZ-<1@ ]LFw <{/eqxz &ksL81/Mȉ};Vd{$ -;DL ;VU#0 )7 v%C R9L AD{](f"9[+!ПeifJejHqgY&H6=/LBGix"ISO ,uwTgP< ,jlSg y5r(ˇ/(O6t'd;ُWu 2P+VѐF;鴟cKqL'/_Z%l緂-ckSgMuS2$0ƁHr+^|6;i_ 4S*5>xXmף- MxQ|EI&3'Q;v?'2jչ[SF?ǀ/UMsrb{ƋMZR/םb- }sVɟ:,^ ibj<R Xu˺(>hb.bP`jc%gyדY/j]UEj-r};~bB8!ƤFvrԼjS,X=; Jv wdrfvhfc{E}DAT*!hb}WHS[1 L=nK,BJ/YC/טc:XhQ <uɰȍ0nuc,Of-"~ flbX"=g@^τA"o XQl"cĂ]Кmw+/ -(TiU.ӱ"AJГٳAQR%έD~i 9]oF3Ce4O)s+MKB@7Q^+6& +[~e1q !M)S?Om@F١nvttI6^j!edv Aߖ"m${C-kE`4+'c@Yjb<}:X"[_W8Y(COj p8o:Jn7 t~:w7 T. r:?o!4ZӉ*;keJ::]u y*%W] ֖/sT}\_\P+ԴAJGu=cDvS6%= X p Iz.?&k>8dz?!TN*w]jmvfԅ^Vh0[O^VEe ?+UgPSq\ͼ~Mt#->+cetx4;zJX }]GL>F&,4s¥evcUk5:NnggѾ`X28KTJRqe>X~5kuTm๳jPMDkvC.7$0梗P'v74=,w$ r܉ g(:y~Q&]Ws{@,f֛$9$48ac2SOeJP=.5uZ"o[Xόh@ecfct/iER,zrR>Os]"'rQ+=idE~-AcpD~pPO"+# ;_^AJ/D&ԉ(lϧf9P\(t+}< SùH 䧀W[_>}i+roc^mU]=tc@:@P[s|qC>;'e X{1^ m>%Fc(ȧF{|svø#Ssp-M[ܹ5V>2Cl4IQ?TUVd^K{:NGrDdybZ䘤]O~MBB= 7(1,N׋td[13"bI}EqϧK%]JJE"{֢-P~};49w,ud ϪB@ zͻ&V/e+Z?r}^x/ ڃ"/k2ݿ_ūPfA4? /uQo6Hr&a?̡K|侥EхSt/ѳt.At}CKKKX:ɛOƍ*4Ơ+kvx.rƲ6 =Hsy\q&Q׾\ 7Gj[K}]>L%;^ fO[oj>gɒL]U8a\)*`g%z~ٱx n9mBS5޶^Dq ""{x2{kYj7\`]PM/y81Ffj%⸰Tc4+Rʻ6U(ZfׁeT.ΖBqd)&.1LT4pHntl F.S-$n:$0c[r>\f/}U~0z8M`kYs4㬴)k{]C]#v}ebxQZg6m-^O={Mfw?]U+s׺bN)k75ϪǃX!"YsF]l<4 lH "%Cd NAI|y`G]42j@l}[A.d-!F _c݅8oOa|OtN#at3  U~Ȃ]4mrkj{`n.1M+DԖ _J5C ̺;?O/rj2A5)my3c_ %_"lv k%EV3zȭIL2"K`koP aS"K%6w N RP!W+, zj`48[{4hͭ$676_tfi2xj>cv![DU|^s:w(1a]AIWB~H$X%Gn` (MYA͠TI_;usQIDž _B ;[b H# \t=l ὝSQWv̹l69/.?}w-h̻hڈ4+=>GV h8p j# Zo$<XQaM\Fr8Eeg/465J׭Z eM vsܾ)?~S[LPŏL+|b $}vU`7mb{oSEKX1y?+$ "+$$n#Ͳ8OP v-Ԝ,?!ƙPħgk_K/4.Y&7\׆ݭ @r{8F;gP~DCr_뾼*@ 3%MU/{A4+s5 %HP9 Eb؎ :Ɉ.oѼ q,7vCU$yfL L_M.9}mL_"~Ejʓ<3+>|q޸ ypXU1qT$K0u)2b@YnR%~͏c.Z>-F|ؠZo@w2YU7﫛Xȼ<_yDZb*%:Ҍ9ScX4 x:7Wg|R6kGc艶r*ʐf*Lu[ΔK) oGΉBSǽ6}mlȣ6_=gdU>hh=_(:K*h3 a sVS͠/g@O[_Y*+0G_5fqأ?TҠɸ\.3|lYsd6ᐺbV"4v?\d S9R$*aB {X痴_l-x`&7>[nGW5={Mۆ]1:hx'`xzYǜeoFyG%m7|]$˧&v9 *X(QBipH9 ^1U?P^{Β Hꎯ3{.Q7Vl";%<֟;F ߌFr֐;P"FU,zR b8/Cj7F ~ ʍ%{s&Hm9ζv֫S5 }-Ua3%"x#|"qJFta^?*2ܧTD.Px*gODPsתy`mвTÏ{d_1ڃʇQ̷RڦxTqiÿIշ '-K@t|* 2P@L+H kAfkηU68'"Sn:91 [٧wZšj[Q!8[q-L6*a̵;W2ӶlQw[=e?=3)9Cm[kg#4^"s%MjCދblt 8# JolOI \"vS =A@u(ӅLʗ b-S}Sa8-nG7`eh(:cOxu{ jEIeS9 s}B Nٖ 5%AF&Z;VUPMUrIvXSO\{#tnOG ca,1Q>Z[ulS&4#_ vЯ;vJH yF묑Hj󱨸=IX9|Oڏ~XJ|u^MxKDp3VAQ/0.pm!F`v{CJ?F#XgQK% дlb蚗F#xUS@gac <ڬJwC$΁݁6s)5z~fֵ9٦٦)}٠4QaG7Kە(aspu"u Hp孞.RkRPTZC]]вViR{ϐSM&NgGar&.siBӋ/T"'gLExRRT{PpY7M*0o$qm1I_BdŻaT,jz{|@WC0Vj f[SVNœAsǸ#W3KQmx$bxkWsd6@_zdZ-h/YAvUAcu&0 ̸3f/8.'H4kXGL=;+Y1(uWt7=ǹDoV,ݽG}Q(Vtl1*L>{w&uKiR#zDԎ%:f)b `vN3BxZ "B%@yF;Wg Z3/l|Xy\ Gtg% 0|L3}k;[XN0=kјX7&rJ^|#$ "}{5+,jHD͠ ߖו"0Pݕ먅}h$";_ &H( OdSh_Q 3J `5 x{y]`|]ha/ll3>ݐ9H$ EY)B ՆVG?Qp%e_\#i\٩tsg{JkR(E (љ;,=b(BG`B N"3 WhyZ=Uߡ@,Y(WU^Ðy@>lm/,tpYI;AQEg渔+)D6X;gf+^1]uX$hHʈ6v!TiP|ןJ:9x3߉+IIM] 1{nLr44tZ3P,}k9J[2/T;,'$='l6{|/ΟQk?9O#3C})Cp ry:݈؋>*ꄬ.͆8*TǢO`7?c &܈e`NZ]xR՞76^,E FU5t<8 gZsLwv+ۛ񶼳up^<:v]n55{ڽ}8mo$m]UQB =νExYf *HED}Я\v@Au7\~|i2+(x<+.S3oƅxpA8I@czwNPmǘИj{tia:.:SOWܙtpa-\4imj1~ !dЁiAsQ(2}b3C)9u KV'en8Lt~؃"PzZzSl y` :2̐HؤHݚ'PWFU%ݧyE ki @hgF]< <Ԁz Na'IJYcU!\~}S*d g1ƣL'l4Mj V&$JsUOInh.  u+P(򻝪$z@?Kc-*׀s]I ܔ\2k6akɞ$$-bEe ##8I8NTtl-@tO'Aİ}1G[2蕈lبއ X_=`fni&)^S*b||c vaRPyqz|voȗ qX&3֗]Z# aFG=vsaA;@@xg&߹؊*KKA0W;tg~At!)<)q[t34{⍹`o8}zi,W;JAr7_:9><tyjDoc ;[+1s⃺g #'̘}+XJny\@KBnT"$ID9 q]Mm,e(]j v*,dc>'f^xS;.8qp,>t ;kv47[1q%=.DTr.ҋA]mq9v|I'z]y4bc.YES CWG[̣K@r񲌂ԟٜ ,Y~@"!ţ`QsbF.ቿvͪ}s!N>] 9?M?ޮ]-[OM*m|Fak{K8kt+_)Kn GGȞ\>YD4~>x8%ll(fʟp۞59r\Hݻ=ICR%לr!SI$p4H _@dRT0z`[,.zo\VXxvuth݌TT6:lm9uqé%ֵ ,"%kǼA&z{-@)e7g Ts¶feSn>(T3HЭ|iD@1%F#%`T&T^b=*!rj9߀vQ9(?> &e> _QS!l}%gϒ6>iY==qR>!k[ s"ݛՔ Jn!@9^ $/ԅz_ؿGީTX`yM(r,8}O#Ȫn†na'#Cpny8QH7keהG8^Α(ݟ|0QLPS7=@U IӜ55 G V2U{%6GߗBz+:TP|@D {ի߼%\-%ox68{n-|PRyG&ʽpsLCSGˠ *Yw+o8P~=@m!Q$. G#ӕ-PV.Lm[e5%ɴ΀w \E{n72F@PQB$ӓoVm͒L[s̩Kؔ}m(p_yB|@jLfr*NhX3Ѫ"Ѽn(ȇqdjM. cYf3l96F|9:i o LR'$ܗȫ% ?V/_EG54(/0=1pER}FўIƮ'B/\ڡk2^ s!!@It:t7~(/#^tzl021SFAr n`!C_m:Rk8,C0i .\0j[Oí;ރ8\t'}DT]GK1_> RꗮRA0@D4$MxӜYyϔ%4ȉ2+Sږ_N pN_=H➥QBN׍>rJHƗN\rJ I 5:~gԲVkrHtSf?w]j)蒚1=$Pޛ(j ]oOVAwsEl; L/~ fpbo7m ǫ~Ur/n&> {AI!> ^ŒmRAHV? [k``a#6BУ8J ]28k +c|D|IOb7Ջ#j*~>勆xd;qjmm/}HOu -tO0,(P?gcb xk/VGΐ aA:JF6|P[Hje7WV`\22 dtuP!C!.t>!X?=5x _+Q0yJ{Jz{⒲||E2=B}~x2kYe_Ldτ2ȏi4 {0Oy&뵆-CKܺl{W.T"d]ZäOQCE[e-*$O*ʸy3[;;K+isc˥~~SE5t[>(5PxgE|#WApa_5z^^Y- tlB/u6v]Tǡ!<.ǷVk\/˽ m8&:Ю}.`MoU<0 /^fJ RRi(Lgg%]_PC"#DH cc#}22GȿnV("PA[wItzHkwx&'xw-U'hY1oHqwO|JH qf&z~Bs$o=u ^\e쁓X$+C0l.^EoO`&ÌVIF1^7bБv{h4& |B?*_fWb!܌E*Ϛ%]Rv7V)Ũz3A-o:l:/\c)tzwj2(NQ4F^տ7@픹%]B(BSE50Tq!67( \ ?\觪H*&~1lY]-#D fk'ԍs Ph/gG ,\њDG[<J0 B! SB6k><9J磛lR<:&;fe}9@V?vpH5y"%rʙQ};@͗=LKw9T3gQpf Ѻ;r 7-|~,C(dr:Ԓh-E|)bgÉk0! emr2,7`mh|VjĻ 8Zc)Z7 ~L)$9rp%-?OGUz4Ym  T8 KG (WA|YYAyChq$|CϡWŰWt*[<m1_ ^A-k$Q$Hc7OWųr9 @b&}r|UllZQF[ "ZӪ:OчQ*m7n,NO>!4i=,-pUD j&4}X3'NS^XO:wq`4o49" ї}GZMD삯2˩D#M|W&KȔa71lz/qh2IfϏ;25T0y0ӤosGAԧ?o=oP>9%Tg<=$(9 asutp7 kxp@]Z] V} vGM+-ѐH n鱁?它1аތx(<)MPH8y r.Xc++/~3A%&Tb '[!i_4[r|&Z-uA))A[QCT ܪUn F/sV7CkCʿ3" qcw)?j!zRI I1 h="g7utk.}mDe ؿ Jj!nlo94uY@$2yc Z?*A!i۷/&'+ )~#e[:ȌnS؅6WFm Vߧ4Sy%[ Be:mN'~"kQM?Ch_4u ۰^RWYmFbeۤsu&,ӡ bε"|~l5v!g!גZP`i=e x,])nhq|OhtiEg-lbh9'Iz[ef*(yƜ0G?k=R/%M)fo , W0_KJr2DxBVUsjӧ;7`n×E̴%#l`BHđ/Fh VW5ge׭-KdV4bmJ*]px`cY47 P\FuO/QvlLykpx?"Ўaa^#sTj1U-PM}aV;k./ way ⪊gVimd@HAztw~`T W҇":@[et;!>u8 ơe37֐Upu/k@kI{n(<,3z"e.wn;jLnEH:sxw(_b 6=1XLbnNgOpuEē KL+R",d?/.8&1wa3$ $1KQվWfcoPZ<ƹ\XJ.sI+&t:!|!)Lq>PVM.~(ZUYP @?"д:~8AQ=9cSKnn>)8ӆoNVApEޫ$Sãu@N0(6߀j,y17HRm@1" \;"q %F$ q3YAlI"<]RB@~b0's(ݱ>@'T/ۜ2!±4V5ǣ|lX+ǰE`G6^[p)c ۶^NYAo@Ά ·6/ӑ ȁ L[΃T&ui,٫ޗIaPSzX:aPԷ*3>Re%e6cu |UWA-LS Ȼ]~5dA2\BQ2}D^Ca) 2P-7pJK AHb> doЭ6sW_:̘M& 3WTE{DɗT.T#xd娪GQbZTG:Lނvr O/ bW?xB=(DzN\F֌/,h+b,bSU}&,˜ (rtF@X6$PugAtadBlcLOY3&A8=Z%)n)x* PRF0=-U{C&.f A~ B/9z+4Vز/Rt9Lsdw>jGC5*tB%UPe]hAL_8碿]@7-sF琁aS3b$O!u暣ё]Ak$5Z&E! ɝ)w~ޥ (Pz=cg [;J- E?n h`J͹)ҪOVSVZ0Eyg8$A2$&ǠB5ZJ)(h}I'FUOâi*JELl-Kaԁڴ"E2a}5CGw`d-q?G  ˶d;O_-4-.K m,}q9+*5AAg|~)iZ:T~II"lE"UlJ{>Po/.E強q{ M:V FQh nȀz3)*5.V'Yy- v͞Ϟ6Ӂ9Ps =H9a$>\cva7\fppWL'^mR|^EgI vPfs l͏2{9gzCfVdSMxh" "[QSs^f-2Qag'Tᛄ$6k3~jȦIivt]+& jRhW*sOP EV#'$ɧ'*T$-b9Ecvqގ)IZ7w}ہ́ _ލ@!< A*8S al7-IsRm`0k ,~yDS6[8LƶF᧔v3vC%_e,=!e7&JuKLO죶 7 q5jI}qRk~h[)%Э|a폓Ɨ.\{3Ef>N]EqNлt唈9Z^ECym 5EjaʛW3b9.j0 ea(q!u3rf<`h(\4ǝyRx$bQ/T=U||8 Z2Bkc5Ǘd7E4_K wVFD3O*mx0hsßE[' z)kiK*!C.x1`/Kwukf_iBMSMr4{:耜H۵hԳ=!ik*ŽҬ_ YlAC=vTf6 %{{W觨CX""ŚjWg;$NJ!UuFXC6@̖Iph=C&{mAQ  V icgLjz=hgָM!q1!w227ṳa)VX&$a()=m O($*#J@f+WUUwTUC.19BkP?PqBbr֑xr1Rߞ嗀z]#/w_ihW-4hmb?T?t'8!:ܸ20W%}cQz S .˴8ThGZOD:KeGYo1,xAi.˖ݽ]4>ԅn (Hɖ0$ugn.QeRd A]^#oYr{9=^L_x'kwz䥨?6HkHWpYT=T:+ ֒mݰx6μ,~J'#Vhߜ3٨ p 13?0k԰HadSTytаOy?ɧdXMTӕѺ(?Xjd mN GO;1|~M`҇{reD-iN՞́9GgZI-m93ӺKofN }+ק\NdK2ȎUDҳ0 tbbXwPFN|(ߞx{IڞvR=Լ_NE{'`}{ Q@O|"*e' owمFRIBw*4^DqSKsaN ye q)FZp! <5KFޓqCRV[G_=C]>sa)fO.@ ͈.8 vp?Gǭ9]3 tETNkUțQ񎡪D}y5щO;<РL>-wsv?O=ZBZbuBq!K4Vʼa3,DBƏ/x?(k=} |Z0LLɉM`XX}C:EUqZޘ@08qۋoWI)N ˁЎ[`5zWX)i̾r@p\M,S(u2K =+T=@^1_I c>Ԯbn,7(8ޣm"dʤUK Sq0% # pbI;H\dwT叽*΋ nN]P\/ԆXlJٌ ] ĒJz7u070Cѹ"cw .j`I_"v4f1ŖӱhSۇ"WcO^V0'孟rېra;\6R[>P:FQoy\f@G= v &i*7B2ƪLcMk%Qƽ`Jqz $$jçMe2Qn" ?ÁNX6xYRup,us *d2^Q#[kq,:CC% ĄRN^*8az qzXG;%DQ|vzbz:&9K ^3mUcF72kδJ|lԡ%NipyG^@/F:&Hxq_wrA>EQ4hHRmq~y90q 4Fj@,78 "N׻W0"H`iZL ~ pF~xԑX҅U*5)͘5:M|0fe'R\M+s>^bQ|*Ug-&).AP\sm! Ӽȩ`+ t dFs2M(5EQO x.M֪42)v6jqمگzVe0^Ef9)UN0"\ݷIf7fU kG).|ˇOwҭc?'Rmw%[IdgJnjL3i&W8q$eKH'e4YT%/LqqWZ魁h @6^ ^Э~8-ygb4.#&3kT+O.RI :W 딗Aƒ=7T+<,1cry,WR2;3|"~nHH!Q,S󭌰3L*OVid>cګV+\vV!d<;=|\cg56LT4m2o7p~OTG*L뚏A$ۏVXZJa`g@Y^l1Йub&S{+(@oA&`\U(k'mFYqCm0%p`̝iE͎? $H\ o2EjĒZwr6 hW̋ոpUpx}}Uys|sn䋮X3ǭ1my7aʹii*]t@H,W<>KH"4"XZHko֚ ,Vn6Eb;Թf,%b.ʺug+㦣܎}~;ƗMB@۶BL֯7EwTzE~N6$a7h  X_[2kȉ8ʿ(.'D꼓2@Hvr32@ppRv4[o4V!^B<_DzYt4a٨U9)4_Aٛ| [jDpϋ;kQNGO*a-q~4 PfdK4'zfcꕲR҃1}AKD_~ה3KGfEkr^&Di 96)3ݕ[ug  4o[>[b!xp%5#C%$.oU8rw}ٿSN zJ%xCaW"ketRziS4Pqح蹹2YȹL(kr&yk޲i=?>/놔k6_lQSJRĴI?3gɣJ#m{0D~组EE9@Sh&KՖz"#,pAfC@Aρm\h D4ے M7e( /k:NQe3,yFif5%Q/FKvX^WP,>.UF7x_ 9CSD_"Xhr 9]i m[4q20Š=v {8/n?r'Ϊd=T-8"6FAsϚ ģ1ƪWk3VLz#@kÛLP@Ⓢ::2h,}͛ s b_GUX"Ewg|Sp j8 s3=%iwZ6}*jhwhqF{c×}Uoj~_O@>!_P6Lc,-⨬F4L$ غc?!ԑaH;iMͤI NH+ɛYsu :<vsUa":w1Km&ӫulv hx~ECT9Ds;v_R 5tiZo7St$TYp#بq\˭{j *S-z$`obo D엷JY$Ϩ|(&+p>h pg'dM@n-O0D;Pv9+rN}X=vy88lTX7݃"FXI"(B Ojɳ&.Br`s4gsu42 "Ո S, ;{>ReV#I1pO(%vo@/,dTxNQC=zš*?8o鶷<v v֌AqY]H|aSJٽEjlGJd[Z^4װIjN4˃RkzT<$[*sڻ$E!ǹif+Z3R5g,~Wo8ї%חFz/&kHg' rHÚbeWzPD c2K0H!9V$zFp\(6RGb_g YNw&SyNn"ovLAzl'3Io, i_t ~C.A$kL=k-ĸ};Tr~tLtphxA@xFZ}LHlQHMN.&^lHODŰi$kIwϢ芥G@p}ZiLTVm uyPpԒ,y5nD&&}"a5 ycrכI~'ڐCrЮH,'_ &kPv:>:-ƶeY'7tuɃk { :}}Cwcp$!r;ff6'ceVz<%_/O18vEr;|֔Q՞/\GH/ L@`kk#Fe9Y Q^qX75Q,[DA2 ;3[ġkMzowcE#ǐ$5oReIMY~~= GVR*?Q">ڭk#nCBf"$ՓΥ,,&7^Ǟ<زIlN.l)]ÕKf9ztKM1eAu?K؏\D鿾"VH#fYZeD;D5yJ+@/I8>ȱ8lɇoؔR C74y^ȓpqf9ahpǴ*v?6 "VC?3& ?TW::$~Env\,| f9ÊZU>gփߎY|˙41mTrFrgp@78o8 9۰qwI.["1zr|Au\nډYKϡ6z_NF,Ea=@>oyRqU =| eڡ dˎOw۷+d0T!8%uoeb %%I1 _53]P ʟv%CsJ>Nb~}ӭ2ں }߅]N5<-T ҇pĢ.xEE> %FôUvYY2Ԉ(jUYX7= 0 Kkj; Zc/pXJ1e%)aL2u| sSjwӅPRQ~E5-uq[~Qhގ[ο^iӍ oIi|.=vӌqܐj1T]’f{}ffNo%[\Ζ(Y2A}6A3dw,sG[d?;ʑBHߎ&ۣ9("py1$f,6Ysz?pA\j?':dO@<;q5JW [Vw FZ8iHkh< 4.0u,+%Ɍt7&ΜI0 sc4&\\gۊ|_)C }t̿"/i4d$VR"{}xXm.y,`3Ǘd9O OF8(0Jׄz6t1Ϡo#ڳ)INmfT_rU8A\K)Y<` +C?rUV`a~z`5g^r0lHlE aVT$F?; ]62򥩚FZyQiFPb߁?p~9uP[F|5޶"8 Rz_Ġz*( -(;](\ ͜JF8讽;Aȉ2vnd $:^b|5\KѦCq3ᅅ8xzq戮;nop(g#Ud 2?TMr\xIWK@绷f[8qLXG(5+in|嫻#((Wؿb杩7 TpgSmX9$ NC0:_M)c |$9ʁ# JN+uBŊ#-M cGF並lv'R M~}_ 6G!3l XC^&:p?RK! ?=+r3k};HQpI;fxU4?prc'zYIQtvPB X^pv[чQզ.IT$}۾]"K7AJ梧F0-A>YBZd7 hO1Y|%91?tTT wrUfST7<j N!<hv+tw]Ds-U,`1ضܞ;ShVD%Q!{<c RHxT]hQXb-:{B⛀ק[8r{=qHƅV 4eL6Umxtr1[^a(gLw+Xǐ ZuݑDJߪO~:ߺy#Cq.. {XB[KsJ|&C$Kc.Ƽk hFs$qD ZDIB;˞=W.7t*(r̬n.scsfrF•/˓p&Doa.4R !+; jPdy{s|Uʳ6;tg 6>̘#?]zc|',s5%~;62T 0 p.%/ PAcgIתKGGi6}6eoT+Ȥ=2%p 2 'N}&tVa/m CLgT0w^P jWv ,r_1Is̪lēBd_гJ!qtfW;Vq=YݓkTxsAE%WQGX}J`(ˮ_m6fU-S i(lN$߯FQE@.'1Nk2j~L %͖`춝S+WnH=ߦ*^Z7 asMZȮTD;su{>KCvE/ (B~2;;I&FW_v5~"DqCE4^Ba ǰ|d,z^c;ЋOb֥>} ˶| _\U|ChD mm(n]O`\E/[gWȆo Jf|CwhfNpp9; 7b̧)R+w*R޼R.Lz0Fh:]_ :rA4M/{1+ߞElib32[ϔnšj$^Cf:#}TrcuIk46T]APo#EPpu [L[ոYs_ڵ`B2GUw&0~KzHq`7rc#sPu{hfβocV lL5GC @:B=. vO'cvH6PxwvjKi!"ZLŻ{{L\at `&oSc#Jkg?TR[AG}eu")]rLHѡj yI\U?/'2Hڢ,kqfR7P . DבmuUnBt}mOuUl HF+T>^OZC)uׂwe+)ߴ'z>4J}7X#!U: ? lDžmFfmKt^JC4e>8&*_5lu'aܺ齆%,3 =.Wimgݔ4PsEH9G[ -w;R7ƨ?ԋl}B:pVrsIW %lX $l5xz"UcP/xTXRAfn~l%;=V l|1~WYy!.lOzgcJPJwE^u~Fʹ`,J RQqH}H2< ah&xDxPDϴxI,亍iT so2K$y&BXm~'&lEMvYGkq壟.s4XRm]ZhR !-ڑb55m2Dzm;%*i9=g ^[+Wc6Ց U?$YNLU(^ᖶG9aN 㚮طoحȠ톋&ļ.sXᡌmw'A3RD bW@ Հ 9*o£[Mz&G` }cZ*'pe h^IY`  N\wzҒ$J𧝐#.2—֨rRVR%mߴz,p4HL}r~dyV"//;$Z)eqkKyxK69-2bb(4r`I~bX;Ȝ E:$6 mbQ5p_4,^B4Gm6ӿ=Rm:*/wXdp+Tj9}^_{" oFC}IH@vzc$iU4(YWZ^;.öY!jD̚WoPCoƸw۲”ʥr4^HaEFTW]AHV5"x1Ƚ+M*VDK 4oMңs(\x|O~{ 䥆Gs\;mXؚLb]RJ/EFcL/U4)} 8fB'G-R,౛$|Q3A\gpf,/ޟo:#פs 0" h%@6bQUV pů }:4bh71u ťIzW֋ tc[^*@U>9w2/_|W-C$Fc`oLL^5JT'S9?;*$"rڑ6ӣ"#?@_Mof(H~Xp_[&g d}]l;}C3բUn }l+a\wJ!UV~T+\#EJ^14ǁB(nOZg\>/F2Qos4s-FgfpdgE$90Τ@7}~)II8tɡIM<&&g!w.`"&[p}3iB $8܁9Y#V@ltDсQVE}kljL0Y.rRzm>Xx=Ci7QZ*].O HcD4J6G1E)n۱<ybs\eIcX+RVD'ͻDQ+*T @H&]ѝo&JGUy#ӽ NRQD_:I9dFә_};iX9ޔB̓B%2ɝXKߒ=EqĩY_g/άz6ӛRcdFBFB 2t89I8'B*4r6>NJh{g+CM"4y3Y_eCRD2 ւp!$,Sttg{/ub{ArCew'+ebc"qhzj a&tLA Ӹq'ay(=~|zXj`ĪҘet@{DL x{nOhsLЊ:n գU;#B K+`ȉ-G`L!$/.Lx@Q*w1ހb+d `VHew vӈƁyX@ϿEs*k d}^i#sTbTӨ+wZ5/%ΑV `Z_(ϓ٠Q; lw ޲QUJ!f_'0zN[4Eħ\KpaL+S\IPōۜNl(h_,Hi"s21|*?Dngt sqv`}1 )HbRְKed$uXEg6'B\R h}8dv!=Ɇ%URP`)c$rjnhRQ/-s %k/ޝ10N44v zFA U`B.2EH8hF'+gEp9*j K?rݶpEyߺW`&4{$8p!䫣=R4:%J]]24m]bHIj@ڝTi~ tl kߋi~#) #3TXv o_e_]zt3 y#P0Xo^MϯlB"\YZOcoՌ *mRmz,aKsBa;&/LmE ES v-yA'>'A `NK,vWEoQ0ԼB>]v x%.[ܔÙT-*W}/s.N= Zڋ21'G]P~Xj}G#/釋!21@l_꧜ӿc|x]cYߊ1a2TK,G]LEՒQ`l7H skf'32JW^(X!:EBڏQ\qy C1St? |Sr^vWMreh\fd])qRRc;@ƶYuUFtL]7 얰a%p,P,)g>ă+_:)df+Ie4\*zҸ] H6]l[M C~ՎHdgs1 ĪQr 5!7QU(I.iRp qS6SPKΞPI}3vgke.qIttp %d\(U%IC;[i D/etiCt;ߓŜ;Sз/ymq}yH`ekNYgd+bh;6:Ά1%rBOA`T4<6 !Y.&|]KdXġ6%Ձֈeme~l_G܉Edߝ%\׍3N,|{`$ P0vPYhd, @m$ 6)l2?틎@@:ҶNT왽d \:H.)?VUg5d $Fzz2 mI,}r~G{ti.Mpx7n R< Q.5^etD yb}Gco=0mA!$&-jJ e krQJpFOž;ܵ0Ai1YQ7[e;Vvx[헌f*;6b]1>>_g4i0饂EI#a좩nFg6N~sBt C~`ZĴMLDlu6>14I )!I Tx_iV۵{k^l*I=k)Y9Ӈ߀_=f/|u+UEvK1e$4ʈ+@k LMqh}_ 4}ݖ2&{92hi'x@7 r d_fC4'2D1g\S31OVo"$ R\Oe2v3(H軿FvIM OWD$b-VԩBGg ]ɏJL}R|iVҌjy{*Ȩl)fH7؇T$ϛ {_]H_XѠ'Vׇ @Ojd7*vgYC֮<+A9 >f2v,>E.BQO 8K9,T O'Z?.+\i͖S x LD3Hĥ9\e])Lm3[.nJBȽ5kdڽ7Cj5};ܻQPIju9eDrQN"Va$zuHܣZp <~ŲGU]4ϽTEqi gS2pnDŽD 'p(c%Eώ-+'+UY :@_˹+o8``CNuq񘍸Z $J))'Ӡ—Ϧ , PC}pi4-( >hLצJ:{l:R\+ O/̢ s4 |W(Lhf<.񹁕x2"ggqĔEn{˺>pX=X7.CTэ)h++?Hrwc|GYk =ᕱI!LHWKL wĀ0 !fzr#*`b0?aR BIwK#QQ[e "bEW;{WwSϸ^.i='.㇣/m49Jo|97@h.sPaf.BIncK3Wa, :.id[F/PnMq7A7qO KxW$.zqVÇ㣺>;$BZ4wVDRU. Q]UqYeÈNd.PZ1X1 dK:O_jxtF9`2hP.uRaV&b~ ͥ_%N8Noˎp{Zvɦ*y"wS*1IpCgw@ZhB@n}$kyahWEc߀>DH84q!l&Rr7.}Ǿ3K :mR4bT"7eAܾCW}lܗ &gTlr;QX)Yų~)T8v|9@OdyMMo"S3QnוERTxXX2cE{Z9-(뤄4G"YCCjCˣ0ꈜA&r^LCd9 %W"?3h~Ԅ4</KGuWD Ż$WuWD_DT) +=+klSyrM7;cJfs%a)^pM7C<2Ғ!g~ߓXT(PwS?=\Gu6ut^1? %X6vd\7슀WtgIb]/ץc OU¦5rq8mZ[f6OpmS8~LŅ9Ly_jQ SڣRʬy[A`!Ƨ3c@="vy+WS`_ mm}ֹ! 54%T qDܺȠ2˽JYX~a8sD+0_ D={pI4J&[LX,'+~O?C):NP?0C>4wt#`X&xS^WuU@bE*J9xx}T{zmm)?d[n2DKO=/vQHӽ)FKLS*B>kpaDT\ ]I6̓Cj1P7u)$ Tf҄\=jrxR2^hTގFp#i' D6cKrhFMVw;pi+L)i TsIq?9®҃I9f1Bz,  ̄n5(ډ s5US3} \fS D`+D벮Ow~XWpe^42[/L9ۻr[ dAfǒ0Sw.Z˳FuJU|%I@D)"{ļ*rNZ;T=;4^HE dU;O -=*BkKmi k,l@+>b`5G`޹[0-I0.{]lݕ|9|_=p QB)uF4ZLG^j}[[ҩiNbSj'gIf mG`KxCٿ =1&;;r[$< `'?:jyэ` Vywy(n* b2?0+w$bCC2Annq ɀyW`FPjJ8#Y}1L4nM]smG{ lp (sQ#zj`"_yuq:q+$DQsL& Жy?h빓ŵc:؂za2Qtg[ঃ(*HzޜuMD =/G^9&bx }g9 b4; T"ҲFZ9J6nt~*5 ^;A6FэĐ ̹vQj;쫹t%̈́6%_S8?4XjƃY>ҙ3ś&w'/*_rHHOvaN%YvX}A(2b>DNc7{Gyo 6uOTai51  t`6^D#pwK9AuףS1<;]={$Rcrx@yE7soלEe"JE X ##E:dK:p%QR‹h?)x5JJ$6cgd}.Nj]<3kcj)/cK\GlsϤF_ }aIe>NPhw@ɊqD  Kvy*`BT2ݘ\+ET%e_b9#Rdbwo5C+q gaㆵg1Uu inm+:ڹ ~=Vu@E\bA>񌺁 \Jt[ m\P=T[m H*2ӟ gIjQ'08EѡKg[# Պ=&JW~=c?1FљZ5ӝ+Y|,_mPZudQu sEeѭ,7u?J+trtl^"[ F7H U@Wbӕ>YqH J@gGO>BNz/wżIg3·Tud!=r6i ;kfo#y8W6_Wʦ[,d+W*<6]7JDH2s&vH^ _e9\\F֟\C_>X%&_}CfAgۇlϏ_Ed.^=Iv C \Fh:^T oSjE\˙NZ¶-vr9*t_UxVh2j|7NS%Ζ<%xy(wS΂GXs ;+gw}q7v)j-)$SR=5v+t-zjI%ܓ,EWH7qdz(Qۑ&}CSO_Ibѵ΍W76.f3b_zau2juMGolq (Ou; SU8jڠ0pS+cgf|Bye4Y`w;4% 䞖SG{16^%*q NrPE4D%Axv&31[([MGboM\(VqG5'=jlEA*n&ʒ7'\rx/I'O]j1UOޭz.Yf$erJs>c PA 3 9!VbG2Fli׽ӀeƎaZڸz D8/3nGNT =b~8K+A#ྋ_me xMYZVl?g.e|"rgwݑ3/YWy3wł+'.۩ ?<0 7Ul hBL7@|L2@o*6K2vĢ)I @f  1zإb%" H7bBH\v#_T ~ms1V#p j<{1a4l% MB[c = d%9X\EF nՄ[٬k325{|F&{% ,i$oL.]m.3_}'$^]Ơ@Ӌ~FQ)zDkxpCEÁ\V #؞Tgah\c@R zLQz~j*P(RRNKHCDs"P2~YdaC;@1\(&=q:mNNH6k70 $?vC$ #]``!ZKAju ʧl#)Sqv0Ŗ؅cыN.]تs?ڹj,+F%տ2AM_v`oQ~W@c.9Z˂'XCgk9lCl9B9o*Xk>.gjV1b䅏)G!ӎ~p`(C/+{䤞%3ZR;MiyM`ҩW 9D b4Tu-i:c B'ud?{&P8uF"IWYeƞÀW$ߺ-Xp//I+N~Yl@E'I80m˖z s.H ԺS,PcN*ω#kUjqoΦh\5k}Tj+BO`ާ$7O}dlo!N\5ӟ;/٣iŨ!L( ~ 3EPkM<)K`\)? n)H觞S<%SWu܇ۜ' 8~MwzYh֓Qds̭oTVyfҺrh C\}A+!ͶȦ֦#*w5"Z8akB#Ľy/='+Tv[OMwJ\8 \H&l&j_\zJ9̓ccXa!/Ir(7F$ ?)8|3Pkc1 Ghr1hp-fGĘl%ñC{;q ^AM Utg׍ ' LQ[c| !Z5-{U^Q}=<u^}0?Nj/n*Cv3rJ~#>\4=cmG2hu=.%Mׯgf|spG!cv΄PWt]oukA t]D@XV12}">O6kܛ|,W{_313:0*+SȐQ;Lq`5@ ۊ~ Z涏![]CW9;NCq:ۋU/D[qȕDC J,B)O]CtbsKSo M RMw{j6Q-(8&US[d g;upɣfu^$x'nTGMCd󏩔hNkKAgc؛s^I`s `%=axoAekrN07 b R{cyBrVfD&i/'@o:W!"`s~M"1 1~3׉.gnm/_@4֚%+) ;?-OgQl2I5|UD*X㱸ԸuI3bjʑQl8Kj"o2Ӳc /_D;nHҋmv lb|UIR AyF3åpZoqȜln>jqY3v\р_$ğpBΩ(B|<&Ӌ\9f7I:)>aj]5]Gp`UV7}AVz\ ݼA+“yS>s({ss~Bǩ R̷wp׻ݟ85/uȝ,a ycz>+J_>2ŐmܟB⩱)2~uh(˻~mo,ԀsW9[/ÒZ8x!4woJ6PXAˤ߉!m19kycCUȃ_!yQ_V~V]7lRw%. 鉶ޗ}nGSPAꤡشTa댏uaori] 8<b؂׋F|'Crs+DH0Jrk% ]۽nਹ v3n`j i+5j}V׫@CIpd͵6,1@m(n4?v:)g}g O&RNtE a?6MdE'C׸~uE =%$͒@zw뢴(61fs A9!V"b5fZ0\E>^x=/#9#;=w!'"̼?ˆخ،7Wl> ώPp W\ Dz. $#exg6$Ѓ,f95GȬ)%i,oƂq񾎣]"ja9|n.%_XN0 t#QwnWOI,)3K,_C s};ߍ 2\ E&kLɰ'e67ڙ]WcPvM6ϕ\ Sk7*Uu-Cs[@•M'Zf! o)a~tW5_e 6]zW#%/v:tLF(Z2ѣֻqZb#]eo8{eV…͏.-m PUǦrmӅ\R 3flrA\6~9$pܡ76b~xjc?ar)%Y㿸 g aM6m 2?'V&݋NƇÔ 4%d5PO!sCEn[ĵ)G.ZB5*?Ee^isn \-ۣOtl.mODU灕qԗY#~Ԋ G>΁ $(Jț\)1C1ZNoB0𥣱Yoa/}ӭJ<<,ћ(4zlig#'R7LԣPWHw<SlI S`7z+9Fp h!ƌb~y@1̲F'I`#iLަ6".E %Elp)y\@ rŮ|B Ho~Ƌ#Me#gWviBH?¦(j*T s_du|He~ŒG_rcn.<P\}lq-¤2.ܫ/_@Gk9ey¦E-2{p\٩ e &δc)1Xh =PS!zm]POئ_ N fQ$@`wy˄ѡq@]heMY+x Y'Ff>a%6U'bD]T̪qxu8JRGmU/>3 öf|֥DkO3-l˞ 0An #ʂwS$t(>}zzO 0瘏 @U9ҷޣ+n*v@X )gKs֜9fI#2urՒW~G Jtߣ)ZKíIJh|_{/WpGOwEķ=C'(C~Px8Gĉ&q~F" }baϛ~;t'O~TThh)D1g6 p@fY56??^cz39wXHӑqri:oksnTiժbZvpwBV[Q\#«A Z8 $( NR'\zJáe04,^^g$/@ V,vW>6-+ro3VM.ýO_5􊓲픃\CR>^CĽLyn!@gMݻg7I(ҙ|E%5}a,OtId;scD9ʅM)N GlI_Ѩ~ZdaNڗpb"Ԓ|SXڴ)-q'ܽФK'|ۚjon:ߨo%N6緈,QVPE[,ԋk0b{pC{K? 6鬔Tv*KLAE`t_s%tn 1 h$hE֌z7"VXo*̱a {o†(Qxt;}x.OE'LO>?^Q+2^=CFM J|O1v<#dحS<nx{ooɤJ7t_ħq$$nECxIЏG#~j>|ۡCr"eV?iuoSX,wJR7.~pv43 & _@p g Hs!4JwzU-*sɍG`uG3,'27l U?7Ϋ}no۵"ޗ^GҸ@ͭ*M/Ը;}0Gn1N8fm(Zr%!R8+Ǎ>6ɔb .-Jadu/"un(cU6PݹetJ_Ð[;NW|-UGl®`:aHCѹV0 (q 6 :<'iWKPa+DS6jtfZi3nEDL݁ pW<eF.)$\DŊ_G>MZ%>3,yf|cpY3v(¾^N1;5FPv|Y oŘ#u$Fs{V[axm$S=tlvM4lO$y֩o% }V9hX W7Y.󘭞[-@=a>tOȎ`MX;= JjHWг=9w1 VnFπ&q 40pp2bz !,mc[ ď؞2E@+q^BnMw!2e lb$'6M;4ճ!U'p^Ij0pN&"UhQ1ꢩ)*X]`B(d"ůRw{/;VvUb`S|j'h~L |gjs S H p%9uQRBۨZn_~dRw{hӿ%Zs;)|t(S_Vidc"oe{r4\7G y2F;Nj3fb!(o {ġj(3=ǁ10ErLdx*zvڍסv;(؆E審jm#]=D@f9'(WGz hY$9]fZFaЙGHJVl| z?[*aNPq~Ė_U.ϗ-5jv$+LXVwR; Md!Z+dKѩ)S8LU~H-Hm)LLefITLV5WAC.SV3&*+TB6n2M <HJE HƔ6ǖw}oߴI1|n6E?%Tb/e8ӥV/5^Qݎi?6lj|:^FQ* S_|7Oʰ-+s~`e%Kx 2el{.c|P]iCe!nV:jQZ =]2L% 09!{M7 bmKX20?y {p;A=4OnQcCg]A} %s@z;lq-Gw`p-qg_ tM(d{&DVԢo8RR~0ylm H5lŊti_),Wky%t)wC, 'X#&Pa%s}X?"[SrBVAIn2ж[\hd)'n>=ƝC|].5^M(Ց?AqHaZߘyZgu֕^QO**ȃU!ֶq2$d,&.eacӣ (Ҟ{0Str&()SLH2U'cwoA2UDЃIs-X`\u<d q>޿{lT!iA>\E<4UG+S sM>2_zy3`Fe0|X^iTJ{>pRNFOܾ8Ǘֺ\nG%b -G{@sC"x@cD#q٣H3m8{CR#pO5ׂuZ,CpR {cpPz/x+pe(n*saba[Q?./`oĈ, i6KF)V9lx*?#2 }ē SNmY 6i\{Om9h!QOIb2J=P7xA Buom6 Z4;-~~&*Xq]dV>e-xZoPd$bsg/>iWb5Ҙxv&) codc6qH{08D8p6nc3! UGo{`,(ǥc~:DZP[mtR[ fALM1JYgOVFi/.N{ߣ]Uyk,//6Tz9 uv&Gj4AʌU7,#v/s(5];f1cJz"rU?lgj"/VWpg~=j2/); :L۱y6KS(* SFR'it~WBSgx׋jCU:g<~g^I67pub /=Y:,iP.D[Hj`?A< OCւ%=>Emi /fSK^>/ ;G;rjT0=hzZoLKPS*O8;%9)^U|^$ɏ l| TS}mDa[A.JA1%"eī0njx_Pb su3;LlsSndbf孎86P7K)k1Fph̨0`ill!kUo9P~]aod/=WZ*#%gצ˳:ZE];sȴd bƔImϣNdhi oP R努j7 yB3gUu~zD?#--ku}>šv]n~YJOftu4tv̏݌@s93]+kyrqrX;'@Q*תd%bǼyfQseua6<٨#]N1z=ox2?~Ai2ځ=TPhvN4$-ڋ]x7ld >Vn%=r!rjЛsOk<@?B#"/Ja\REt%'_: ș7Š OUT;o.d8[83gfoeI3gjusw8EQΐ R9T~7x<72AS6 ~p׍ ,p`xFaGˌ}UI_p`/nu򀩱]]'!D8ōԌ~ V vӬ YiC5񜺁'vsq.B6Z,OVNAgd L\:eM񟀮P1l<ՇͰHxT (])>7[i<|6.:LX%ʙ/DATtSNXL'#A]kЄyJvS&9ZTu..+=ZQDx#\e,m@CO=7#UJ ]ѬnHt՝bգՖ!;Z*qpj&zhb$1lC%i1 MP}aܘrFuR$׶1Chu JWU_+#ۡ^K%0d' PmZym:j:w ʵ$՜CÏL}#jbV;ƃ.>Vʦd*:$A9^UiE4bmόa#GCs2y +ez亮Ѽrka:v7m ,$ eZ'glZ8Zs.׃=T7@Qy͊P3b!$|p61?*gO߆YJ7 Lf>1٪P]q9Kdr8-O4cp^mGS E-yrEByPtrPZa[7)af/?vWEsb/0wF?:pL(L{hZ9TC# }\%&Tw6f\W v$OgF<]'J B r I׉6tbyO1{08AQz-I76cD$jz_/OBL^v!f5dO"!R\)Of@gL֍"?NugjՕD ׺7fK pV9]VY `Ez4gFy]ythwn2=ڕ^ 3.<:<#7b7bU;B#~6M?bh )V٘m1%PI9(1~Oj{vzd2RUgжo %s 2 ]($M.S':݉~e>(]Wȸܴxyۡ;c6c^Պ\R\Ox? W\%C: ,咖[mT+H:iQ8)‚ScjXޔytkF%!c8j!4oU}4\;n+}l.<`BXy<=M$y* `_&]գ@C)% 6T_WZ|,2sq8C @NWT/TוU/\ ~i=p!.@$ &!.FKȢ wXt:sbJVQӸM}6o.="0wszwNޘ_z&uМg$ Iv۞t ;HRcӯ–]c^q8[kcۺ{TlA7bLpLވ <$.@ `ħhCZ+$8(/:N:#OZQ!&|2\Vg#{r, SQqaQ(F¯)=x16RjTwp4ֻW:탙0'M͛1&իJ\2RYPz=g7 Jp:!=s_rb9LwbgqksT (}ܟIfWuȄFrUJ\5z'cU,p=)*HLr|Ofg#;>unI<4qy|# bm}PZI!E_D=? *үx*.rj,41⬔l1@'"ƢxapE& 48JټpUaTx%_azʴJ)BZQ%uP. x#RS^w6Z͞j-36xw ƃBs '79ZLCgn( #1@ʧ3Ƌ")-%쐇r|MVa@X*}W5mRwqM>{x%ѣG?q J&tXS,(f QkFaaoor>YZD%9;m5(}+}m _?R^Dos#8 x-CY pڵ'F냴Y 6.V='mƞն2p b_}Ո (t;! Y<}zRF =4ohT'r|3fi }!r@Pmmwh}nT9}ŃxY4 +-Kl΄Pѳe?ڡ] [gqUi<Ɍ٫{=dI8_+)E;GqT`YZgqY_ sR#1u, rĮcp T ?ȬGF،]4Sh?7n #E6Y;A\xuFj.̂m#VNb@Hz+?lrt@Ț&DP| 0Hh%I)R58Q~# ğU3b5_m(|F=QMj& ʀ(a+2"J`.!~V/?,l ?&KAs9"*N,tmr0#W(f{Gptty=(HR_dճxnbgLjtͧZREw'F9IB2Q˓6O:;ڨEq/cJSɣ,E bl<d6XP]x78Nh M8םi+}b.:X >TN^ֹr#O [ '\} ,1/l (Dl,^KRh^ }`N3[:~uTL^ILA5K@_$lo˾G Eۿ )GC:J BM'pM=K -a]93@\b@ Uoxim~û%:w!nZ}ڤr5q5jGq oƊy;pJIHcs9(d‚} i03R;s A@JjPx靚~[JS f@㯑Y}}P̚")x[lCE3UHR :$YǝCHLKa9{{%gjoN ӽREq.V1hoQ_2e" `lD&p12|^$YT@BړkNMfruT.:r))ǐ>Ҿ{@vM07 p}ʺj*2Z,,\ 4CcN]Xv5 :%HgPy=!3Пe= jR8BEYu֒ʠUĵ@uxgƊ}xs*x;QVslFK QCisڂIs-/{͡\J{ !+k U:atlC+JĦdRhJ:לnAO3W-< ܣ t`<113ێ QIv>HLC͐8JB&26*=?o4YuA}qSc ϴ958R!)h:7)&>v0\Q3 {^E2< ƠmgD1 jX(nU2)^V3(:b5W/@ߡh-.1ō+r߀D= MQ 9 Keh'Q~ A6/#5Q0d^>jQa|J?4@O-ˉЇ0-MGHܻ}a1naVx5߿oN;n1jBmgv3Elf+`4* nVl-޳PuxF5ޮWP\MMd(vu;tSlEƘv1T~  ~4!IB@m@"w/CVzӳᗹttCp)6ꅝSD Sv5-OjHe[_o>ۧ}:CQz^5.p =[E@ER[imHk?[(?AC!|ʤ>^3?6p8\~qS6_^hl))cc „GW+;cJqj&DJ݁ש2] {NV3>rz /Z^i\W;ͼ3%; ̒vaTeعn\q,@ӴH"^v%d-un¡ᇰwk/Th xփ8}]**G60_m6*D,v}=3|z_hNF7TnǤː<'9ww 0މ+R@:<1ҷVVb-iNJto.AW.L0q$(O*0J2LKOÖK^lMr0w(yu-ѿS>Ϳg,v}sǽ1qT ]?Wg@12*p'}St3 JArJmWn2xhLY痵 fp}ESz.fV9C*#W)Yjlx>:H+xX~E ~߽6/WAi]q9cIհ|;$#}R ۙ6ԥ6^&ZB Jg U蔨 y.;af$*3¥Y[b4oc3SٗDj 5όGe%몸E>%(.hfA:C2?Eg#)gؙv_ k3fhCEEgw&rʃR95Y@Pʑ[/8!\~ ؽS,fz L|bQ YkS_"/*"$N^ S&y@l`3a$u|)%Y q HH˫78c)喇&Z;oQ=|_r\OktOkϯ׋l*'p#[4U'@0]x56z# dIgC#-\hUM=}R,DYh699YE;im+m6CY#Äch1H D'4UlY凎'%7OeIl*; U6VDHz硒>:JQ7i^'J1e[2F}J5>w짡ځˉ@_*X w+?&E'LB29Ywg;;~.t73jcU"c6>{%9*UՉi*/򎔋SQu Cͪ ƆRdgM41mΪrF J~nSJrTuD0Z%)Tg|5곾]z.Иіͤ ܣFj7ūE+*_?(baOf†U]JQ.Oe4/l᳼`Ռ1:z=CChȏUaKJx({0 en<׵jGLsŀ2{&B!#|aRiΎP ODP׭ y#u9 ({mr.j2<uW$i:E*U "WL?٦I|ݍsۮGβ+E3X^ѽ~FyfA2`nzѹYG{w26"JnA65ܥ껟Q[kiP@$cS v|-Ӟ ^SZgZ cg$tOK/^wZ *rU;j>l$8~IvX TrZ _%jENz$p>d 0];5ݍ_+Έ+V]WvD'2{Qaȋ+t~f7P;CWy.w69Z5By4wFcT۾dP?y|EaL7M8)eOd:V͕~k_N*e#Dɋ|q_>'pNe`fcƉ6ް/]FB p$ke5ҁB9. ,L}ӻ_1WV,_M@DpL*RfY5ϫژ3r7)]Xq]r 5Ў/@!TnqmO^T fP`p BoC5L]G=pbt~9s~޺UG)=&?Kp.!s-(1*25`݇dt+r`$k2E|O"f*(/}*D'SnDF[HPu>Pʣ݉HRis7̽|+?@ng&JCEBl ^ZD>wiQ/A ̵lGJFIfg1+MP83=Qæ%&M*>˸YWV ]lu5BkGR.}\mο8+WlV鱘0t󞯚iE.;d[R+|,}\sƯ;U:bB҂R8L1x.yVՈ#tXP8l 4%{ɕ؀34`s8^ m"fz3xY(&<^ACcS# CsJe Z=b*(4jN|\B$#í>ߢ]-rڶ}ESb:BS*|c=:0Eкwq,{+XSH't\|$ ¡h pB6' SUҊIfU!JeV#iBB/Q5V!p3jMsZٟaj&sø`-%L53>3 кۚO,n.e5c +m0%K9 AHfş=C|dp,ÈOuy63ĝ.58VO$}WwOTe^⏅wՉ'oZY2EiorNs]lw)tCss_&5jhZ9!lMGlͽu4+Zy*l 0<9CaVn%0(8ў? a‘eURQ3^zJlv\ۻc8 2-̥.6B=΅by_R< 8S8KlLәra{0a$ac<@?GdEqZ[D5}>g- a,) WW: ?}UhmڻpaG,{ WKL Hvp!]- W_drK mҥ&c|͹zF_|&2aWf5ۅD UG/iߋ0B,ь7{gP:\N9{/>[B *+g9|dS]h N@aQmwP3QJS}{_lU4w@zzǓlh=s>bn?nHY` ߴ#w?w$V|2bQ>^EЖ`bo.dU/!-k qj 7ΘN}ESWѭqQ8AIAMJ>kJi:ϥ%ΑD^L@gpyJ1*ZĈv,Qd"𚚕p">>緙sY OR8 ,wAFCcۆ#OlPR#6&EUpzݵNGgI;2ܠC7L!VU/e;/8mS{kyKVȐ7i!q5QQE)n|XI7LKYHObD{!m71$J4[7' Y+F|.\QnR)Z}/ T؋Kߖ,ˠe0iU#Z,yjwӂ0}R|_Fk9Dg'fM0A-')Eq^d𗤟\s" ~ru@ 6S'`6XhOaD>o96@^)ݍ;A 4QA?G ־W9| e6źK* 4[Pʠb9-{^ !3C҈HVfm t 3G¥NQzF 5;#+FC u"u[snAvA(5vry.G}ҡ,yjS\XV,X (3 uj:>!~rn'[3pP 9žw5+!j.nȲϢ}GLƳ.mL/--}-vhlO݄Y3=stpټ pNk-t;pݿ,hM~أG}v D|'疭}vP>7k,?Ө-4Op2s*;;W{\U#:9`0P=X3ߤxHh l$g6iV)3XMvAˣA$._s7lY> &Fb<@O= I䜖KkTM҈OݏH"F'-bcAx)(66I[.H7͕P0 }+0_?t*km 2~le\׍DUn)|#L3%7Ʃ{0П n6 iS*;zu]<ڠr0,@;/xNNEu InoՂ*複 ZSފwN9'4RS^1W^!Zݐuu/EpX:aLLREag4O97F:~i`aHIbL]mY]ȃWgEIJFkKl1ٰƌ UZ0R^ϖLc o. 'UKLmX2yxc#WŵX3]cxx 56 /a am|Y Hs8$^d끼핼b仮Nϝ%dDaeVw#x|I {*} a:D; Ȥ =r'9^B5%N]KvI-^ >d=r\}!=շpeXb`l(\ޞGXFMhhA7)P Ff0ri%Wi^C1{HvRIA`ֿMmCNazG[gl nf{_*S=~_,s,*1luAQV N;ݪ)2GhT)nwKՓjzgw˜r]d@Of>J*_JtB|W]}t-\I)?`ȶ/QiuJʔ),̉ZfDLfq)~Ű֚.9HH)S \Y8 [ #>c<iW,FY ~ApMq _I&kXF&/iMw ڦJ+' XOIG,rfց~cH_$OvK% JrePyWtԬO5q11ױ[Gi1CeHdѼ 9Xvw#Y~M薱XL$ ˹h:&IAZ3=Qi|Ǡ@/u _1wQ>;Oۏ'n$c_ʙy%Y]H+F,kLē 'Ta"O3ٚ& fODT(i1l*FQ!IP֐nNin喣0"c ʁI]5ܢ>\M (SPX9Fu T]扸T c k?-`F&fTp;ovwI'N:v~9ZJ rJE !f \Ԥ:o{. ;WVͶc6hJ| uw) Ul.>ƫ~6ʥFYY_&ɐ9[ٽ3$U#ԼHK>FoQ?Tf9軏O槼'L<*3ugWdu rkΦSG!V8VI{i^ZZc@3> WUayYԬ$1TA+2n!lACQn)L9&Lz o6(5&i>{hHCBAY=f%b'`G= !H+Vkݽ~'UX 3Gf;B2qfPS5MQOt)<i?Xb=q͑kD$Mb=Ue~^"`5I9`DN ez6ٴ76[PN)~=t哾Z=i' QAi7~+Z벳ׯZ{ZIT#mr+HLL gs.lBFE")Pb#Rh`kĽrђ')GUU-`/bL@kקzBLx's\k9=H;wR,nޱeVZ֛a6R6*i<>,u8ޓ78ds|QsY vFvY?[ޏ>IG:&>+ݚIHa {b _^))C{s;d"kg a\x$a{ݼALƆ7H?R\e#qqbKdBY`];r<5P8I>YH=~kDLd`F+}ϱr}u\4Gww~d=6*M1bE%e\FtT> \C@BC[ Źf(9 PwyΎ̤YsAG%0NZ1!ΨB؄4YM8x~+(eu Gݾ.&{dSPʤX-cY8wchˑCOAVcw0ʚFSh^7I(`1 _F)=߱+<1W´6d !/t:_!efB>;uż ]{IϧK#~ ?vCE3ڊ'tu ?52*)5Rx>3Zn8 SZݙJr)59TR{^zG0{3kd3%1Retjzf͓DzjgQd@$7vo+1Ž%.c^&,UOrϸ QAlȞK)Z?m$k˸`~AMA9,OtaM/$t@7 WpX?/З>@j :o6Td{c4k#Yլr8Ĭ眾T I]b8UrPc^wS#raI : < $zU#ȝT!C[N$۔(*eUpKOGuvYbzd0j'BOpw-,ViaM&g Q<#xh6qb|Z:(׶,ǿ` Du-MJg@WX욼"4Ij|6oZBҝ/'ڃq G'cA[B8)bhV% ǃ8^*%D``Q1,w)ytC ŽJsc_PR[j͘F jm@6zT"QUy]`3fZ>71JgO5}nLrBTЄAڇ#'|l4NWsowEzcCc@x[̄KN',Xv$$Y:Shbu$?D4<- IPu84wпΡJ=ƚ/q*N%L`M;g_MRW G DM]] <ؠqkєedϾ>zJa%}K#740'/z/Q)| JnD?[fд>G_K^} {  I)琺>^qS'o'9i;%nh m$Z=!J;R[p)4~f,zX9|OW,T6zyN<) 4/y[Sm)jdzyr(=g`ΡQui 7˨GO (y) i+3\`v%FV e!ZW#(^"̙peq _t%S\lrmr0cLcuQ?1^MU!8HXQB=ވpFgN"baK=zC/7h}K&)c:Ҝnt1Y1Jϣ7Inj1G>#&P/ 4F.dT VXk55>ekDr;<7`DB?M0R/A#LPQ~3:x*7GUƠgKοR"'dNLjPUwuޚ EW kKOhaFYw %viI5d%_iGCX@ZNTd'lԜ8V'csRn >WwvLӬ0B{Yޓd'JI ` 9Y&йɌEw)PǡW鶆A5%,)<о%%$uV+H=嬑sIcM pe>K/8[SW7UA^tp+3'1%Uehz"CFnϘ˅6%ƺP]яؾAy%CeˊdAGC(M'MS .L<|Y ^& xoy8ۜw"Px"GKMېub-ETmzyq۽΢C IsH-/s*^UK| ;,-tDK3C;ɮxp_Ğ)bLK-HZ(~rte{{aKE 2}$}j{^8t}5z"N#҈34%t&f x|I"v%nԑnw_fSL?Z+cqI$?),XV#tp}mLpN3 8:[tgœ\3IOGJ=ai7Nۏ @q O(\`Mҕ*#cՓ?,o5”9;> jE޹{Rrf8ˢ;쵺!I*'>iLgYl]}<"*Cii8&@YQڭ8O3O?Φ)g\`sS5J pT#0YR/'t"DW1VKÇf~Jup۳ξg=p?mܬ;CuQ~DxnO@)n^vk?xqQ>/;ڦd!  YZ