crash-eppic-7.2.1-lp150.2.5.1 4>$  Ap[/=„  T*ӧ.R7 :#1\OAW !2wW491XҖ ^XWOvx/Ll)t[coSJN`X1.YwK|QgOv)-70D e _JԼ9N&w `ub -FM p$ [ѶYڂ c%}SLY]a <?SrR=%C_0e5bd209b8ce454d718ec5b6cfa911a35541de4b7f10d32f3b162bfc4b3442565bca14e397c2c4ecaa8a2252b019dcb3b6807ed3I[/=„(77 VpORp>+~^<:c5u@$f3*3p<H?8d  c$5 Nj       L   (8i9i:iBƿGHIXYZ4[8\@]T^ubcodefluv04Ccrash-eppic7.2.1lp150.2.5.1Embeddable Pre-Processor and Interpreter for C extension for crashEPPIC is a C interpreter that permits easy access to the symbol and type information stored in a executable image like a coredump or live memory interfaces (e.g. /dev/kmem, /dev/mem). Although it has a strong association with live or postmortem kernel analysis, it is not constraint to it and can be embedded in any tools that is C friendly. Authors: -------- Luc Chouinard [sheep83hopenSUSE Leap 15.0openSUSEGPL-2.0-or-laterhttp://bugs.opensuse.orgDevelopment/Tools/Debuggershttp://people.redhat.com/anderson/linuxx86_642@3!AA큤[[[[[904ad0207b01ff4a19d5b50ffed8415eddb34bb344267f645ff5dd12bf022c5f8c86f76ca8811d32b33ddb17eee3f041ff27f8e7addfd1512d6ea2f4b8aaba677083175ae01eb50eb176ef89a99fcad2e71fd56cf95de8b689370d0960ab0a95rootrootrootrootrootrootrootrootrootrootcrash-7.2.1-lp150.2.5.1.src.rpmcrash-eppiccrash-eppic(x86-64)crash-sial    crashlibc.so.6()(64bit)libc.so.6(GLIBC_2.11)(64bit)libc.so.6(GLIBC_2.14)(64bit)libc.so.6(GLIBC_2.2.5)(64bit)libc.so.6(GLIBC_2.3)(64bit)libc.so.6(GLIBC_2.3.4)(64bit)libc.so.6(GLIBC_2.4)(64bit)libc.so.6(GLIBC_2.7)(64bit)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)7.2.13.0.4-14.6.0-14.0-15.2-14.14.1[j@Z@ZxG@ZX@Z)-@Z@Z Y:Y1S@Y&@XXP@XXXAX`@WWWH6WDB@VVV @V @VBU@U4@UUeUt@TԬTo)@TwTT@SS/S@S@SuS`SI*SK@R@RURUR@R@RR2@R1Q@Q-@QQQsP%PSOȮO@OOqON@O1@O ON@N@NN/N@N@N{#@M@M@MM@M'@M!@M L@LLLLL=L LT@K͗@KK@KK,K@K@KuBKuBKuBKl@KC)K@J%J%J%JL@JL@I@I@msuchanek@suse.comdmair@suse.comdmair@suse.comdmair@suse.comdimstar@opensuse.orgdmair@suse.comdmair@suse.comdmair@suse.commsuchanek@suse.comdmair@suse.comastieger@suse.comdmair@suse.comdmair@suse.demsuchanek@suse.comdmair@suse.delpechacek@suse.comptesarik@suse.commkubecek@suse.czptesarik@suse.comdmair@suse.devbabka@suse.comlpechacek@suse.comlpechacek@suse.comdmair@suse.comdmair@suse.comptesarik@suse.czptesarik@suse.comdmair@suse.comdmair@suse.comseife+obs@b1-systems.comdmair@suse.comdmair@suse.comjeffm@suse.comptesarik@suse.czptesarik@suse.czdimstar@opensuse.orgptesarik@suse.czdmair@suse.deptesarik@suse.czptesarik@suse.czmmarek@suse.czdmair@suse.dero@suse.deptesarik@suse.czdmair@suse.comdvaleev@suse.comptesarik@suse.czdmair@suse.comptesarik@suse.comdmair@suse.comdmair@suse.comcoolo@suse.comdmair@suse.comdmair@suse.comtabraham@suse.comaj@suse.dedmair@suse.comdmair@suse.comptesarik@suse.czdmair@suse.comdmair@suse.comdmair@suse.comdmair@suse.comptesarik@suse.czdmair@suse.comidonmez@suse.comdmair@suse.comptesarik@suse.czptesarik@suse.czptesarik@suse.czptesarik@suse.czlchiquitto@suse.comptesarik@suse.deptesarik@suse.deptesarik@suse.deidonmez@novell.comptesarik@novell.comdmair@novell.comdmair@novell.comptesarik@novell.comptesarik@novell.comptesarik@novell.comptesarik@novell.comptesarik@novell.comptesarik@novell.combernhard@bwalle.deptesarik@novell.comptesarik@novell.combernhard@bwalle.debernhard@bwalle.deptesarik@novell.comptesarik@novell.comptesarik@novell.comptesarik@novell.comptesarik@novell.comjengelh@medozas.deptesarik@suse.czptesarik@suse.czptesarik@suse.czptesarik@suse.czptesarik@suse.czptesarik@suse.czptesarik@suse.czptesarik@suse.czptesarik@suse.cz- Added: crash-Fix-and-an-update-for-the-ipcs-command.patch The update is required for Linux 4.11 and greater kernels, which reimplemented the IDR facility to use radix trees in kernel commit 0a835c4f090af2c76fc2932c539c3b32fd21fbbb, titled "Reimplement IDR and IDA using the radix tree". Without the patch, if any IPCS entry exists, the command would fail with the message "ipcs: invalid structure member offset: idr_top" (bsc#1092101) - fix license warning- Upgraded to 7.2.1 because it includes the fixes to support several core cases that recently were caused tofail to open. As a result, removed patches that were already superceded by 7.2.1 source. Removed: crash-ppc64-book3s-update-hash-page-table-geometry.patch crash-x86_64_kvtop-usable-symtab_init.patch crash-ppc64-ensure-chosen-stack-symbol-relates-to-an-actual-backtrace.patch crash-fix-error-cannot-resolve-schedulers-0001.patch crash-fix-error-cannot-resolve-schedulers-0002.patch crash-extend-direct-mapping-to-5TB.patch Modified: crash-allow-use-of-sadump-captured-KASLR-kernel.patch- Added: crash-fix-error-cannot-resolve-schedulers-0001.patch crash-fix-error-cannot-resolve-schedulers-0002.patch crash-extend-direct-mapping-to-5TB.patch Fixes Xen dump files that cannot be opened in hypervisor mode. bsc#1073993- Added crash-ppc64-ensure-chosen-stack-symbol-relates-to-an-actual-backtrace.patch With latest NMI IPI changes, crash_ipi_callback is found multiple times on the stack. Ensure the chosen symbol relates to an actual backtrace. bsc#1072718- Escape the usage of %{VERSION} when calling out to rpm. RPM 4.14 has %{VERSION} defined as 'the main packages version'.- Added crash-x86_64_kvtop-usable-symtab_init.patch to change x86_64_kvtop() so that it can be called during symtab_init() Added crash-allow-use-of-sadump-captured-KASLR-kernel.patch to allow use of dumps of KASLR enabled kernels that were captured by sadump. Both are bsc#1070278/FATE#323473- Upgrade the source tarball to version to 7.2.0 which requires the removal of patches that are then already applied: crash-gdb-add-proc_service-sync-with-GLIBC.patch crash-xen_add_support_for_domU_with_linux_kernel_from_3.19.patch A complete changelog is available via the crash source page at: http://people.redhat.com/anderson/crash.changelog.html Added crash-ppc64-book3s-update-hash-page-table-geometry.patch from hbathini@linux.vnet.ibm.com via bsc#1067702 to correct errors with virtual-to-physical address translation in the larger virtual address range of newer kernels. Added a BuildRequires of libelf that will populate the build workspace with libelf (from elfutils) even though it is not directly required by crash but is required by gdb (which crash nests). It no longer got picked up automatically for build and gdb and kernel module features had build errors before it.- crash-xen_add_support_for_domU_with_linux_kernel_from_3.19.patch: Since linux kernel 3.19 crash readmem() can't be used to read xen_p2m_addr associate memory directly during m2p translation. PV domU p2m mapping is also stored at xd->xfd + xch_index_offset and organized as struct xen_dumpcore_p2m. This patch implements a special reading function read_xc_p2m() to extract the mfns from xd->xfd + xch_index_offset and makes and crash support Xen PV domU dumpfiles for kernel 3.19 and later (bsc#1043501). - add crash-xen_add_support_for_domU_with_linux_kernel_from_3.19.patch- Merge SLE changes into Factory (bsc#1041638)- crash-stop_read_error_when_intent_is_retry.patch: When reading a memory image fails it may not be an error if it is still possible to switch image and retry the read. Fix the error message output to only occur if no retries are intended (bsc#1038839). - add crash-stop_read_error_when_intent_is_retry.patch- Exclude openSUSE from RT KMP build (bsc#1013843)- crash source nests gdb source but gdb has a new build error on Factory due to the bug and build environment modifications. The fix is upstream gdb but not upstream crash's gdb. Created crash patch: crash-gdb-add-proc_service-sync-with-GLIBC.patch to create the gdb patch in expanded crash and added to the gdb Makefile patch it's application. Resolves the build error.- Upgrade of source tarball to 7.1.8 from upstream and refresh of patches to align with the version. For a detailed changelog of the source tarball see: http://people.redhat.com/anderson/crash.changelog.html Adds a feature to permit the use of the command-line options "--kaslr=" and/or "--kaslr=auto" with the x86 32-bit architecture. - refresh crash-sles9-time.patch crash-compressed-booted-kernel.patch - drop crash-Fix-for-the-PPC64-bt-command-for-non-panicking-activ.patch merged upstram in 7.1.8- Fix analyzing fadump dumps on PPC64 (bsc#1022962). + crash-Fix-for-the-PPC64-bt-command-for-non-panicking-activ.patch- Upgrade of source tarball to 7.1.7 from upstream, removal of crash-kernel-4.7.patch (source includes it) and refresh of other patches to align with the version. For a detailed changelog of the source tarball see: http://people.redhat.com/anderson/crash.changelog.html Feature enhancements included from 7.1.6: - Introduction of support for "live" ramdump files, such as those that are specified by the latest QEMU version's mem-path argument of a memory-backend-file object, e.g.: $ qemu-kvm ...other-options... \ - object memory-backend-file,id=MEM,size=128m,mem-path=/tmp/MEM,share=on \ - numa node,memdev=MEM -m 128 and a live session run can be run against the guest kernel like so: $ crash live:/tmp/MEM@0 - Implemented support for the redesigned ARM64 kernel virtual memory layout that was introduced in Linux 4.6. Plus ARM64 support for 4k pages with 4-level page tables and 48 VA bits. NB: On live systems automatic operation with Linux 4.6 ARM64 kernels requires that CONFIG_RANDOMIZE_BASE is not configured. If it is configured then use with a live system requires two - -machdep arguments, e.g.: - -machdep phys_offset= - -machdep kimage_voffset= - Improvement of the ARM64 bt -f display so that, for most cases, the stack frame delimiter will be the location of the old FP and LR pair. - New bt -v option that checks all tasks for evidence of stack overflows. - Incorporation of an alternative stack backtrace mathod accessed directly using bt -o and the default method can be toggled between the two using bt -O. - Fix for the case where the sym/dis commands fail for a symbol name that is composed entirely of hexadecimal characters and was previously interpreted as an address. - Determine structure member data if the member is contained in an anonymous structure or union (no longer necessary to use a] discrete gdb "printf" command to find the offset of it). - Session initialization speed up. - Addition of "list -S" and "tree -S" options (similar to the -s option of each command) where member values are read from memory instead of being interpreting gdb output (much faster behavior for 1-, 2-, 4- and 8-byte members). - Fix to recognize x86_64 Linux 4.8-rc1 and later kernels that are configured with CONFIG_RANDOMIZE_MEMORY. - Support for PPC64 virtual address translation of radix MMU. - Improvement of "dev -d" output to display I/O statistics for devices that use the blk-mq interface. Feature enhancements included from 7.1.7: - Restore x86_64 "dis" command's symbol translation for call or jump target addresses for kernels configured with CONFIG_RANDOMIZE_BASE. - Re-factor of the trace extension module to locate all of the ftrace buffers and extracts data from each of them rather than only the primary one. - Support for s390x CONFIG_THREAD_INFO_IN_TASK configuration so that "bt" command no longer shows incomplete output. - Support for live ARM64 kernels from Linux 4.6 that have the kernel image loaded anywhere in physical memory. - Update of /dev/crash/kernel driver to v1.3 which adds support Linux 4.6 and later ARM64 kernels configured with CONFIG_HARDENED_USERCOPY and S390x kernels that use xlate_dev_mem_ptr() and unxlate_dev_mem_ptr() rather than kmap() and kunmap(). - refresh eppic-support-arm64.patch crash-debuginfo-compressed.patch - drop crash-linux-4.6-printk-flags.patch merged upstream in 7.1.6- Enabled RT KMP build (bsc#1005578)- crash-linux-4.6-printk-flags.patch: Fix warning "failed to read pageflag_names entry" on Linux 4.6 (bsc#978601).- crash-kernel-4.7.patch: support 4.7 kernel (page._count renamed to page._refcount)- eppic-support-arm64.patch: Support for ARM64 (FATE#320844).- Upgrade of source tarball to 7.1.5 from upstream and fix of crash-sles9-time.patch for the version and refresh of other patches to align with the version. For a detailed changelog of the source tarball see: http://people.redhat.com/anderson/crash.changelog.html includes a fix for bsc#977306. Feature enhancements include: - "whatis -r" and "whatis -m" commands that allow search for data structure of a specified size and that contains a member of a given type respectively.- Upgrade to 7.1.4 from upstream. For a detailed changelog see http://people.redhat.com/anderson/crash.changelog.html- Disable RT KMP build (bsc#962719)- Enable RT KMP build (bsc#948840)- For 7.1.3 ppc64le the following patches are obsoleted by mainline crash-gdb-7.6-add-powerpc64le-linux.patch crash-gdb-7.6-bound_minimal_symbol.patch crash-gdb-7.6-floatformat.patch crash-gdb-7.6-ppc64-ELFv2-trampoline-match.patch crash-gdb-7.6-ppc64_sysv_abi_push_float.patch crash-gdb-7.6-ppc64le.patch crash-gdb-7.6-ppc_insns_match_pattern.patch crash-gdb-7.6-update-autoconf-2013-04-24.patch crash-gdb-7.6-update-autoconf-2013-06-10.patch crash-gdb-7.6.series crash-patch-gdb.patch- Update to 7.1.3 (bsc#946458) o Introduction of "dis -f
" which disassembles from the address to the end of the function o Introduction of "dis -s
" which displays the filename and line number associated with the specified text location, followed by a source code listing if available. o Addition of a new "--src " command line option for use by the "dis -s" option if the kernel source is not located in the standard location. o Do not search for a panic task in s390x dumpfiles that are marked as a "live dump" o Fix unnecessary error messages when a directory is used as a command line argument o See http://people.redhat.com/anderson/crash.changelog.html for the complete changelog - Removed these patches obsoleted by mainline: crash-x86_64-nested-nmi.patch crash-keep-file-orig-with-name-on-select.patch crash-kmem_cache-downsize.patch crash-s390x-add-vector-support.patch - Refreshed patches- crash-move-xen-dom0-handling-into-own-file.patch: Move Xen Dom0 handling into xen_dom0.c (FATE#316467). - crash-move-xen-p2m-map.patch: Move xen p2m map initialization to xen_kdump_p2m (FATE#316467). - crash-use-xen_machine_addr-command.patch: Use XEN_MACHINE_ADDR command flag instead of overriding readmem (FATE#316467). - crash-move-xen-elf-note-processing.patch: Move Xen ELF note processing to xen_dom0.c (FATE#316467). - crash-add-xen-dom0-support-for-kdump.patch: Add Xen Dom0 support for kdump compressed files (FATE#316467).- crash-s390x-add-vector-support.patch: SIMD support for dump tools (z13) (FATE#318058).- Upgrade to 7.1.2 from upstream. For a detailed changelog see http://people.redhat.com/anderson/crash.changelog.html - Refreshed patch series with some changes required to adjust for git host changes in eppic-switch-to-system-lib.patch- Upgrade to 7.1.1 from upstream. At the time of writing the only published changelog was supplied by e-mail list and is as follows - Fix for two minor issues with the "net" command. Without the patch, the "net -a" option appends its correct output with the command's "Usage:" message; and if either the "net -x" or "net -d" options are used without also specifying "-s" or "-S", the error message would indicate "net: illegal flag: 800000" or "net: illegal flag: 1000000" instead of showing the command's "Usage:" message. (anderson@redhat.com) - If the kernel (live or dumpfile) has the TAINT_LIVEPATCH bit set, or if the Red Hat "kpatch" module is installed, the tag "[LIVEPATCH]" will be displayed next to the kernel name in the initial system banner and by the "sys" command. This new tag replaces the "[KPATCH]" tag that was introduced in crash-7.0.7. (anderson@redhat.com) - Addressed three Coverity Scan complaints in vmware_vmss.c: 50:leaked_storage: Variable "fp" going out of scope leaks the storage it points to. 53:leaked_storage: Variable "fp" going out of scope leaks the storage it points to. 256:warning: Use of memory after it is freed (anderson@redhat.com) - Remove the LKCD-only "propeller spinner" seen when a dumpfile read requires more than 2048 page header accesses. This was put in place because of the non-random-access design of LKCD dumpfiles. Without the patch, the spinner display is intermingled with command output, which complicates the parsing of the output. (watters.sam@gmail.com) - Fix to support the Linux version increment from 3 to 4. Without the patch, both dumpfile and live sessions fail during initialization, issuing the message "WARNING: kernel version inconsistency between vmlinux and dumpfile" or "WARNING: kernel version inconsistency between vmlinux and live memory", followed by the nonsensical fatal error message "crash: incompatible arguments: vmlinux is not SMP -- vmcore is SMP" or "crash: incompatible arguments: vmlinux is not SMP -- live system is SMP". To prevent unexpected kernel version bumps in the future, support has been added for version 5. (anderson@redhat.com) - Add support for more than 16TB of physical memory space in the SADUMP dumpfile format. Without the patch, there is a limitation caused by several 32-bit members of dump_header structure, in particular the max_mapnr member, which overflows if the dumpfile contains more than 16TB of physical memory space. The header_version member of the dump_header structure has been increased from 0 to 1 in this extended new format, and the new 64-bit members will be used. (d.hatayama@jp.fujitsu.com) - Fix for command lines that are redirected to a pipe. Without the patch, if an external piped-to command contains a quoted string that includes a "|" character, the command fails with the message "crash: pipe operation failed". (anderson@redhat.com) - Fix for insecure temporary file usage in _rl_tropen() as reported by readline library CVE-2014-2524. (anderson@redhat.com) - When the gdb-.patch file has changed and a rebuild is done from within a previously-existing build tree, the "patch -N" option is used to ignore patches that have been previously applied; this patch also applies the "patch -r-" option to prevent unnecessary .rej files from being created. (anderson@redhat.com) - Fix to account for Xen hypervisor's "domain" structure member name change from "is_paused_by_controller" to "controller_pause_count". Without the patch, in Xen 4.2.5 and later, the crash session fails during initialization with the error message 'crash: invalid structure member offset: domain_is_paused_by_controller". (dietmar.hahn@ts.fujitsu.com) - During initialization, reject useless ARM64 "(A)" and "(a)" absolute symbols that are below the text region. Without the patch, several recently-introduced absolute symbols have been introduced into the kernel, which will be displayed by "sym -l" prior to the first kernel virtual address symbol, and will show up in command output where memory values are translated into kernel symbol references. (anderson@redhat.com) - Fix for ARM64 kernels to account for changes in the virtual memory layout introduced in Linux 3.17. The vmalloc region end address, and the vmemmap start and end addresses are now calculated at kernel build time, because they depend upon the size of a struct page. Accordingly, the crash utility needs to calculate those three address values dynamically, after the embedded gdb module has initialized. Without the patch, reads of page structures return invalid data due to incorrect virtual-to-physical translations of memory in the vmemmap range. This in turn causes commands that require page structure contents to fail or show invalid data, such as "kmem -p", "kmem -[sS]", and the "kmem -[fF]" options. (anderson@redhat.com) - Fix to support ELF vmcore dumpfiles whose PT_LOAD file offset values of their respective memory segments are not laid out sequentially from low to high in the dumpfile. This has only been seen in ELF dumpfiles created by VMware's "vmss2core -M" facility. Without the patch, the crash session may fail during initialization, either with the message "cannot malloc ELF header buffer", or "crash: : not a supported file format". (anderson@redhat.com) - Enhancement to the support of VMware .vmss suspended state dumpfiles. There may be holes in the memory address saved for PCI, etc. In such cases, the memory dump is divided into regions. With this patch, up to 3 memory regions are supported. (hfu@vmware.com) - Fortified the error handling of task gathering from the pid_hash[] chains during session initialization. If a chain has been corrupted, the patch prevents the sequence from entering an infinite loop, and the error messages associated with corrupt/invalid chains have been updated to report the pid_hash[] index number. (anderson@redhat.com) - Implemented a new STRDUPBUF() utility that will duplicate an existing string into a buffer allocated with GETBUF(). As is the case with any buffer allocated with GETBUF(), it is only meant to exist during the life-span of the current command. If it is not explicitly freed via FREEBUF(), then it will be freed automatically prior to the next command. (anderson@redhat.com) - Implemented a new fill_struct_member_data() function that gathers a bundle of data that describes a structure member. The function receives a pointer to a struct_member_data structure, in which the caller has initialized the "structure" and "member" name pointers: struct struct_member_data { char *structure; char *member; long type; long unsigned_type; long length; long offset; long bitpos; long bitsize; }; A gdb "printm" command is crafted using those two fields, and the output of the command is used to initialize the remaining six fields. Adapted from Qiao Nuohan's "pstruct" extension module. (anderson@redhat.com, qiaonuohan@cn.fujitsu.com) - Implemented a new "runq -c cpu(s)" option to display the run queue data of specified cpus. It can be used in conjunction with all runq command options. The cpus must be specified in a comma- and/or dash-separated list; for examples, "3", "1,8,9", "1-23", or "1,8-15". (anderson@redhat.com) - Build extension modules that utilize the generic extensions/Makefile with -g. In addition, build the snap.c extension module with -g. (rabinv@axis.com) - Several fixes, updates, and enhancements for 32-bit MIPS support: (1) The MIPS general purpose registers in the elf_gregset_t don't start at index 0 but at index 6. (2) Adjust for the kernel's pt_regs structure changes between kernel versions. For example, fields are inserted into the middle based on build time options, and the amount of padding at the head of the structure was changed relatively recently. To handle this, split the structure definition into two parts and get the offsets of these two parts dynamically. (3) Do not display each parsed kernel symbol during initialization when invoked with "crash -d8". (4) Add support for loading raw MIPS ramdump dumpfiles. (5) Add support for compressed kdump dumpfiles. (rabinv@axis.com) - Fix for a typo in "help foreach", and a fix for a spelling error in "help input". (weijg.fnst@cn.fujitsu.com) - Fix for "and and" and "the the" typos in the README file. (weijg.fnst@cn.fujitsu.com) - Fix to address the Xen 4.5.0 hypervisor symbol name change from "dom0" to "hardware_domain". Without the patch, the crash session fails with the error message "crash: cannot resolve: dom0". (dslutz@verizon.com) - Fix for a regression in crash-7.1.0 that causes failures when the "crash -t" option is run on a live system, and when analyzing remote Linux kernels. Without the patch, "crash -t" on a live system fails with the message "crash: cannot open remote memory source: /dev/mem", and attempts to analyze a Linux kernel remotely just shows the kernel timestamp and exits immediately. (dslutz@verizon.com, anderson@redhat.com) - Speed up the session invocation time of "flattened" format dumpfiles created by the makedumpfile(8) facility. When sorting the blocks of memory by their intended ELF or compressed kdump file offsets, the patch replaces the bubble-sort method that is currently used with an insertion sort method. (dslutz@verizon.com) - Remove the non-existent "-L" option from the "ps" command's mutually- exclusive options error message. (vvs@parallels.com) - Fix for the "irq", "mount", "kmem -p" and "kmem -v" commands when they are used in an input file. If more than one of any of those four commands are used in an input file, the output of the second and subsequent command instances will not display their respective command headers. (anderson@redhat.com) - Implemented a new "kmem -m" option that is similar to "kmem -p", but it allows the user to specify the page struct members to be displayed. The option takes a comma-separated list of one or more page struct members, which will be displayed following the page structure address. The "flags" member will always be expressed in hexadecimal format, and the "_count" and "_mapcount" members will always be expressed in decimal format. Otherwise, all other members will be displayed in hexadecimal format unless the current output radix is 10 and the member is a signed/unsigned integer. Members that are data structures may be specified by the data structure's member name, or expanded to specify a member of that data structure. For example, "-m lru" refers to a list_head data structure, in which case both the list_head.next and list_head.prev pointer values will be displayed; if "-m lru.next" is specified, just the list_head.next value will be displayed. (atomlin@redhat.com, anderson@redhat.com) - Support enhancement for the 32-bit MIPS architecture that retrieves the per-cpu registers from the NT_PRSTATUS notes stored in the header of compressed kdump dumpfiles. (rabinv@axis.com) - Fix to remove an invalid warning message on ARM64 if a crash session is invoked with the "-d" debug flag. Without the patch, the invalid message is "WARNING: SPARSEMEM_EX: questionable section values". (anderson@redhat.com) - Remove the leftover ".constructor" build file in the extensions subdirectory when "make extensions" is complete, and update the top-level .gitignore file to ignore post-build extensions subdirectory files. (anderson@redhat.com) - Fix for a segmentation violation generated by the "help -[n|D]" options on ARM64 compressed kdumps. (anderson@redhat.com) - Additional output for the "help [-D|-n]" options on ARM64. For ELF kdump vmcores and compressed kdumps, the elf_prstatus structure in each NT_PRSTATUS note will be translated. (anderson@redhat.com) - The "help -r" option has been extended to dump the ARM64 registers stored in each per-cpu NT_PRSTATUS note in compressed kdump and ELF kdump dumpfiles. (anderson@redhat.com) - Fix for the ARM64 page size determination on Linux 4.1 and later kernels. Without the patch, the crash session fails during initialization with the message "crash: invalid/unsupported page size: 98304" on kernels with 64K pages. On kernels with 4K pages, the message is "crash: invalid/unsupported page size: 6144". In addition, the "-p " command line override option had no effect on ARM64; that has been fixed as well. (anderson@redhat.com) - Fix for the DATE display in the initial system banner and by the "sys" command to account for the Linux 3.17 change that moved the "timekeeper" symbol and structure into a containing tk_core structure; the "shadow_timekeeper" timekeeper will be used as an alternative. Without the patch, the DATE shows something within a few hours of the Linux epoch, such as "Wed Dec 31 18:00:00 1969". (kmcmartin@redhat.com) - Fixes for the translation of ARM64 PTEs, as displayed by the "vm -p" and "vtop" commands. Without the patch, if "vm -p" references a swapped-out page on Linux 4.0 and later kernels, the SWAP location may indicate "(unknown swap location)", and will show an invalid OFFSET value; on Linux 3.13 and later kernels, running "vtop" on a user virtual address incorrectly translates the PTE contents of swapped out pages by showing a PHYSICAL address and FLAGS translation instead of the SWAP device and OFFSET. It is possible that there may be PTE bit translation errors on other kernel versions; the patch addresses the changes in ARM64 PTE bit definitions made in Linux 3.11, 3.13, and 4.0 kernels. (anderson@redhat.com) - Enhanced the "struct.member" display capability of the "struct", "union", "task", "list" and "tree" commands. If a specified structure member contains an embedded structure, the output may be restricted to just the embedded structure by expressing the .member argument as "member.member". If a specified structure member is an array, the output may be restricted to a single array element by expressing the .member argument as "member[index]". Furthermore, these embedded member specifications may extend beyond one level deep, for example, by expressing the member argument as "member.member.member", or "member[index].member". (Alexandr_Terekhov@epam.com, anderson@redhat.com) - Fix for any command that passes strings to gdb for evaluation, where the string contains a parentheses-within-parentheses expression along with a ">" or ">>" operator inside the outermost set of parentheses. Without the patch, a command such as the following fails like so: crash> p ((1+1) >> 1) p: gdb request failed: p ((1+1) crash> (anderson@redhat.com) - Fix for the handling of ARM64 kernel module per-cpu symbols. Without the patch, if the debuginfo data of an ARM64 kernel module that contains a per-cpu section is loaded by "mod -s " or "mod -S", commands such as "bt" or "sym" may incorrectly translate the module's virtual addresses to symbol names. (Jan.Karlsson@sonymobile.com) - 0001-Prepare-for-the-future-increment-of-Linux-3.x-to-4.x.patch: Dropped. Handling kernel 4.0 is now part of the upstream source.- add patch from upstream to handle kernel 4.0 0001-Prepare-for-the-future-increment-of-Linux-3.x-to-4.x.patch- Upgrade to 7.1.0 from upstream. For a detailed changelog see http://people.redhat.com/anderson/crash.changelog.html - Refreshed patch series with only re-alignment required.- Upgrade to 7.0.9 from upstream, For a detailed changelog see http://people.redhat.com/anderson/crash.changelog.html - Refreshed patch series but no modifications required.- Upgrade to 7.0.8 from upstream. For a detailed changelog see http://people.redhat.com/anderson/crash.changelog.html - Dropped (now in upstream): - crash-keep-file-orig-with-name-on-select.patch: - As crash-7.0.8/gdb-7.6-ppc64le-support.patch: - crash-gdb-7.6-ppc64_sysv_abi_push_float.patch - crash-gdb-7.6-bound_minimal_symbol.patch - crash-gdb-7.6-add-powerpc64le-linux.patch - crash-gdb-7.6-update-autoconf-2013-04-24.patch - crash-gdb-7.6-ppc_insns_match_pattern.patch - crash-gdb-7.6-floatformat.patch - crash-gdb-7.6-ppc64-ELFv2-trampoline-match.patch - crash-gdb-7.6-update-autoconf-2013-06-10.patch - crash-gdb-7.6-ppc64le.patch- crash-kmem_cache-downsize.patch: Fix kmem slab initialization failures (bnc#885082).- Module.supported: mark crash.ko supported (bnc#891375).- Rename rpmlintrc to %{name}-rpmlintrc. Follow the packaging guidelines.- Upgrade to 7.0.7 from upstream. For a detailed changelog see http://people.redhat.com/anderson/crash.changelog.html - crash-x86_64-nested-nmi.patch: Dropped (now in upstream).- crash-keep-file-orig-with-name-on-select.patch Fix the namelist selection for gdb to have background state used to select file to delete for expansion of compressed file (bnc#877367)- crash_enable_snappy_support.patch: enable snappy support.- crash-x86_64-nested-nmi.patch: Fix NMI backtrace for kernels patched to handle nested NMIs (bnc#874179).- Add # needssslcertforbuild to use the project's certificate when building in a home project.- Implementation of 7.0.5 from upstream, including patch refresh Changelog: - Fix for the "runq -g" option for kernels that are configured with CONFIG_FAIR_GROUP_SCHED, but not CONFIG_CFS_BANDWIDTH. Without the patch, the command fails with the message "runq: invalid structure member offset: cfs_rq_throttled". (vinayakm.list@gmail.com) - Add support for Xen PVH guest types introduced in Xen 4.4. Without the patch, running against a Xen 4.4 hypervisor binary would fail during session initialization with the error message "crash: invalid structure member offset: domain_is_hvm". In addition, the PVH guest type is being registered internally as an HVM guest type, the debug "help -X ofs" command's display of the domain_domain_flags offset has been fixed to show it in decimal, and the setting of the internal dc->domain_flags has been fixed to contain all flags set, not just the first one found. (dslutz@verizon.com) - Fix for the "kmem -S" command on Linux 3.1 and later kernels that are configured with CONFIG_SLUB. Because the the page structure's inuse and objects fields used by SLUB were changed from discrete u16 types to bit-fields within an unsigned int, the display of per-node partial slab statistics are incorrect. Without the patch, the TOTAL and ALLOCATED values are incorrectly shown as equal values, and therefore the FREE value is always zero. (anderson@redhat.com) - Fix for the "kmem -S" command for kernels that are configured with CONFIG_SLUB. Eash per-cpu slab object dump may show incorrect ALLOCATED and FREE values; and as seen on Linux 3.5 and later kernels, the TOTAL value and the number of individual objects dumped may also be incorrect (too small). (anderson@redhat.com) - When executing the commands from an input file specified by the "-i " command line option, or when accepting input from a file as a set of commands or as a set of command arguments using the "<" redirection character, unconditionally cease the operation if CTRL-c is entered. Without the patch, depending upon the command that was running when the SIGINT was received, the operation may continue uninterruptibly until the file contents are consumed. (anderson@redhat.com) - Enhanced the "bt -F" option such that if "-F" is entered twice, and if the stack frame contents reference a slab cache object, both the slab cache name and the stack contents will be displayed within brackets. (anderson@redhat.com) - Enhanced the "rd -S" option such that if "-S" is entered twice, and if the memory contents reference a slab cache object, both the slab cache name and the memory contents will be displayed within brackets. (anderson@redhat.com) - Fix for the X86_64 "bt" command to prevent an unwarranted message indicating "WARNING: possibly bogus exception frame" generated from a blocked kernel thread that was in the process of exec'ing a user process via the call_usermodehelper() facility. (anderson@redhat.com) - Fix for the X86_64 "bt" command to more correctly determine the function frame that called into an interrupted function. Without the patch, the first frame just above an IRQ exception frame register dump may show an invalid/stale function. (anderson@redhat.com) - Fix for the X86_64 "bt" command if a page fault exception was generated by the invalid contents of the RIP register. Without the patch, the exception frame register dump is not displayed above the "page_fault" stack frame; and in a related issue, the "bt -e" option will not find and display the exception frame. (anderson@redhat.com) - When invoking a crash session with a compressed vmlinux file, make the same host-machine/vmlinux endian verification that is done with uncompressed vmlinx files. (anderson@redhat.com) - Reduce the number of CTRL-c entries required to unconditionally terminate any manually-entered command from three to one. (anderson@redhat.com) - Fix for the X86_64 "bt" command if an async page fault exception occurred in a KVM guest running a Linux 2.6.38 or later kernel. Without the patch, the exception frame register dump is not displayed above the "async_page_fault" stack frame. (anderson@redhat.com)- disable build_kmp on i586 and s390, SLE-12 does not build a runnable kernel there- Enable ppc64le: o crash-patch-gdb.patch: allow applying custom gdb patches o crash-gdb-7.6.series: series file for gdb patches o gdb-7.6-ppc64_sysv_abi_push_float.patch: backported dependency o gdb-7.6-bound_minimal_symbol.patch: dtto o gdb-7.6-add-powerpc64le-linux.patch: dtto o gdb-7.6-update-autoconf-2013-04-24.patch: dtto o gdb-7.6-ppc_insns_match_pattern.patch: dtto o gdb-7.6-floatformat.patch: dtto o gdb-7.6-ppc64-ELFv2-trampoline-match.patch: dtto o gdb-7.6-update-autoconf-2013-06-10.patch: dtto o gdb-7.6-ppc64le.patch: patch used for the gdb package- Implementation of 7.0.4 from upstream and patch refresh. - Fix for the "ps" command's display of per-task RSS and %MEM values in Linux 2.6.34 and later kernels in which SPLIT_RSS_COUNTING is enabled. Without the patch, the values are only taken from each task's mm_struct.rss_stat structure, which may contain stale values because they may not be synchronized with the RSS values stored in each per-thread task_struct.rss_stat structure; this may lead to invalid or slightly low RSS values, and worst-case, the %MEM value may show garbage percentage values. (vinayakm.list@gmail.com) - Addressed a few (harmless) Coverity Scan complaints in diskdump.c: 1579:dead_error_line – Execution cannot reach this expression ""|"" inside statement "fprintf(fp, "%sDUMP_DH_COMP...". 1574:dead_error_line – Execution cannot reach this expression ""|"" inside statement "fprintf(fp, "%sDUMP_HEADER_...". 1571:dead_error_line – Execution cannot reach this expression ""|"" inside statement "fprintf(fp, "%sDUMP_HEADER_...". (anderson@redhat.com) - Addressed two warnings when compiling diskdump.c on 32-bit architectures when the snappy library is built in: diskdump.c:1046: warning: passing argument 3 of 'snappy_uncompressed_length' from incompatible pointer type /usr/include/snappy-c.h:120: note: expected ‘size_t *’ but argument is of type ‘ulong *’ diskdump.c:1056: warning: passing argument 4 of ‘snappy_uncompress’ from incompatible pointer type /usr/include/snappy-c.h:103: note: expected ‘size_t *’ but argument is of type ‘ulong *’ (anderson@redhat.com) - Created a simpler interface with the internal do_list() function. Currently, if a caller wants to gather the contents of a list into an array, it must do the following: (1) call hq_open() so that the list contents will be verified and saved in the hash queue (2) call do_list() to store the list in the hash queue and return the number of entries in the list (3) allocate a buffer to store the array of entries in the list (4) pass the allocated buffer to retrieve_list() to be populated from the hash queue (5) call hq_close() With this patch, if the passed-in list_data.flags field has a new LIST_ALLOCATE bit set, then do_list() will perform steps (1), (3), (4) and (5) above. The caller can access the allocated array via a new list_data.list_ptr member, and, when done parsing the list, the allocated buffer should be returned via FREEBUF(). The only restriction is that the hash queue cannot be currently in use, or the do_list() call will fail. It should also be noted that there are circumstances where it still makes sense that steps (1), (3), (4) and (5) are performed by the do_list() caller. (anderson@redhat.com) - Modified the internal parent_list() function, used by "ps -p", to utilize the simpler new do_list() functionality described above. (anderson@redhat.com) - Modified the internal dump_vmap_area() function, used by the "kmem -v", "kmem
" and "search" commands, to utilize the simpler new do_list() functionality. (anderson@redhat.com) - Modified the internal nr_blockdev_pages() function, used by the "kmem -i", to utilize the simpler new do_list() functionality. (anderson@redhat.com) - Modified the internal get_mount_list() function, used by the "mount" and "files -d" commands, to utilize the simpler new do_list() functionality. (anderson@redhat.com) - Modified the internal get_kmem_cache_list() function, used by the "kmem -[sS]", "kmem
", "rd -S" and "bf -F" commands, to utilize the simpler new do_list() functionality. (anderson@redhat.com) - Modified the internal show_net_devices_v2() and show_net_devices_v3() functions, used by the "net" command, to utilize the simpler new do_list() functionality. (anderson@redhat.com) - The "help -r" option has been extended to dump the X86 and X86_64 registers stored in the NT_PRSTATUS notes in netdump ELF, kdump ELF, and compressed kdump dumpfiles. Without the patch, the option only supports ELF dumpfiles created by the "virsh dump --memory-only" facility. (anderson@redhat.com) - Modified the "runq -g" display to show the CFS task_group and cfs_rq addresses; also the current task is also displayed in its CFS or RT queue with with the notation "[CURRENT]" appended to the task data. (Anthony.Chen@Teradata.com) - Additional modification to the "runq -g" to display the task_group and rt_rq addresses for the RT queues, similar in nature to the CFS queue changes are done by the patch above. In addition, the CFS rb_root and RT prio_array addresses are no longer shown given that they can be determined by looking at the cfs_rq and rt_rq structures whose addresses are now displayed. (anderson@redhat.com) - Modified the behavior of the "mod -t" option when running against Linux 2.6.18 and earlier kernels such that the hexadecimal value of the module->license_gplok member is always displayed. Without the patch, if a module's license_gplok boolean or bitmask value is 0, it would only be displayed if the module was unsigned. (anderson@redhat.com, atomlin@redhat.com) - Modified the internal dump_tasks_in_task_group_rt_rq() and dump_RT_prio_array() functions, used by the "runq" command, to utilize the simpler new do_list() functionality. (anderson@redhat.com) - Resurrection of the remote analysis capability for use with the "xen-crashd" daemon running on a Xen Dom0 host, which communicates with a paused or shutdown DomU guest kernel. The daemon can be accessed like so: $ crash localhost:5001,/dev/xenmem vmlinux (dslutz@verizon.com) - Prevent the X86_64 "bt" command from using starting RSP and RIP values taken from the NT_PRSTATUS notes of kdump dumpfiles if the RSP address is not in the task's kernel stack, or in any of the relevant per-cpu exception stacks. This can happen when the number of NT_PRSTATUS notes does not match the number of online cpus. Without the patch, the command may generate a segmentation violation, fail with the error message "bt: cannot determine starting stack pointer", or fail with an error message indicating that the command "cannot transition" from an exception stack to the previous stack. (anderson@redhat.com) - Fix for the X86_64 "bt" command for displaying the backtraces of active tasks running on the non-crashing cpus in kdump dumpfiles in which the "crash_nmi_callback" function frame does not appear in the per-cpu NMI exception stacks. That function frame is normally used as the starting point for the backtraces of those tasks, but if it does not exist, the "notify_die" frame will be used instead. Without the patch, the backtraces of the active non-crashing tasks are incorrect or incomplete. (anderson@redhat.com) - Increment the X86_64 NR_CPUS maximum value from 5120 to 8192 to be able to account for Linux 3.13-rc1 and later kernels in which CONFIG_MAXSMP has been configured. If that is true, the CONFIG_NR_CPUS value is overridden, and the kernel NR_CPUS value will be set to 8192. This will cause the crash session to fail with the messages "WARNING: kernel-configured NR_CPUS (8192) greater than compiled-in NR_CPUS (5120)" and "crash: recompile crash with larger NR_CPUS". (anderson@redhat.com) - A crash-7.0.3 fix for the proper determination of the kernel NR_CPUS configurable for Linux 3.8 and later kernels introduced a regression in Linux 3.8 and later kernels if: (1) the kernel is configured with CONFIG_SLAB, and (2) the sum of the kernel's NR_CPUS and MAX_NUMNODES values exceed the NR_CPUS value compiled into the crash utility. Without the patch, the crash session generates a segmentation fault while it indicates "please wait: gathering kmem slab cache data". (anderson@redhat.com) - Update for the extensions/trace.c extension module to support the ftrace data structure changes introduced in Linux 3.10 kernels. Without the patch, loading the module with the "extend" command fails with the error message "extend: trace.so: no commands registered: shared object unloaded". (d.hatayama@jp.fujitsu.com) - Increment the S390 and S390X NR_CPUS maximum value from 64 to 512. (holzheu@linux.vnet.ibm.com) - Implemented support for the redesigned per-slab object bookkeeping that was introduced in Linux 3.13-rc1 for kernels configured with CONFIG_SLAB. In those kernels, the head page structure associated with each slab is overloaded to serve as the (now removed) slab data structure, and the array of kmem_bufctl_t data structures that used to be appended to each slab data structure for object management has been replaced by a new freelist stack mechanism. Without the patch, the crash session would fail during initialization with the error message "crash: invalid structure member offset: kmem_cache_s_c_num". It should be noted that this patch has only been tested on 3.13-rc1 kernels, which do not have the modified freelist_idx_t in place as of yet, so the replacement of integer-sized indexes with byte or short sized indexes had not been checked in. Furthermore, if this proposed patch set gets accepted: [RFC][PATCH 0/3] re-shrink 'struct page' when SLUB is on. https://lkml.org/lkml/2013/12/11/589 then both CONFIG_SLAB and CONFIG_SLUB support in the crash utility will be broken yet again. (anderson@redhat.com) - In order to facilitate the building of the crash binary with either or both of the optional LZO or SNAPPY compression libraries, two new Makefile targets have been added: $ make lzo $ make snappy Without the patch, the CFLAGS.extra and LDFLAGS.extra files must be created or modified as described in these changelog entries: http://people.redhat.com/anderson/crash.changelog.html#LZO http://people.redhat.com/anderson/crash.changelog.html#SNAPPY This patch simply does the work automatically. After having done it one time, there is no need to use the targets for subsequent builds. The relevant libraries must pre-exist on the build machine. (anderson@redhat.com) - Long overdue update of the README file. (anderson@redhat.com)- enable ppc64le- crash-compressed-booted-kernel.patch: Fix a bug that may cause removal of the booted kernel's vmlinux image (bnc#828260).- Implementation of 7.0.3 from upstream and patch refresh. - Fix for the ARM architecture if the backtrace unwind information cannot be gathered during session initialization. Without the patch, the two unwind-related warning messages indicating "WARNING: UNWIND: failed to gather unwind_table list" and "WARNING: UNWIND: failed to initialize module unwind tables" are followed by the fatal error message "crash: cannot hash task_struct entries". (anderson@redhat.com) - Fix for the "help -[Dn]" dumpfile information display of the GUID EFI table in the header of SADUMP dumpfiles. Without the patch, only 33 of the 36 bytes in the table are translated. (d.hatayama@jp.fujitsu.com) - Fix for the determination of the kernel NR_CPUS configurable for Linux 3.8 and later kernels that are configured with CONFIG_SLAB. Without the patch, the kernel's compiled-in NR_CPUS value was incorrectly calculated to be the sum of the kernel's NR_CPUS and MAX_NUMNODES configurables. (anderson@redhat.com) - In the next release of makedumpfile, the status field of the dumpfile header of compressed kdumps will show the compression type that was utilized. The "help -[Dn]" output has been updated to display that information. (anderson@redhat.com) - For kernels configured with CONFIG_SLAB in which an array_cache pointer referenced by a kmem_cache structure is invalid, the individual cache(s) will be marked as invalid. During session initialization, the message "crash: kmem_cache: : invalid array_cache pointer" will be displayed, and during runtime, attempts to access the cache(s) will result in a message indicating that the cache is "[INVALID/CORRPUTED]". Without the patch, the message "crash: unable to initialize kmem slab cache subsystem" is displayed during session initialization, and run-time commands that attempt to access the kmem slab cache subsystem fail with the error message "kmem cache slab subsystem not available". (anderson@redhat.com) - Fix for the "kmem -[sS] " option in Linux 3.6 and later kernels configured with CONFIG_SLAB. Without the patch, the command fails with the message "kmem: address is not allocated in slab subsystem: . This also causes the "kmem " command to (quietly) fail to determine that the address is a slab object. (anderson@redhat.com) - Fix for the "bt" command if a kernel __init text address is encountered. Without the patch, and depending upon the reallocation of the __init text memory, a bogus framesize may be calculated, or more likely, in a compressed kdump, a warning message indicating "bt: page excluded: kernel virtual address:
type: gdb_readmem_callback" will be displayed following the frame data. (anderson@redhat.com) - Update for determining whether an S390X PTE contains a swap entry in Linux 3.12 and later kernels. (holzheu@linux.vnet.ibm.com) - Resurrected the translation and display of the page.flags bits by the "kmem -p" command on Linux 2.6.26 and later kernels whose vmlinux debuginfo data contains either the "pageflags" enumerator or the "pageflag_names" array of trace_print_flags structures. If they are not available, just the page.flags value is printed in hexadecimal, as has been done since Linux 2.4.9. (anderson@redhat.com) - Fix for the "bt" command when used with vmcore files that were created with the recently-introduced "virsh dump --memory-only", which dumps KVM guests into an ELF vmcore similar to those created by the kdump facility. Without the patch, a faulty backtrace for the panic task may be generated due to the use of incorrect starting RSP/RIP registers; this happens because (unlike kdump) the non-panicking cpus are offlined prior to the dumpfile being created, which in turn leads to the use of the wrong NT_PRSTATUS note. (anderson@redhat.com) - Fix for the CPU number display on systems with 255 or more cpus during the initial banner, by the "set" command, the "ps" command, and by all commands that display the per-task header consisting of the task address, pid, cpu and command name. Without the patch, for cpu 255, the "sys" command displays "NO_PROC_ID", and the other commands would show a "-" for the cpu number; for cpu numbers greater than 255, garbage values would be displayed in the cpu number field. (anderson@redhat.com) - Implemented support for compressed kdump header version 6, in which makedumpfile(8) adds new fields in the kdump_sub_header to support large memory systems with pfn values that are larger than 32-bits. Without the patch, if the system contains physical memory located in high memory such that its maximum pfn value is overflows the 32-bit "max_mapnr" field in the header, the crash session will fail with the error message "crash: vmlinux and vmcore do not match!". (jingbai.ma@hp.com) - Fix for the "net -s" command on Linux 3.8 and later kernels. Without the patch, the command fails with the message "net: invalid structure member offset: inet_opt_daddr". (anderson@redhat.com) - Fix a build failure in a native ARM64 environment due to obsolete LKCD dumpfile headers. (anderson@redhat.com) - Implementation of a new "per-cpu object" as an argument format that can be passed to the "p", "struct", "union" or "*" commands. The format is expressed as either : or as :, where the per-cpu symbol or per-cpu offset must precede a colon, and where the follows the colon. The cpu-identifier may be expressed in any of the following manners: : CPU of the currently selected task. :a[ll] all CPUs. :#[-#][,...] CPU list(s), e.g. "1,3,5", "1-3", or "1,3,5-7,10". Without the patch, per-cpu symbols are only accepted by the "p" command, and the data type and the resolved kernel virtual address for each per-cpu instance are displayed shown. With this patch, a colon and a cpu-specifier may be appended to the symbol name, and the the contents of the symbol on each cpu that is specified will be displayed by the "p" command. For the "struct/union/*" commands, an argument may be specified using either a per-cpu offset value or per-cpu symbol name followed by a colon and cpu-specifier, and the contents of each structure/union on each specified cpu will be displayed. (ptesarik@suse.cz) Fixed several minor flaws that were detected by a Coverity Scan: tools.c: 992:warning[invalidScanfArgType_int] – %d in format string (no. 1) requires 'int *' but the argument type is 'unsigned int *'. memory.c: 7461:error[uninitvar] – Uninitialized variable: page_cache_size filesys.c: 731:error[resourceLeak] – Resource leak: version kernel.c: 5675:error[uninitvar] – Uninitialized variable: action 7799:error[memleakOnRealloc] – Common realloc mistake: 'ikconfig_all' nulled but not freed upon failure configure.c: 793:error[mismatchAllocDealloc] – Mismatching allocation and deallocation: fp remote.c: 1120:error[resourceLeak] – Resource leak: pipe va_server.c: 316:error[memleak] – Memory leak: disk_hdr va_server_v1.c: 311:error[memleak] – Memory leak: disk_hdr makedumpfile.c: 80:error[memleakOnRealloc] – Common realloc mistake: 'ptr' nulled but not freed upon failure sadump.c: 231:error[memleakOnRealloc] – Common realloc mistake: 'sdh' nulled but not freed upon failure extensions/snap.c: 550:error[uninitvar] – Uninitialized variable: prstatus_len 541:error[uninitvar] – Uninitialized variable: l_offset extensions/trace.c: 1477:error[resourceLeak] – Resource leak: file (anderson@redhat.com)- crash-crosscrash-hint.diff: Removed, because crosscrash isn't maintained any longer.- Implementation of v7.0.2 from upstream. o See http://people.redhat.com/anderson/crash.changelog.html for a complete list of changes from 6.1.3. - crash-rl_digit_loop-return.patch - removed - crash-missing-declarations.patch - refreshed - crash-rl_digit_loop-return.patch - refreshed - eppic-switch-to-system-lib.patch - refreshed- Implementation of v6.1.3 from upstream. crash-display-date-fix.patch - removed/redundant crash-kmem_cache_slab.patch - removed/redundant crash-siginfo.patch - removed/redundant crash-var_length_log_rec.patch - removed/redundant eppic-switch-to-system-lib.patch - Implementation of EPPIC via system library rather than retrieve and include in build. Added eppic constants to spec file without removing the sial constants for now. crash-crosscrash-hint.diff - refreshed crash-make-emacs-default.diff - refreshed crash-sles9-time.patch - refreshed- update license to new format- Re-execution of 150764 by tabraham@suse.com to re-align patch content, re-number patches for latest spec contents and to remove some incidental content (e.g. whitespace insertion and leftover comments of new lines). Comment from tabraham follows: - added crash-display-date-fix.patch This is a backport of the fix from crash-6.0.9 to fix the date displayed by the initial system banner and by the "sys" command for linux kernel 3.6 and later. Without the patch, the date displayed will be that of the UNIX epoch adjusted to local time. - added crash-kmem_cache_slab.patch This is a backport of the fix from crash-6.1.0 for Linux 3.0 and later kernels that have been configured with CONFIG_SLAB and with- out CONFIG_NODES_SHIFT. Without the patch, the warning messages "crash: nr_node_ids: symbol does not exist" and "crash: unable to initialize kmem slab cache subsystem" are displayed during initialization, and the "kmem -[sS]" options fail with the message "kmem: kmem cache slab subsystem not available".- crash-compressed-booted-kernel.patch: Fix for "crash when invoked without arguments fails to analyze the live system" (bnc#777516).- crash-var_length_log_rec.patch: support variable-length record kernel log buffer present in kernel 3.5 and later (bnc#796151).- Fix build with glibc 2.16 (struct siginfo -> siginfo_t).- Enabled support for reading dumpfiles compressed by LZO using makedumpfile version 1.4.4 or later.- Update to crash 6.0.7 from upstream and adjust patches to apply without offsets. Upstream changes: o Enhanced the search command to allow the searched-for value to be entered as a crash (expression) or a kernel symbol name. The resultant value of an (expression) or kernel symbol value must fit into in the designated value size if -w or -h are used, and neither variant may be used with the -c option. If found, both the resultant value and the argument input string will be displayed next to the target address(es). o Added a new "search -t" option that will restrict the search to the kernel stack pages of all tasks. If one or more matches are found in a task's kernel stack, the output is preceded with a task-identifying header. o Fix for the s390x "bt -[tT]" options when run on an active task on a live system. Without the patch, the options fail with the message "bt: invalid/stale stack pointer for this task: 0". o Fix for s390x "vm -p" option, which may show invalid user to physical address translation data if a page is not mapped. Without the patch, a page's translation may indicate "
SWAP: (unknown swap location) OFFSET: 0", or show an incorrect swap offset on an actual swap device. o Added new "vm -[xd]" options to be used in conjunction with "vm -[mv]", which override the current default output format with hexadecimal or decimal format for just the command instance. Without the patch, it would require changing the default output format with "hex" or "dec" prior to executing "vm -[mv]". The new flags may also be used with "foreach vm -[mv]". o Fix for the s390x "vm -p" and "vtop -u " commands if the page containing the relevant PTE is not mapped. Without the patch, the commands fail with the error message "vm: read error: kernel virtual address: 0 type: entry" or "vtop: read error: kernel virtual address: 0 type: entry" o Fix for the s390x "vm -p" command and "vtop -u " commands to properly translate pages that are swapped out into their swap file and offset. Without the patch, the swap file and offset would not be displayed. o Added new "list -[xd]" options to be used in conjunction with "list -s", which override the current default output format with hexadecimal or decimal format for just the command instance. Without the patch, it would require changing the default output format with "hex" or "dec" prior to executing "list -s". o Added new "net -[xd]" options to be used in conjunction with "net -S", which override the current default output format with hexadecimal or decimal format for just the command instance. Without the patch, it would require changing the default output format with "hex" or "dec" prior to executing "net -S". The new flags may also be used with "foreach net -S". o Added new "mach -[xd]" options to be used in conjunction with "mach -c", which override the current default output format with hexadecimal or decimal format for just the command instance. Without the patch, it would require changing the default output format with "hex" or "dec" prior to executing "mach -c". o If the value read from the cpu online, present, or possible masks contains a cpu bit value that is outside the architecture's maximum NR_CPUS value, print a warning message during invocation. Without the patch, a corrupt vmcore containing a bogus mask value could quietly corrupt heap memory. o Add support to for reading dumpfiles compressed by LZO using makedumpfile version 1.4.4 or later. This feature is disabled by default. To enable this feature, build the crash utility in the following manner: (1) Install the LZO libraries by using the host system's package manager or by directly downloading libraries from author's website. The packages required are: - lzo - lzo-minilzo - lzo-devel The author's website is: http://www.oberhumer.com/opensource/lzo (2) Create a CFLAGS.extra file and an LDFLAGS.extra file in top-level crash sources directory: - enter -DLZO in the CFLAGS.extra file - enter -llzo2 in the LDFLAGS.extra file. (3) Build crash with "make" as always. * Only available as a source option for manual build in this environment o Fix for the included "trace" extension module. Without the patch, if the module initialization sequence fails, a double-free in the module may lead to a subsequent malloc() segmentation violation in the crash session. o Incorporated the "ipcs" extension module written by Qiao Nuohan as a built-in command. The command displays the kernel's usage of the System V shared memory, semaphore and message queue IPC facilities. It differs from the original extension module by fixing a failure scenario if the current task is exiting, and adds a "-n pid|task" option, which displays the IPCS facilities with respect to the namespace of a given pid or task. o Fix for a gdb-7.3.1 regression that causes the line number capability to fail with certain ranges of x86 base kernel text addresses. Without the patch, the "dis -l " or "sym " commands would fail to show line number information for certain ranges of base kernel text addresses. o Added a new "printm" command to the embedded gdb module. It is currently only used by the "pstruct" extension module, but can be used to dump the type, size, offset, bitpos and bitsize values of an expression. o Added a new "runq -t" option that displays the timestamp information of each cpu's runqueue, which consists of either the rq.clock, the rq.most_recent_timestamp or rq.timestamp_last_tick value, whichever applies. Following each cpu timestamp is the last_run or timestamp value of the active task on that cpu, whichever applies, along with the task identification. o Fix for an initialization-time warning when running on a live system with the most recent version of the modprobe command, which no longer supports the -l and --type options. The modprobe is used to detect whether the crash.ko memory driver is part of the distribution. Without the patch, a warning message is issued that indicates "/sbin/modprobe: invalid option -- 'l'". If the driver is built into the kernel, the message is harmless. If the driver is not built into kernel, then the crash.ko (/dev/crash) driver would not be selected as the live memory source.- delete crash-foreach-match-running.patch: upstream- Update to crash 6.0.6 from upstream o Extend the supported cross-architecture build capability so that it applies to the SIAL extentension module. Without the patch, when building the SIAL module an environment where the overlying crash utility was built with "make target=ARM", "make target=PPC", or "make target=X86", the SIAL extension module would continue to be built for the host architecture o Fixes for memory leaks and possible segmentation violations when unloading SIAL extension module scripts. o Fix for the new "foreach RU" task state qualifier. Without the patch, the runnable tasks are not selected. o Fix to disallow multiple task states from being entered using the "foreach " qualifier. Without the patch, if multiple states were entered, the last one on the command line would be honored. o Fix for the "extend" command to allow the usage of 32-bit PPC extension modules. Without the patch, the command fails with the message: "extend: .so: not an ELF format object file". o If an input line starts with "#" or "//", then the line will be saved as a comment that is visible when re-cycling through the command history list. o Fix for a crash-5.1.9 regression that broke the "bt -g" option. Without the patch, the option is ignored completely. o Fix for s390x virtual-to-physical translation of virtual addresses that are backed by 1MB pages. o The s390x has a dumpfile method that creates "live dumps", where the kernel continues to run while the dumpfile is being created. The initial system banner display and the "sys" command will inform the user that the dumpfile is a "[LIVE DUMP]", and the "bt -a" option will fail with the message "bt: -a option not supported on a live system or live dump". o Newly-created dumpfiles generated by the "snap.c" extension module will now be recognized as "live dumps". Accordingly, the initial system banner display and the "sys" command will inform the user that the dumpfile is a "[LIVE DUMP]", and the "bt -a" option will fail with the message "bt: -a option not supported on a live system or live dump". o If "bt" alone is attempted on an active task in a "live dump", it will indicate "(active)", i.e., the same as if it were attempted on a live system. o If an extension module does not define the appropriate architecture, i.e., "-DX86", "-DX86_64", etc., then the inclusion of "defs.h" will generate a compiler failure indicating "error: 'NR_CPUS' undeclared here (not in a function)". In that case, the architecture will now default to that of the host machine. o Prevent a highly-unlikely incorrect calculation of the maximum cpudata array length of a kmem_cache during initialization of of CONFIG_SLAB kernels. o Prevent an infinite loop during the initialization of the kmem_cache subsystem in CONFIG_SLAB kernels if the cache list or the vmcore is corrupt. If the kmem_cache list links back into itself, messages showing the first "duplicate" entry in the list and "crash: unable to initialize kmem slab cache subsystem" will be displayed. o Update to the "mod" command to additionally search for module object files in the directory containing the kernel namelist (vmlinux) file. This will allow an alternate module-debuginfo directory tree to be set up like so: [#] cd [#] rpm2cpio kernel-debuginfo-.rpm | cpio -idv Having done that, and by referencing the vmlinux file in that directory tree directly or by symbolic link, the "mod" command will search for module object files starting from the directory containing the vmlinux file if they are not found in the standard /lib/modules/ directory. o Update to the s390x "bt" command if a task was running in userspace. Without the patch, the back trace display ended at the kernel entry function frame; with the patch, the user space PSW register is displayed with a "(user space)" tag, followed by the general purpose register set. o In the unlikely event that the access of ARM or x86_64 kernel unwind table data fails during crash invocation, print a warning message and allow the crash session to continue. Without the patch, the crash session would fail immediately.- Update to crash 6.0.5 from upstream and adjust patch positions to match current crash source. 6.0.5 changelog is: o Enhancement to the "foreach" command to allow any of the "name" arguments to be POSIX extended regular expressions. The expression string must be encompassed by "'" characters, and will be matched against the names of all tasks. o Fix for the embedded gdb module's "ptype" command, and by extension, the crash utility's "struct" command, to be able to fully display embedded structure or union members of a structure/union. Without the patch, if a structure or union is a member of a structure or union that is a member of a structure or union, then it is displayed as "struct {...}" or "union {...}". o Extend the "ps -l" output to also display the task state next to its last_run/timestamp value. o Enhancement to the "foreach" command which adds a new "state" task-indentifier argument that filters tasks by their task state. The state argument may be any of the task states displayed by the "ps" command: RU, IN, UN, ST, ZO, SW or DE. o Implemented a new pc->cmd_cleanup function pointer and an optional pc->cmd_cleanup_arg argument that will allow any command to register a function and an optional argument that will be called after a command has completed successfully, or more likely, unsuccessfully. Normally the only cleanup required for a command is the freeing of buffers that were allocated with GETBUF(), but that is performed automatically after each command is run. However, with the introduction of the new POSIX regular expression functionality of the "foreach" command, there needed to be a way to call regfree() in the case where where regcomp() was called successfully, but then the command later encountered one of several fatal error conditions. This facility is also available for use by extension module commands. o Enforce the usage of a kernel thread's pgd from its active_mm for the ARM "vtop -c" command; if its active_mm is NULL, make the command fail similarly to the other architectures, displaying the error message "vtop: no active_mm for this kernel thread". o Fix for the x86_64 "bt" command running against recent kernels if an active task was operating on its IRQ stack when the crash occurred. Without the patch, the determination of the IRQ exception frame was off-by-8, displaying invalid register data and the error message "bt: WARNING: possibly bogus exception frame". o Update to handle the vfsmount structure change in 3.3 kernels, in which most members of the vfsmount structure have been moved into a new "struct mount", and the vfsmount structure has been embedded in the new mount structure. Without the patch, the following commands will fail, displaying the following error messages: mount: "mount: invalid structure member offset: vfsmount_mnt_list" files: "files: invalid structure member offset: dentry_d_covers" vm: "vm: invalid structure member offset: dentry_d_covers" swap: "swap: invalid structure member offset: dentry_d_covers fuser: "files: invalid structure member offset: dentry_d_covers" The "fuser" command generates the above error because it uses the "files" command behind the scenes. o Fix for the "ps" command to prevent the display of "??" under the ST (task state) column. Without the patch, in more recent kernels, if more than one bit were set in the task_struct.state field, the state would display "??". With the fix, the primary state will always be displayed. o Update to the output of the "set" command when it displays a task's state. Without the patch, if more than one bit was set in the task_struct.state field, "STATE: (unknown)" would be displayed. With the fix, all bits in both the task_struct.state and task_struct.exit_state fields are translated. o Implemented a new "vm -P " option, which is similar to "vm -p", but only does the page translations of the specified VM area of a context. o Add support for the Freescale PowerPC e500mc version of the E500 processor chipset, and rework the PPC platform-specific code in order to more easily support new processors. o Implemented a new "gdb" crash environment variable that can be used to alter a crash session's behavior such that all commands are passed directly to the embedded gdb module. The new mode is turned on and off by entering "set gdb on" and "set gdb off". When running in this mode, the command prompt will be "gdb>". In order to execute native crash commands while running in this mode, precede the command with the "crash" directive, for example, "crash ps". o Fix for a "*** stack smashing detected ***: crash terminated" failure during the initial system banner display on a 32-bit PPC platform. o Redesigned/simplified the internal read_string() function to prevent a potential segmentation violation. o Updates for the 32-bit PPC "vtop" command output: (1) Translate kernel virtual addresses for FSL BOOKE by using the TLBCAM setting (2) Remove the PMD line from the display (3) Fix the displayed PHYSICAL values of FSL BOOKE PTE format o Fix for crash invocation failure on 3.3-era kernels in which the former standalone "xtime" timespec structure has been moved into the "timekeeper" structure. Without the patch, the crash session would fail early on with the message "crash: cannot resolve: xtime". The patch also prevents the crash session failure in the unlikely event that the timespec access fails.- Update to crash 6.0.4 from upstream and adjust patch locations to match current crash source. 6.0.4 changelog is: o Fix to allow the recently-added "mod -g" and "mod -r" options to be used together. o Additional update for 3.1.x and later kernels configured with CONFIG_SLAB, which have replaced the kmem_cache.nodelists[] array with a pointer to an outside array. o Document the "crash [-h|--help] all" option in the crash.8 man page and in the "crash [-h|--help]" output. o Fix the S390/S390X-specific "s390dbf" command's "hex_ascii" debug data printing routine to prevent the display of non-ASCII characters. o Fix for ARM stack unwinding on 3.2 and later kernels due to commit: http://git.kernel.org/linus/de66a979012dbc66b1ec0125795a3f79ee667b8a o Implemented a new "search -x " option that displays the memory contents before and after any found search target. o Fix for the x86_64 Xen hypervisor "bt" command. Without the patch, the contents of the RDX register in exception frames incorrectly shows the contents of the RCX register. o Implementation of a platform-based vmalloc address translation scheme for the 32-bit PPC architecture, introducing suppport for the PPC44X platform while maintaining the current default platform. o Fix for the usage of native gdb commands where the command output is redirected to a pipe and then redirected to a file. o Fix to prevent a crash session that is run over a network connection that is killed/removed from going into 100% cpu-time loop. o Fix for the support of PPC64 compressed kdumps, a regression that was introduced in crash-6.0.3 when support for 32-bit PPC compressed kdumps was implemented. o Fix for the x86_64 "bt" command to prevent the possible skipping of the stack frame just above an exception frame that indicates "[exception RIP: unknown or invalid address]". Patches with modified target locations are: crash-make-emacs-default.diff crash-sles9-time.patch crash-crosscrash-hint.diff crash-missing-declarations.patch- Update to crash 6.0.3 from upstream and modifications to compile. 6.0.3 change log is: o Fix to gdb-7.3.1/bfd/bfdio.c to properly zero out a complete struct stat with a corrected memset argument o Fix for the SIAL extension module to remove a call to sial_free() for an uninitialised variable o Fix for the "runq" command for kernels that are configured with CONFIG_FAIR_GROUP_SCHED o Implemented build and code for the analysis of 32-bit PPC ELF kdump vmcores o Implemented the capability of building a PPC crash binary on a PPC64 host, which can be done by entering "make target=PPC" o Determine the PPC page size from the kdump PAGESIZE vmcoreinfo data o Fix for the "kmem -[sS]", "kmem -[fF]" and "kmem
" options in 3.2 kernels o Addition of a set of dumpfile read diagnostic debug statements o Fix for X86 kernels that have CONFIG_X86_32, CONFIG_DISCONTIGMEM, CONFIG_DISCONTIGMEM_MANUAL and CONFIG_NUMA all configured o Fix for the "vtop" command on large NUMA X86 kernels where a node's starting physical address is larger than 32-bits o Update for the ARM architecture to recognize a recent change of its vmlinux section name from ".init" to ".init.text" o Significant speed increase of the "kmem -p" command, especially on large-memory systems o Implemented new "irq -a" and "irq -s" options o Removal of a redundant read of the kernel's __per_cpu_offset pointers in the ARM architecture's arm_get_crash_notes() function o Fix for an ARM architecture segmentation violation because of a stack overflow due to recursion in the page table translation code o Fix for the the "FREE HIGH" tally in the X86 "kmem -i" display o Fix for the "kmem -n" output display for 32-bit architectures that are configured with CONFIG_SPARSEMEM o Cleanup of several SIAL extension module files to address bison 2.5 and gcc 4.4.3 compile-time warnings o Fix for "net -[sS]" command options on the ARM architecture o Fix for the ARM "bt" command to allow the core kernel unwind tables to be used in cases where the module unwind tables are inaccessible o Implementation of a new "dev -d" option that displays disk device I/O statistics o Update for 3.1.x and later kernels configured with CONFIG_SLAB, which have replaced the kmem_cache.nodelists[] array with a pointer to an outside array o Implemented build and code for analysis of 32-bit PPC compressed kdump vmcores o Prevent the "runq" command from dumping an unending loop of tasks if the CFS runqueue has been corrupted o Repurposed/renamed the rarely-used and rarely-needed "mod -r" option to "mod -R" o Implemented a new "mod -r" option, which will pass the "-readnow" flag to the embedded gdb module, which will override the two-stage strategy that it uses for reading symbol tables from module object files o Performance increase for the "kmem -s
" option on kernels configured with CONFIG_SLAB, most notably on kernels whose kmem_cache.array[NR_CPUS] array is several pages in size o Require that the "" argument to "kmem -s " be escaped with a '\' character in two situations: (1) in the highly-unlikely case of a kmem_cache slab named "list", to prevent the ambiguity with the "kmem -s list" command option. (2) if the first character of the actually is a '\' character Modifications to compile are as follows: o Replacement of crash-6.0.2.tar.gz with crash-6.0.3.tar.gz o Remove crash-wrong-memset.patch the fix is present in 6.0.3 o Remove crash-add-read-diags.patch the change is in 6.0.3- crash-wrong-memset.patch: fix compilation on SLE11.- Update to crash 6.0.2 from upstream and modifications to compile.- Fix wrong size parameter in memset call- Update to crash 6.0.0 from upstream and modifications to compile.- crash-debuginfo-compressed.patch: Search debuginfo files in the same directory as the original gzipped kernel image (bnc#723639).- Add Requires: kernel-$flavor to new-style KMP packages. - Provide old-styl crash-kmp (for SLES9).- Build the crash memory driver kernel module as a KMP.- Change the license from GPLv3 (only) to GPLv3 or higher.- Add the gcore extension as a subpackage for i386 and x86_64. This extension can be used to create a core dump file of a user-space task that was running in a kernel dumpfile.- Put correct licenses in the RPM header.- crash-missing-declarations.patch: re-apply the patch, because this is still not fixed upstreams and still breaks ppc64 builds.- Update to 5.1.6 o add "kmem -o" option (each CPU's per-cpu offset value) o remove obsolete "kmem [-[l|L][a|i]]" options from the kmem help page o add "kmem -g [flags]" option to display the enumerator value of bits in the page structure's "flags" field o add "rd -a" option to display printable ASCII data only o add "rd -N" option to use network byte order o extend "mach" to display the size and address of each per-cpu IRQ stack and per-cpu exception stack, if they exist o extend "kmem
" to display module name if appropriate o arm: support CONFIG_SPARSEMEM o fixes to enable Linux 3.x numbering o x86: fix "search -k" if the first memmap page struct does not map to physical address 0 o fix "search -k" for kernels with multiple non-sequential NUMA nodes, memory holes between them and no memmap page structures refering to the holes o fix "kmem -s
" for addresses in a non-first page of a compound slab and kernels compiled with CONFIG_SLUB and CONFIG_PAGEFLAGS_EXTENDED o fix NR_SECTION_ROOTS to ensure a non-zero value o arm: fix a potential double free in read_module_unwind_table() o fix compiler warnings when building with "make warn" o fix several typos in the crash(8) man page o see http://people.redhat.com/anderson/crash.changelog.html for the complete changelog - drop crash-xen-x86_64-increase-max-vcpus.patch: superseded by mainline's allocating VCPU structures dynamically - refresh all patches - specfile cleanups- Update to 5.1.5, mainly gcc 4.6 and kernel 2.6.39 fixes, see http://people.redhat.com/anderson/crash.changelog.html for complete changelog. - Refresh crash-sles9-time.patch - Dropped the following patches applied upstream: * crash-compressed-booted-kernel * crash-compressed-kernel * crash-missing-declarations.patch * crash-xen-domain_vcpu.patch * crash-xen-opt_sched.patch * crash-xen-per_cpu-init_tss.patch * crash-xen-per_cpu_shift.patch * crash-xen_virt_start.patch- crash-xen-per_cpu-init_tss.patch: init_tss is a per-cpu variable in Xen-4.0.0 (bnc#612128). - crash-xen-x86_64-increase-max-vcpus.patch: x86_64 can have up to 8192 virtual CPUs with Xen-4.0.0 (bnc#612128). - crash-xen-domain_vcpu.patch: Xen-4.0.0. vcpu array is no longer embedded in struct domain (bnc#612128). - crash-xen-opt_sched.patch: opt_sched is __initdata in Xen-4.0.0, so it's value is not available in the crash dump. Use opt as a replacement (bnc#612128). - crash-xen_virt_start.patch: account for the changed value of XEN_VIRT_START in Xen-4.0.0 (bnc#612128). - crash-xen-per_cpu_shift.patch: correctly determine PERCPU_SHIFT for Xen syms (bnc#612128).- Update to 5.1.1 o Fix for the potential to miss tasks when walking the pid_hash table in 2.6.24 and later kernels. Without the patch, the task will simply not be seen in the gathered task list. o Enhancement for the ARM architecture's "bt" command to print out the user space register set for tasks entering the kernel via the syscall entry point. o Rework of the handling of "set" commands that are put in .crashrc files so that only the following options are resolved prior to session initialization: silent, console, core, edit, namelist, and zero_excluded. All others are resolved immediately after session initialization is complete. Accordingly, the use of "set -c ", "set -p", "set -a [task|pid]" and set [pid|task]" are now acceptable .crashrc commands. o The entering of "set -v" in a .crashrc file would cause an immediate segmentation violation. The "set" command rework above defers the command until session initialization is complete. o The entering of "set dumpfile " in a .crashrc file would cause a fatal "seek" error during session initalization with most most dumpfile types, so the "dumpfile" option has been removed from the "set" command. o The execution of "alias" commands from a .crashrc file used to be performed immediately; that behavior has been changed so that they are executed immediately after session initialization is complete. o Enhancement of the "repeat" command to allow command aliases. o Fix for running "kmem -s" on a live system if an offline cpu is brought back online while the command is executing. Without the patch, the online operation may cause a segmentation violation. o Change the behavior of "bt -[tT]" to allow the command options to be run on active tasks on live systems. Without the patch, both command options would display the task data banner followed by "(active)". o Fix for the ARM architecuture's "irq" command when run on 2.6.36 and later kernels. Without the patch, the command fails with the error message "irq: invalid kernel virtual address: 23 type: irq_chip typename". The fix replaces the custom ARM IRQ dumping function with the architecture-neutral version. o Introduced support for using /proc/kcore as an alternative source of live memory to /dev/mem. Doing so allows vmalloc memory access on 32-bit architectures when the underlying mapped physical memory is in highmem, which is not allowed by the /dev/mem driver. It would also be usable on systems that are configured with CONFIG_STRICT_DEVMEM but still configured with CONFIG_PROC_KCORE. To enforce the use of /proc/kcore, it may be entered on the command line. o If a live crash session attempts to use /dev/mem as a live memory source, and it is determined that the system is configured with CONFIG_STRICT_DEVMEM, /proc/kcore will automatically be tried as an alternative. o Fix to allow "/dev/crash" to be entered on the command line for live sessions. Because it is used automatically if it exists, it is never necessary to enter it on the command line. However, if it is used, without the patch, the session fails during initializaion with the error message "crash: /dev/crash: No such file or directory" if the crash.ko driver is a module, or "crash: /dev/crash: not a supported file format" if the driver is built into the kernel. o Fix for the ARM "bt" command to address the issue behind faulty warning messages that indicate "WARNING: UNWIND: unsupported personality routine". o Fix for the ARM "bt" command to address the issue behind faulty warning messages that indicate "bt: WARNING: UNWIND: cannot find index for
".- Update to 5.1.0 o x86: Fix for the "bt" command for active, non-chrashing, tasks on 2.6.31 and later kernels without CONFIG_4KSTACKS. o x86 and x86_64: Add module names to "bt" outputs. o Enhance the "sym" command to display the containing module name in brackets. o Support module per-cpu symbols after they are loaded with the "mod -[sS]" command. o x86: Fix for the "bt" command to properly handle a NMI-interrupted idle task running in cpu_idle(). o s390x: Support for compressed kdump dumpfiles created by the makedumpfile facility. o x86 Xen guest: Fix for the "bt" command where a vcpu received a shutdown NMI while running in the event_check_interrupt() interrupt handler. o x86 Xen guest: Fix for the "bt" command where a vcpu received a shutdown NMI while running in the hypercall entry point. o s390x: Fix for the "help -n" output on ELF vmcore dumpfiles to recognize the several architecture specific n_types. o s390x Fix for the "help -n" output on ELF vmcore dumpfiles to properly dump the contents of the descriptor data of each Elf64_Nhdr note. o Fix for the "help -n" output for diskdump and compressed kdump files to show the filename as stored in the per-file diskdump_data structure. o Resurrection of the "irq -b" command option for 2.6 kernels. o Fix for displaying data generated from shell-escaped commands when the data contains a "%" character followed by a conversion character o Re-worked the do_radix_tree() utility function to work without depending upon a hardwired copy of the kernel's radix_tree_node structure, and changed various RADIX_TREE values into dynamically calculated values. o Call FREEBUF() on a GETBUF()-generated buffer ub the do_radix_tree() utility function. o x86_64: Store the .debug_frame section offset and size from the vmlinux file and use its data as an alternative to the .eh_frame section data. o Fix for errors or nonsensical output from the "irq" command when run on 2.6.29 kernels. o Fix for error output from the "irq" command when run on 2.6.34 and later kernels.- Update to 5.0.8 o x86_64: Fix the "bt" command on 2.6.30 and later kernels when using a System.map file. o Fix KVM error messages generated by store_mapfile_offset() and and load_mapfile_offset() when an invalid physical address is issued. o Fix the "sig" command on 2.6.35 and later kernels. o Fix the "net -s" command option on 2.6.33 and later kernels. o Fix the "mod" command on 2.6.35 and later kernels. o Fix the "mount -f" command on 2.6.36 and later kernels. o Fix missing "/dev" prefix for files in the /dev directory listed by the "files" command. o x86_64: Use cpu_present_map instead of cpu_online_map to determine the CPU count. o x86_64: Fix the "bt" command on 2.6.27 and later kernels to prevent the possible display of an invalid "vgettimeofday" frame above the topmost "system_call_fastpath" frame. o s390x: Read pointers above 4GiB correctly with the "s390dbf" command. o Allow building crash as an x86 binary for ARM dumpfiles on an x86_64 host. o Simplify the ARM build procedure after an initial ARM build has been completed in a crash source tree. o Allow building crash as an x86 binary on an x86_64 host. o Fix a regression in get_text_init_space() due to logic added by the ARM processor support. o SMP support SMP for the ARM architecture. o x86_64: Fix the "bt" command on 2.6.31 and later kernels to display the the exception frame from the forced oops after issuing an "echo c > /proc/sysrq-trigger". o Recognize module "init" symbols that are still valid.- Update to 5.0.7 o ARM processor support. o Support KVM dumpfiles that have "ram" device header sections with a version_id of 4. o Support KVM dumpfiles from guests that were provisioned with more than 3.5GB of RAM. o Minor fix to memory.c to address a compiler warning. o "mount": Fix a segmentation violation if the "init" task (PID 1) does not exist. o x86_64: Show "RT" in exception stack name strings on realtime (CONFIG_PREEMPT_RT) kernels, because RT kernels may use the same per-cpu stack for different exception types. o Show tasks that could be missed in 2.6.23 and earlier kernels. o Fix the incorrect presumption that the kernel's task_state_array[] is NULL terminated.- Update to 5.0.6 o x86_64: Fix 2.6.27 and later xendump and Xen kdump dumpfiles ("missing end_pfn") o Allow redirecting the output of "s390dbf" to a pipe. o x86: Improve the backtrace end detection algorithm in "bt" for tasks entering the kernel from user-space. o Warn about machine type mismatch when attempting to use a ppc64 vmlinux file on a non-ppc64 64-bit host. o x86_64: Fix the "bt" command if the kdump-generated NMI interrupts a multi-threaded task that has just entered kernel space and has not changed the user-space RSP register. o Allow changing internal variables in --minimal mode with the "set" command. o x86: Fix the "vtop" command on Xen PAE kernels. o x86, x86_64: Support running against live pv_ops/Xen guest kernels. o x86, x86_64: Support xendump ELF dumpfiles generated from pvops/Xen guest kernels. o Determine the bit positions of PG_reserved and PG_slab using the newer pageflags enumerator values if available. o Prevent the "repeat" command from keeping a crash session alive if the controlling terminal session is killed.- crash-compressed-booted-kernel: correctly find the booted kernel even if compressed (bnc#581159).- Update to 5.0.5 o Add "bt -F" flag: same as "bt -f" but symbolic expressions are preferred (similar to "rd -S"). o Fix for the %install stanza in the crash.spec file to check for the existence of the sial.so extension module. o Fix a confusing "foreach:" prefix in the error message displayed by the "crash -x" command line option when the pre-loading of an extension module fails. o x86_64: Fix "bt" and "bt -E" if the kdump-generated NMI interrupts a task that has just entered kernel space but has not yet changed the RSP register to the kernel stack. o x86: Fix "bt" if the crash occurs during the execution of a kernel module's init_module() function. o Fix "kmem -[sS]" on 2.6.34 and later CONFIG_SLUB kernels, which changed the kmem_cache.cpu_slab[NR_CPUS] array to be a per-cpu offset value. o Show hexadecimal values in the "INDEX" colum of "kmem -p", because because "page.index" is typically a shared-use field that may also contain a pointer value. o Fix "kmem
" if the kernel's free page lists are corrupt, or in a state of flux, and cannot be followed. o Support newer "virsh dump"-generated KVM formats that may contain "block" and "kvmclock" devices in the dumpfile header. o Support "virsh dump"-generated KVM dumpfiles of a RHEL5 guest from a RHEL6 host, and to support dumpfile format changes that contain "apic" and "__rhel5" devices. o Fix a compiler warning when building gdb_interface.c with -O2. o Fix compiler warnings when building net.c with -O2.- Update to 5.0.4 o x86: Fix "bt" when a newly-forked task's resumption EIP value points to "ret_from_fork". o x86: Fix "bt" when an NMI interrupts a task early during system call entry. o x86_64: Fix "bt" on 2.6.29 and later to recognize and display exception frames generated by exceptions that do not result in a stack switch, such as general protection faults. o ppc64: Account for an update to the kernel patch for CONFIG_SPARSEMEM_VMEMMAP. o Improve "dev -p" error message on 2.6.26 or later kernels, which no longer have the "pci_devices" global variable. o s390(x): Display "CPU offline" when doing a backtrace of the "swapper" task on an offline CPU. o x86_64: Fix per-cpu symbols on 2.6.34 and later kernels by allowing them to be of type 'd' or 'D'. o x86_64: Fix a segmentation violation during initialization in x86_64_get_active_set(). o Support KVM dumpfiles created with "virsh dump" that create "cpu" header sections using a QEMU CPU_SAVE_VERSION version greater than the supported version of 9. o x86_64: Fix for KVM dumpfiles created with "virsh dump", whose kernels have a "_text" virtual address higher than __START_KERNEL_map. o Add a "map" command for specifying the memory map of KVM guest dumpfiles created with "virsh dump". o x86_64: Correctly calculate the physical base address of a fully-virtualized RHEL6 guest kernel running on a RHEL5 Xen host. o x86_64: Fix "bt" on inactive (blocked) tasks for 2.6.33 and later kernels, which have the "thread_return" symbol removed from the embedded "switch_to" macro. o x86: Fix for "bt" on 2.6.33 and later kernels, which moved the "system_call" symbol to the .kprobes.text section. o Fix a segmentation violation in the "trace" extension module, as seen when running "trace show -c ". o Add a "trace dump -t" command for the "trace" extension module.- Update to 5.0.3 o Fix for running against 2.6.34 and later kernels to recognize and handle changes in the kernel's per-cpu data symbol naming, which no longer prefixes "per_cpu__" to declared per-cpu symbol names. o Fix for "swap" and "kmem -i" commands on 2.6.29 or later, big-endian, ppc64 kernels, where the swap_info_struct.flags member was changed from an int to a long. o Fix for the "vm" and "ps" command's task RSS value on 2.6.34 or later kernels. o Fixed "possible aternatives" spelling typo used in informational messages when an incorrect/unknown symbol name is used in "rd", "dis", "sym" and "struct" commands. o Fix for CONFIG_SPARSEMEM kernels that are not configured with CONFIG_SPARSEMEM_EXTREME. o Change the output of the "kmem -[cC]" options to indicate that they are not supported when that is relevant. - Refresh crash-compressed-kernel and crash-sles9-time.patch.- crash-missing-declarations.patch: add a missing include (fixes compilation on ppc64).- Update to 5.0.2 o Fix "mod -[sS]" if the attempt to load a kernel module fails due to an internal gdb error. o Avoid recalculation and modification of module symbol values from their CONFIG_KALLSYMS-generated values. o Fix a bug in reading some dumpfiles created with the "snap" extension. o s390, s390x: fix several bugs in the stack backtrace code. o x86, x86_64: fix "mach -m" if the BIOS-provided e820 map contains unusable EFI-related memory type values. o Fix the "bool" type in SIAL. o x86: avoid a stream of harmless but annoying error messages when running "crash -d4" (or any larger -d debug value). o Fix "kmem -s list" on non-CONFIG_SLUB kernels that contain a "cache_chain" symbol instead of a "cache_chain" macro. o x86_64: let "bt" use the stored frame pointers if the kernel was compiled with CONFIG_FRAME_POINTER. o ppc64: show the number of online cpus in the initial system banner and the "sys" and "mach" commands. o x86_64: fix the stack frame size calculator on kernels that were built without CONFIG_FRAME_POINTER. o Avoid an endless loop on EOF from /dev/tty. o "ps -t": display utime and stime values unmodified on kernels that store them in a cputime_t. o x86: fix "bt" if the kdump-generated NMI interrupts a process in kernel space before the full user-mode exception frame gets written on the kernel stack. o x86: fix "bt -e" on 2.6.30 or later if crash is compiled with - D_FORTIFY_SOURCE. o Fix initialization-time failures on 2.6.34 and later kernels built with CONFIG_NO_BOOTMEM. o ppc, ppc64: fix the displayed processor speed. o ppc64: support for an IBM-proposed kernel patch for CONFIG_SPARSEMEM_VMEMMAP kernels that will store vmemmap page mapping information. o Fix "kmem -[sS]" on live CONFIG_SLAB systems to prevent the redundant reading of the shared array_cache object list from the per-node kmem_list3 data structures.- Update README.SUSE: o The search paths are no longer SUSE specific. o The command 'extend sial.so' (with suffix) is needed to load the SIAL extension.- Fix sps command from SIAL ps.c for kernel >= 2.6.29.- crash-rl_digit_loop-return.patch: add the missing return to the embedded readline.- Update to 5.0.1 o Fix "irq" on 2.6.33 and later kernels. o Fix "swap", "kmem -i", and "vm -p" on 2.6.33 and later. o Fix "bt" on an ia64 "INIT" process that interrupted a task that was running in user space, but was unable to modify the original (interrupted) task's stack. o Fix "bt" on offline s390/s390x "swapper" idle tasks. o x86, s390, s390x, ia64: use the highest online CPU number plus one as the system CPU count. o Correctly recognize per-cpu variables. o Let "struct" or "union" fail gracefully if given an unmapped or non-existent address. o Fix support of >4GB Xen domU dumpfiles. o Account for the renaming of the st_status_fixed_logout _lowcore struct member in 2.6.33 and later s390 and s390x kernels. o Add a defensive mechanism to handle corrupted "cache_cache". o Fix a startup segfault with 2.6.30 or later x86_64 dumpfiles from kernels compiled without CONFIG_SMP. o Fix a startup segfault if a kernel crashes while loding a kernel module. o Fix build failures with gcc-4.5 on x86_64. o Use mkstemps() from the built-in libiberty.a to allow running crash with pre-2.11 glibc versions. o Accept gdb-7.0 disassembler output on 2.6.20 and earlier x86 kernels. o Fix a gdb-7.0 regression that prevented "dis -l" from showing line numbers for some x86 base kernel text addresses. o Preparation for future s390x ELF dumpfile format. - Delete crash-large-xendump.patch: now solved in mainline.- crash-large-xendump.patch: properly handle xendumps larger than 4GBs. (bnc#542170)- crash-Makefile-ADD_CFLAGS: remove Upstream has honoured the CFLAGS settings since 4.0-8.12.- Update to 5.0.0 o Update embedded gdb to FSF gdb-7.0. o Always recognize and display BUG()-induced exception frames when doing a backtrace on 2.6.29 and later x86_64 kernels. o Fix "ps -r" segfaults with 2.6.25 or later. o Fix "mount" on 2.6.32 and later (except "mount -i", which cannot be easily implemented for these kernel versions). o Recognize VMEMMAP_REGION virtual addresses in 2.6.26 and later ppc64 kernels compiled with CONFIG_SPARSEMEM_VMEMMAP. o Fix a 4.0-8.11 regression in determining the number of cpus on ppc64. o Fix "irq" on ppc64 kernel which do not define "irq_desc_t" as a typedef for "struct irq_desc". o Avoid the unnecessary "WARNING: sparsemem: invalid section number:" message when doing "rd" or "kmem" on CONFIG_SPARSEMEM_EXTREME kernels.- Construct an ExclusiveArch tag for specfile to match source-code capabilities- Update to 4.1.2 o Fix initialization failure with 2.6.31 or later x86_64 CONFIG_NEED_MULTIPLE_NODES kernels running on systems that have multiple NUMA nodes. o Fix the snap.c extension module to properly handle NUMA systems with multiple nodes, or single-node systems whose first unity-mapped PT_LOAD segment starts on a non-zero physical address. o Fix "bt [-t|-T]" on x86 when the backtrace passes through three stacks (hard IRQ, soft IRQ, process). o Do not warn about "non-process stack address for this task" when "bt -S" is given a legitimate hard or soft IRQ stack address, or an x86_64 exception stack address. o Add a defensive mechanism to handle corrupt ELF core headers. o More non-functional changes for future integration of gdb-7.0 and for addressing Fedora packaging guidelines. - fixed reference to an uninitialized struct member- Update to 4.1.1 o Add "lsmod" as a built-in alias for the "mod" command. o Enhance "bt" on x86_64 to display which one of the five exception stacks it is operating on. o Add defensive mechanism to handle corrupt Elf32_Nhdr/Elf64_Nhdr structures in an ELF vmcore. o Fix DEBUG exception stack size and stack base address on 2.6.18 and later x86_64 kernels. o Fix session initialization failure with 2.6.30 and later x86_64 kernels if the number of possible cpus equals the kernel's configured NR_CPUS. o Fix potential session initialization failure with 2.6.30 and later x86_64 kernel dumpfiles filtered by makedumpfile. o Fix "mach -c" on 2.6.30 and later x86_64 kernels. o Preparations in the top-level source code for the integration of gbd-7.0. The current embedded version remains gdb-6.1.- Update to 4.1.0 o Fix "extend" regression on s390x and x86, introduced in crash 4.0.9 with the "-x" option o Cleanup top-level source files to address compiler warnings generated by the CFLAGS used in the Fedora build environment o Fix "pte" on s390 and s390x if the pte value argument evaluates as not present o Allow command redirection to pipes or files when using gdb commands alone on the command line without preceding it with "gdb" o Fix the processing of bit fields on big endian systems in the SIAL extension module o Fix "dis -l" to properly display line-number information for 2.6.21 and later x86_64 kernel module text addresses o Prevent querying the embedded gdb module for line numbers of kernel module text addresses if the module's debuginfo data has not been loaded o New option "ps -G" to restrict the process status output to the thread group leader of a thread group o Several fixes for the "repeat" command when used in conjunction with an input file. Without the patch: - Depending upon the command executed from the input file, a SIGINT would kill the command currently being executed from the input file, but the "repeat" command would then restart it. - If a command in the input file redirected its output to a pipe, the repeat operation could stop prematurely after executing that particular command. - If a command in the input file redirected its output to a pipe, the zombies of the command being piped to would not be cleaned up until the repeat command was stopped. - If the last command in the input file redirected its output to a pipe, all subsequent executions of the input file would only display the output of that last command. o New extension: "trace.so" o Fix for a potential failure to initialize the kmem slab cache subsystem on 2.6.22 and later CONFIG_SLAB kernels if the dumpfile has pages excluded by the makedumpfile facility o Fix a potential session initialization failure on x86_64 kernels if the dumpfile has pages excluded by the makedumpfile facility o Fix "kmem -z" on 2.6.29 and later kernels o Fix "irq" on 2.6.29 and later CONFIG_SPARSE_IRQ kernels o Fix "kmem -i" on 2.6.31 kernels o Fix "kmem -i" on x86_64 running 2.6.26 through 2.6.30 o Fix "kmem -p" on older 64-bit kernels that have a 32-bit page.flags field o Fix "kmem -i" on older kernels whose unreferenced page.count value was -1 (instead of 0) o Change the cursor location when cycling through the command history in "vi" editing mode (the default)- Update to 4.0.9 o New mainline versioning o Wholesale replacement of the x86/x86_64 disassembly code in the embedded gdb-6.1 module to that used in gdb-6.8 to correctly decode the 5-byte NOP used by the function tracer o Fix compressed diskdump/kdump vmcores to properly handle page descriptor structures that are located beyond a 4GB file offset in the vmcore file o Fix the "sym
" command option when the address references a symbol in the vsyscall FIXMAP virtual address page in certain x86_64 kernel versions o Multiple fixes for the "bt" command on x86_64: - properly recognize vsyscall FIXMAP virtual addresses when encountered as the RIP in an exception frame. - always use the NMI exception stack when available, not the per-cpu IRQ stack of an active non-crashing task - correctly determine the frame just above an IRQ interrupt exception frame, or above an exception frame that gets handled on the process stack, such as a page fault - correctly calculate the frame size to differentiate between text return addresses and the precise text RIP address of an exception o Fix usage of a System.map file argument with 2.6.30 and later kernels to avoid "crash: symbol count overflow (trace_kmalloc)" messages o Fix usage of a System.map file argument whose symbol list does not contain an "_end" symbol. o Fix "kmem -p
" or "kmem
" when
is not a page structure address to avoid the annoying "kmem: WARNING: sparsemem: invalid section number: 8192" messages o Fix the snap.so extension module when run on pre-2.6.31 x86_64 kernels with more than 4GB of physical memory o Fix build of the snap.so extension module on older systems running with "make" versions 3.80 or earlier o Fix build of the sial.so extension module if /usr/bin/bison and /usr/bin/flex do not exist on the host build system o Fix for the "rd" and "vtop" commands on RHEL4 x86_64 Xen paravirtual kernels in the reading or translation of vmalloc addresses that are not in kernel module vmalloc address space o New command line option "-x" to automatically load extension modules- Update to 4.0-8.12 o Support for the KVM "save-vm" file format o Support for 2.6.30 and later x86 CONFIG_4KSTACKS kernels, where hardirq_ctx[] and softirq_ctx[] arrays were changed to per-cpu o Replace the CFLAGS definition in the Makefile with a CRASH_CFLAGS definition, which in turn contains ${CFLAGS} to allow user-defined CFLAGS on the "make" command line o Bail out with a "not a supported file format" error immediately when trying to open x86 vmlinux file on an x86_64 host o Fix the "bt" command on x86 Xen hypervisor dumpfiles where a vcpu received a shutdown NMI while running in an interrupt handler o Correct cpu accounting when processors have been taken offline using a new get_highest_cpu_online() utility function o Fix a segmentation violation when running against kernels built with Fedora gcc version 4.4.0-12 and later, which introduced a more compact Dwarf 3 DW_AT_data_member location o Clean up gdb header files that generate warning messages when compiling the top-level cmdline.c file with "make warn" or "make Warn" - Delete crash-4096-cpus-x86_64.diff: Mainline.- Update to 4.0-8.11 o Fix the mapping of CPU to NT_PRSTATUS notes in kdump ELF dumpfiles; if a CPU was offlined, this mapping is not identity o Enhance the "dev" command to show CDEV and GENDISK o Fix the OPERATIONS column of "dev" o Fix potential SEGV when running "foreach bt" on a live system with many processes starting and ending o Fix reading of LKCD Version 8 and later x86 dumpfile headers o Fix backtraces of non-crashing CPUs interupted during process switch (x86_64) o Fix backtrace when transitioning from the IRQ stack to the process stack on 2.6.29 and later (x86_64) o Enhance "runq" to show the current task in each CPU's runqueue o Fix a memory leak when running on live systems o Allow using vmlinux files with DWARF3 debuginfo o Allow any order of arguments with a System.map file o Add several new defensive mechanisms to prevent potential errors and SEGVs when using non-matching vmcore, System.map and vmcore files o Adjust several virtual and physical memory address definitions for 2.6.31 x86_64 kernels o Improve "kmem -s" or "kmem -S" options with CONFIG_SLUB when an invalid slab page link address is encountered- Update to 4.0-8.10 o Enhance directory search for "mod -S " so that it is now possible to use an alternate module/module-debuginfo directory tree, created with rpm2cpio in a non-root directory o NEW: "--mod" command-line option to override the default location of the module directory tree o NEW: snap.so extension to create a kdump or netdump dumpfile from a live system (x86, x86_64, ppc64, ia64 only) o Recognize cpu_*_mask symbols on 2.6.29 o Handle the removal of x8664_pda from 2.6.30 o Use "crashing_cpu" to determine a kdump x86_64 panic task o Add "./extensions" to the list of directories searched for the "extend" command. The order is now: 1. the current working directory 2. the directory specified in the CRASH_EXTENSIONS shell environment variable 3. /usr/lib64/crash/extensions (64-bit architectures) 4. /usr/lib/crash/extensions 5. ./extensions o Rebuild extensions when defs.h is modified o Add several function prototypes for the SIAL extension module to fix incompatible int size on 64-bit o Enhance the extension modules API with a set of functions to get the register set from an NT_PRSTATUS note if available o Fix a SEGV when the panic task cannot be determined from a ppc64 kdump vmcore- Update to 4.0-8.9 o NEW: Add option "bt -g" to display the backtraces of all threads in a thread group o NEW: Support for kdump "split-dumpfile" format produced by "makedumpfile --split" o Fix for "kmem -i", "kmem -n" and "kmem -p" on x86_64 CONFIG_SPARSEMEM and CONFIG_SPARSEMEM_EXTREME kernels that have MAX_PHYSMEM_BITS increased from 40 to 44 o Allow multiple "--machdep option=value" command-line options o Produce a warning if "bt" is attempted on active, non-crashing, xen dom0 tasks using kdump dumpfiles o Fix for potentially empty "bt -t" output, and for "bt -T" potentially dumping the text return addresses in the hard or soft IRQ stacks instead of the process stack- Update to 4.0-8.8 o Add the CONFIG_STRICT_DEVMEM hint when reading /dev/mem fails o Fix segmentation violation in "bt" when reading certain x86_64 Egenera/LKCD dumpfiles where the starting stack hooks o Fix the "log" command for cases when the log buffer was cleared with syslog() or klogctl() o Improve the error message displayed by "bt -S" when given a non-process stack address as an argument o Search directories for the "extend" command in this order: 1. the current working directory 2. the directory specified in the CRASH_EXTENSIONS shell environment variable 3. /usr/lib64/crash/extensions (64-bit architectures) 4. /usr/lib/crash/extensions o Improve how the "bt" command determines which PID 0 swapper task was interrupted by an ia64 INIT or MCA exception o Remove an unused initialized variable in get_task_mem_usage() o Add a debug-level 8 statement in readmem() to display the current input address and its translated physical address under the existing debug-level 4 "" line - Delete crash-improve-find-extension.diff: Solved slightly differently in mainline.crash-sial7.2.1-lp150.2.5.17.2.1-lp150.2.5.17.2.17.2.1eppic.sosialcrashfiles.cps.c/usr/lib64/crash/extensions//usr/share//usr/share/sial//usr/share/sial/crash/-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.opensuse.org/openSUSE:Maintenance:8751/openSUSE_Leap_15.0_Update/32fa3dd51839f828cc922fa995a2bb9e-crash.openSUSE_Leap_15.0_Updatecpioxz5x86_64-suse-linuxELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=f688c1648dc999fee1e02e75ac2d52c3249f304e, strippeddirectoryASCII textC source, ASCII textutf-8a83d71fdbe292dcd9a82d04f4ee280804c1e63ba52f9a57eae3820bbce65dc0f?@7zXZ !t/1] crv(vX0|[!O8`Iu6w .&(p -PPjy_>ovc;L6Cy 4d:N*sbh%Hl"p{1R&ԠRdY<Ve Cokm^!pmj&Ux-=z} Zq*<h{~u g.ڌ΀yY"|0\8h>~$1h#v^BUI0yxPY%Ͼ +veuEyiEz[Yy5"3 Ll٪&o`޹hzˢHPi ,!?%6c̏;h"1t/_ϠP*E^~-5PE%`+j % >0OE ܈')S@U5+T9b~W0-*n:i\" 4߀1k@ﵑfQ0Py!,fnfj+gWZEכ"}w6y1n;6pKZs4~ yJeL܃R)m젾$C+kHάz7Ns8/VG+ I!2J \95zl{FMƝSGRΨm/yuT^8.tj LGA_L`k/[b3++Ѯ؍ XSM!x9t` "nǩAEJa`g6Zx nt١KN?v!Cȭ,$ r5ZJHMo8>A,Cժ QLfEh~ˤݨpavjDL\gCLC2vKAjypMaE/Ø>j* /~V<#+SSDД1@'F8s]ZQ=Z]BR:;͝MI(b`ק[*3Bt.m{YI[ C%^wN Y1a!X2Lc|Z ¾ZE[WfWظV!_)qIFCC6<;/ti;uA},ᷴds('4\gyU9buO8t߫gפ?jwnF`S4k>PeRb%1nΣKlUZͦh]LΗNGڹB'\̟§*G#~&=Ỳf Nz|[HP۰}%ș~C6t8G`/&ɇox*%>{s߯~<+*Evxx>Θq-/vo/Bx~ET$,(K؂ؗP"NNjX,)|H?Wvum  :ݮ̲'Q/~Z}ag"m@^ŏ,WXllG!;>CN-pPp(PkS 2NEs6#.zuN1UW0?u*iP6'ډCr'r{ܑ`@"\2W4sЫ%،|:lp44Y.T)U$5Rd8!#|0pgx/|vB\-';Ҋ7P"r+>.>F!q]·:C 7qn>k YFTGN]Јf_`M^?'>$ia1f63Fu[W]󓘇6Qiot(&~tDtEkuKzIÑ;JmiUF-vP÷ BZyF O nl1y}@u<~C҆W,7l0`ZNmzX=9OV/#-o³^cVʒ>%${:(vM{/uǦF"S~πȾiU &çQB*c~nHpB'g?w_aŸ8:f ڜ98%PޜR7;bCP-QZyu‹P`>CAgҜ*ߢ3)nwTPS?J! Aik:ZT.3kn j)ÊK+P%1m!X:Rȱ 1nƗ-:t@v?NDb&ymF-eTQ#MSk-[uA06`nWYD4.:PVN{e׵m5A;X~NW[R2uDGd[~-@v~nو'#~}䔩 oq6\ʎ#v3L]d0H*IzX6~7AG=ń!IM)}Xś̹cPr.dR'x=BEY͎%,H' '4@s,>ik4=NɑA@>}ډ\%t"Ognsx~nzBM@koPR L\oCkVSoU/׿s]5OH`4"_Je_:i][6*G(_mKJ1bŲ`e!E]|3WCƱm:Mm07eJ(:џY.sس3?]>G= $@>h`'& |e/D bЧ3u<#H\_ykǡqL ^+OSjD(/\DHV:ʽ܂tBo^3QIbvʼn?Ll%gF_oDf1o͹P)rgdT3NK2!@x߹K4-94oIje3EyEi!iǗy7 aL艹K%myA`";$J6Ҝj=28r p+mC(&lo-J+n`©ѿA*qֲ.uȋiuQXNp\n|_ADt8XȰTHd[y67+&iy5 5/-+ِWR2G`HƻI._^FA4q?})/Z"׸NOI Qv4>dKJܚ'iVӃnG[:gޅN$E{G`bm})<)JGlBL#YjܤRx̧aUS`}fd([˶";Ss0j9{ghoU O̚@9 1LC2z* ;9LEtsab;7g?o UQ 8鸔byfH-ɡ;a{wl'W$8?&Gva*J=-oT54ٜ}S^lLFdY GQv*א-Q E. (puL{7TVu^\MZȷ>6<>\&7 mD|pܕh(M';I -a}Ȑd]!GH{b{َ!V4 }™[_7.tseN՛V{4+!Aqp:0,J@㋗X ,Ei_,WKYUnCeS8@.EvMJ EA/rpe->8rEȲa^"8:2MmIJo_7 2̑=+*N: _&MT xjh/%cZ59R<mq qp!hzx|"P$j,H3'Kkg`,(G>33J8 ϮVX$S(P yn,&:('tx5zݏXz $|fwיŅf`IuVy1Դ6 #P(Ԯ @DmVuțSW3Fge|KtMbM+œ]x]ĠGoWǷ0r|7ͤÿˮj@O}\HB<9;r]s @̇-kpĨ hsbV-0_g%zf39Vbϩ>tEey#mk\v~9ns,:%y?IuL֛eFCobm2Q0Z PFMBuR9v'2yp G „O,Vyրp%({Aoer;ވ-b}MNYc'y}:iq9;{hS;[]g0YղWh T`3 ( c f:,z<\oGh#ZOPv%.gl;3}E]x"lLg21FN&t"Bv1ޭe /yu[m@v >VB3eǥu:Ƀ3ܽ{o-ok^<֤v*>ac,HU#eD(n6 h|cA#†x:֡]OHejtkj>u EX=+FyjgULea<ٙdtjâ4޼Pă'@nc{Ť{f8žѫ]YB` ^Xe)WC5 wTu>CR#jASEڑDF/-jIq*u4K?"9@⎝ttamPwt[ Gd ۲B:qiψ(?J>Co+<0DYWN'8E-Mypw#2O D L` G iPIg/DIǔ6ZAٟ۵%XLGh<-ghh[}YkC.`[Q+4n+&;Awgn0t2jP_~s(afD4q6o A#"w"1(*-gھ}X7-wj'C5C)]/{\4̸.&}Na"h>vX!n/Y3s(uf tT; > qhl0vPrNFkc{NV ٷWU3x³-4 Q {9Kk7q*}`KV݈P)[*1B'' AlUei'Tuߍ]!5=}_o?y,͎E yǥzAuW59tO.Ip}"}x m=XFhe5UӲÀy!|Tf afI#y(D~YP ,:*0{l.+;kU@*Кp5p:"etyq׻h5Fsq/F"m3H^8[}NX'ƯMIе,y Af> 3Kj[1Sk}맜b8 (2G/ NFL>(.#Ma_01 :PLh3~M Yy=W+$YoqҠPk0PmR[RԥF`elV1hy:?54xI Ó&`Kb zb-)f>IzLI? *G:KN]zSɉyO`.pF }˸TxV_G3xw.5|fNG;3ҰZ:ˁf GL )9ʇĊNK=b+ɺ.R忭\hq5 3 0*~ϐ@'.#uW̞[ٞ<d.ugd'ZT\rl-so#"P^3Xr>+-Q{+PFN 51Yżb,ͪ0H@]2'4> 37F$ 8yB*7`%'CᬨHzw&DbjXt~]}&H+)%}3α5355[J'诟({JwH$ 5Lyϱ`3w\#7Fos$6mTcsPKɱ4.ÛhҊ PؖԦC씇?+:a?obbM7Ӵ&O1 A,_Dim~YT Bz]2U(LPG,SEff zz'nk Lʤu[dOت]JݎL|3LQ:Og컖@֩f8/hmLD%fǏC _F' b|b՘'jiiqoٲT?ӻO3<vj41FIҥ1G &J, <|' .4K6n^ptLf#}^,ïvb6JF1D+K"an$jKSD; g1ɢxL^*۪χa ʧbpw$G1[B :$ 1Ip7ՠݯVn:Z%\Rw"5ca$CT,G&x ON]@L ,1A"C9l#ѫ"Ts,C{>R ?'"b ֌sݰ0[ܽy&=!=[H(76ϱ1B"7_X kno;"IֿT6Aj/jp:is^g'Fc3h]qGiYx$HX[<3?7׫3L1{Ȋ*Agc֚ /U E}~NU'N盺&0(QȂQ[\%Ur%Fa)i%L-6Ogu&=6rxhOۅVu%c9bQf+M軴vVvp8?Jbͣ%}*ã߲B?u$gVM?ݏ)X2OgrKϧ^)B|9UzM(1^ \_-@lװ4n]R+N-贡Q Ά_#/6OH1kKg(n+L`% B5ӌ/QGp_o&jr d݌@ƈ0h!u9M f@Ub~!(Rʼnp#8*TMJj=Q+Ǎ^SFNzb$g\\JR+^m&x⣺ (D_ڃТs6zh+&:f̊,~jv5YQj1TmpSg1ۏ#.䫰gB1)&JUp 5',:C Ǚl12#.VFvx д)N xRFJMV}G-97(g.|'ŧ&5Ŋ{u9NxXBmȌF]`xáq`-4P!ɍ^8 ou\x t3$s?뭦Sa=T:|/'6Jf,S&#chbL4S4(pJ;(#MH`Ԑ~L4R#ӔUS53wsXxK /2!P7uq0웋 $vGEo5w(k`3kMUU:@ѧUhWm}f Iev\@9یΖXtO^Uُ4i1*3e&o:*C߻ש#乁N6yb6a#i;Dr=|LH C50BAGO ݔ ZP0bwx*WX#Rڻ='"+Th#*%:ʸ 399MpLχP^Ti/xڇw0OpM{M+Wl"p,Y}"WrB?]_kbh։z|6)(X5p#4mOXWV 8dMcJ{'dU6׆hZb8$g00B/Zzԯ")a!XhuZAqm4fcmC$wt8YlmXhӉL۷nΧ¯#fPF; k>@[e؎Om*w{rweL+(܎`Ti2fE>a蔝3 .b(@OEvo00a6,c/A7ҽiܶK4P$UK AZ0Rx)a340J`R| p W {2 7AԠ[ÙGaδvT!4 {_GbTnBAgOWtv_ʘpm@؎e%#L2q )=BTㄊ zʌʰO5(=\Apkk7~_D,D"pnQqխ7oۈ["}vժhҴM;G"%R"x65iJp͆IȀ+D:(b!vb52^Z!~+RZB@{yM d]d#eUGNI\`Cr\(kfD[Piq.Jf Tg)5w/k/tm V◾av6/W.eN|Qp= gB[fn 0ݙKtiD=ZشJ8e9u2z0%w_>ƪl^&`xpDž ?hu^[o''!RNAokJA}~i^6H 8m#ٍ|g g8k ZlYf"]6[ʥg*49h <{@}_dbvjxǥB:ҌT,pȊQx 4Se&=V>mzsj_Sr!Zgu~"ZG 1wJѸZ.1hyj7xm,tưV™Vv>"*@BbJ7sMщLj\.5Q(KLE:J!4!-H uze `77IUⅺp2୊|R|A1_6(?\~+%;{QE[ 6;" ґ*bH| )<>c%ddN^Yxi=FMj5S~!* &7 jQd tFf ũŕu!=B$r|v`õEN$F.v+*ē 9+;c| #w\]J` 9sľNLǫ'lnt';B2x9K2II34qz1jF\ FR+9Nm>˯.B a+E.kW|?"mIuc%8!8ͮ;]w%jl'O/ämw#9}Oc8/cf |TPftDjmʲ mUhbGSAQvΒ? A6 3Gr -O(nI_=|9'o7T>E%5{ktȐ2D&A,?@nwyIӄߍ)d 8€ 2:'^tL}9aSBQ>00)+SZ=J.Dm\0 ߂RSiߐ,}?lI >mso|_׸YaHN^KK;#[d Z8$l(]o($~N3*p؁>Qgfbw -f3`9XrnxސR3uB)w}ߑ[#X7@hffQ짳͊TKbGUq&ԫ,I}頊/pm\]hҹ˴֢y?EҚ.iNϘoN|X۸/x uD#w zᆋݟ>j S C|{Aį}Y{artљ*[["ay&h( -1YCvP ,5DA)tL`hĽ̊5tPp,Q Fyvl{7ލ9,ּ ĭT[+P<\R)DyC1_Ejg`Qņ^ [QdM:a '^qyA3A:6gSyȊ],ءbLM"z˽/c£/Pl_ [Fm.SC)b)r69:=D絮%?o\*[^8DZ4s#06Nh?$zG-ٻ;yCVqbĝRF>F\Jz)!hku1Rx}NY) պVJ"9^`Chmjr_v/[U'ɾaGo?1YZª[N}j{KX^fHMDMԃ7O.;2-i~>@p ,S7PaGq mmIj~Ԑ;":Cdr۶0{h1͡G^8&6!aIT26uUgzNO8Ւ]d+#5hCV2omGM>y@Z9<6ly .p=[:fWeJuFcaQ 1&!U *h.OD2`'N_|1īY^ŽZ#o7?B8,C 5*UqF"!үx ǮI_lVo@q? ԴBG>|Ay@BDv~>So͆hmqӢN^n?:'Y">s +Lc4GԾFii ]DK,5\{2s 0BZd&c&^,h!@Mz(8=+ݲa9KA/]R4ЯKW`"ZB,,皫O_jYGs®,lXm|ٽ2znz8ԧ%rFSa"rЁ4zx\a4~cES(+g!7纚1"V7ȁ# >AJK; zsQvyYޭZnk3WEFS)f 4߾ 2`!袎z Z̘*>4edgf](CΌ? ^s8K[9K|/$l #]+ZًtW>&hbi7g -l-59Rfb;(@>,QՆ{i]Y;4EgtA8}33yexap.(eBQd>Fǹs`PDö!J_ SbqOg >iMU(y]N!@@+Aj8{/C&^-?ZDޟ њJ,ϏF97C_$Q:tOh mWI @ڀbFulxJuČWbmO\/"{:Ra~{ȌrZ䪱D ۱o 8!+eSGRuݼ(IL\G![T<ʠ% +hT8xc(%8hc E X'u!7ҹߝ\C\4O, ,A쮇0^")"$:pWV6 VGw.Z cgubӔ j5gdVW/ _U̐+\:z̤0q ߳/\SG듫b5U>m(OԊܹiieRɖ5t=㞥yJU[z"PqӘ2܁F͜u"{!#vA⹻IHk L R8ޤz\;Hf&}t,4/_),b|{%L6o1>5>0u Q}j`d"R4q}*J3&ӃIye=ЯbS~qqĺuj@P@[c-ƣɞhNU ?a!Yk`s6 SǼ!@$6D- a y ,f?duXM-;뇐"(^SF|H}#~22|NgP*]o*}FL/ctA Oti~|aÅugGA~ɥ1P1fNBp0K[*3' y?J?6kC<y3;ogAK;Jp& 8+_in%=iX yE ,i!y]ѓۯIhN~-Љu)|g9=|%%-J[$ a: e)ARs4㉯}ndSX] pOqt'jn7_7`Q*9#~ }A,IKciВf{][TmްqS Llc!!=st$DapʃUXws e38/㫉iѽmrI4>z Jz" :$@\H|Ȼ&JS%`zdA`+YQTe] Q)Q ψ@*[7OEB@wbZȯe(q'F.H/yDx*^]ƫSn^~#LE+h"e|;H$YP5=$!xx|dLj2T Q}{A*x-xD'}RMt>wm Ȳ&´Yy^X1:j]#M̘,nӌt1L۠}Iz$Thq@mIC'*B Ala'(6yv:9O%_;7G/~oE]!$;A3fY&bB'q-f>EB5 @MB-u!ei#9Y9WǢEw %͸x"/Rn^-lRfgQ`gZ{يT^Z (a@.'V$Bc[AǦE2HrՒ'^W9~foc1@mD+#H!5&| N@9ڒqdbWX6=6'[pQ|ȦUÖZ< fƺrIS"E4~!v68PAyY.YU/C#(߮'Pf6{mػرg '[7mGN [{|LhԴ4BΗe#'=МRۂZb"4Q5"2 _8زmϰф>Jԍs;$h8`hG X#9+ 젫=^fIJ-8X^/r~a0W݄*HV1d"Hmj=Ϊ,?n[\IW\&{z#*Ak/.g:X#f=+z#Oaw8x:g0 yR7 D:ڟA.mdB>ŸQ8Cy|(x¹ ӖļxH0p8@<*ع9B"M*=Fws99D?Z}Z~o/.H{25VA1+*nUȑ V%$6%$؇ȑ?("m5D/K!ORUm/hÂ%Qd;h6j0'ޕt-//s(RwG~\]P #`~5oh^dN Ne_sJúg'D' 8*3`u8\ n;LK}g*)h/Q5F0qxGB2 )D:AV"/@ )k#SʹxCR,B2{# 3gmǗ$ 7\ Z;^?@/Iȱq܁!Zu"%h~<ж^%qH)QnLJy|ȁ(̫@.W߰_rX lfZkZe`:i0 wI)bGL0hP'^(O_Y1!"i.N+mV,70Oؐ.a9ąrVó^CL[yn9񌎵AʏEKO ^>hn {G\6SIλrR ֵJ] 3 χ0–.G;K%JP"9pk8|{"%u9b>hBMuNQ #FY<QhQMv?\#3c4Yq*ށߍd H[R~j b|Z-za>CdT٘B^(E3(ie~fs-0ksda1 Pe!>Bq?.K}Ż9AvGu]_j0gT/boqON {XBI(̊m,1˕l 7-eR2'J#xoiVLOe1&UKd7Zݨ g"v ̅0ds.Ǫ!qW k|O}&c9o)ؿ$:,{5\&$c;sհ`xBKE}s y LRU#✃HqN{=OxuE}:SDFDϬ~YGORc/\kA3C:prSgS hq}6OńEgiāI+ oI 3| t^Yo5I^T\gKh$1;h)'unJ6:B*q"N9ν9Ta.cMORruIM5yaljŴ9c %OjeXwd Ig&u4q ï.fV2` C轍 (?Q36."(T|@"k^$8YvF%iI.^,a_L,3d]R^o) D ~|zYƉ=x,CN}At_RV^ zy:_]r'1ѰkPd7idgBVGy .Ka,^L à J㹐:q - ?9p?IJ=ˆ:/-S"QQ.ePBD{& 6邳+d=4,6 . 9<ʣzAbٝ+ޡa(h24Zʀ0sl1zflDžcZtK bG2HWe+{yHOt$ՆKW^u;Y6{)s^h8qׇėv_RUچ$HpNlh#)6S985i7N %.+MKd'.LDUc\vz= =Tpo j8lI8{~ܴ43b[E'q?rSLY]1ߟMUܰꙸ2pmx1!%RSDڇ7چ(# oط%3ћ?|; oɪƠ4 $t1?ћL>ruA\~?~&a Fْ[Ҹca3/4㜐4t=dAe&w69++:95 VɊ^V3no'mfض/KeY e)a#j49@AO2heeZ#E'pЌ$ Q0cjyX'3"ޡ$ϥIB3O:Rh9Vͽpmn*ک0*Is9CJ&T?[9pf;v0]ItQxM{c7PAIBBdtxw5`S2ȵSdiwi(e& 2l^buuCJ"Й[95Z|SE0 ,V<r}u3"L?b>Vͦt9I(f&{H p)T/EY۝0<8j~ XSIZ5GCb0"d9d-;5F5熿+ZHiRu b=BҥVw0bu'm)|[|{'˚;ۘ2<߬>uTG8Pλv,xQ %[ *elGtn=howM:%3d#]VX[L`$vǘ/{rx򵓗ΥBIESnel'.lrUF"5)yLw~] % u5$ >TR^&|Dq\`ehʑ;فr L j<{7)b 1Q14B#Fĉ6aء["@3Nl#aMNkNxs{ !l"]9 % ^w^ˮJchwAâO7J@*?ō>|vJded$AjdYCÅ JPtlz[=? U3b)𮖺:q" }mhgӧG>!GEy؁0rn[}bUz8ֈ2-}hJFT:SmWN|]?_DxzPQ$p9]>cUC @@ztDqhT<ޛUԧqNT` 'cΚb-]tC>uKUPҏ$VqU \ȸK[~J65IuP.6zUO .,8fӖNS&U @ iD+6{`D[EW=Cݽ_s qoLZ( Q 3Sfdt]SZM W.W;}5*u#&]*Ӂ\9#3i.sг>W LKO>ץ 'Prˆzi~?n>s11ypQE}^(`Ȼ6[^&5fzD{3S$/.I93f ^̗kU b}Z}\Y飛}? >YJIE8O6+bZqA=ګ0ږ%nR6FSA[F&c/zs oJ<R70&#bw$i(4j<9Wƴ~cj╬37*{印H ,BqF?GP>)*E6X6Q@w{ 㓕iC6`-%M!1psڛ 6Q -c+/&UD\r:0bRyS Kt}EӖ]BnE Qͯ)QelskO6#%Rm h'_϶RT OeL{۪ʊ?i+t;"~,J'gMH _Md,b^hl+ާ_`{ )Ex^ZAymĕ[\X-/)D.(أ[٣#kg62#ו:jߜH (̊1hghZ49[e>^ 33K0o R iC~T!\|C䞀D0r+2󌖄H;3:{TWJKеK'MO!e#sIa}dYSծ[cE8hc.mQ:IwG/T6늁:j  -u|r7p `*ix < Vڣ !y[4 %K6Š_Vw*m?0Ղ}MqdZ'ٸ4̾+w8khAOyAͣY2izX'}9AW{4)|4W jFʠ 2*E6u"> Q1r!qJeQov^P<$caf<:veրJ: <#HhSj/ nC۾DY zл r@]ZP!8Ki& ߣdI1MH>Y~RcQ5up]rU>Q#Fd9 QNW,@<\;=4h4bdy!Y8\abVV׹  9jdN.qˈasbX{1 F]Q1 Qha*ԭ{ >1`{^t3SNⴍg\R3BV ٱ:5SWN ]a/rp >D qnpsެ0g9|hAp"Dt'x[NǶS@/YI)iB{hD(;/k8YF $RLmZGXf FRPLR3.f(Mݟ7 jج2_YG+HHz(ͮknj )kvwKG>Kn9\xE$nbi6G f-chhGPQm}}=u* 1[65O`E&lڸz_Z_z?M;`O2`PI;u-0Hqs >▚~C.R':P5*&6]6l8pyJj"Zh҇RӮIq-̾VMw/Y&/e~,E |Ʒ;(RO -r*5[.R ї'@y-FX|:P3%rkH{ѳZ?.ea+Ui*$o7(!x%=7J)HXg[0 "N&;Pno.f~$ztڴw̡ *BڱwhTL{tPC_(wEY\\rO[%e⡡į ^s#Y^k̙6iY:M - 46]w+7M sڎ)K5Av^ [zZu5\Wjloh'ez҉X+DW?gdUzpݴcaqRlpYa) ub`*9MQ1G.@W_FЪm"{lm$L1I@ވ[oN%lBȘPh8w5d)b3Yu"!&֙9Zf/3q2Q0RW r8sZzx:ZʋR>a_2W _U F HBL0~n-Wa?I A+R/Tx wZ7wim$Z3gqTQڳ. O -$Ryϱ"=B 2tӚ)% J9]Sڙe (=4 Z47d؈lq+҃ â\27m\1Wu8kOBv0ܦykD9U;y6X^x "I6i*{]¡l&|(Rg#cvr%(x5d["k7o= ~,ʙ)l2|QM1&KIch LTWJ gT%˩.a\ " xW`?XeoE!y)ξ]G8aq5jϖB(@ymʖP!<>`}<+fA8Br꿮S_#Vwp,Cmlg/MH '2:S kDv>ryTB7:ff2q(Fjj`4)Ǿ͡Oлΰ ,$, ;wt`3<*6K*m%I}{g -!gJV+ۂ,@[Q6ZwS*bܺ)_?.￝6B3}pG숃˩=H'Ҁ9G؆GmgJ.E'm\w>K'5 76?CC$Nf)8fZpVͿ%"5֝p(ʲU ˎHߐXuК9`Tǃ!e'9D[{'Z9ls+FTd$EΰjhNT 0SJ"ڀ*RP}|Mfدa"X<ĮQaքU'rVk;|׻O_%|r"r<)Vr-CIX͝lU$P ӟ&aβxD>[d4i5yS;!xޟ҈CUn{|6>qo_519SXThiarP~^J o J.xأ=|gGSEs[R^# LrrŶw}~:j? 6n}gZyիv@$Ez p!C]ڶVh:a'B$Ci:w;Lۼ7_ 1J\&¶~BUya8 ru~ǂO ߨM @hױ0].:E,mڢưoܭ5_LmTy)"R?<2*U5fyxxAOZ͇hƷwPoXTVoopD&jow"=1R 7NU6LsUL/AѺEK]i4#0W8 V N偉m_}VE5| aƼ4$Q{sE{[A|rXNB4ӉrPc\j(}0vl_TfGb ˋd4|`N0iG#U+DSz?`('G[*J~-_ja}C׋!㉿2BцwC2 SؿÙj!˄tU29WE^ߑo n[cSj}~y/(fcMW–oǒiaaoh>k&vМ]e񚶔F>NV?U ip\vG5Op(z3K3զU%M3ɬ.ttD)cr/fJơT꽺.S7 MVc)30L4 7S`0siZo<}G`-'5 hX|9kYߧA@\vORBfB;du2MLݑ}i/Xx3DnHLƟ0d4i0=2;ݓEQI?6)7pc' WLlV7j 2/n")^/{Կ#e2Gbtz3NP<>c!юkp%^o!Q A 5 S>y菇q"a0|A7_I?+@:;h=!`ii?);񶗄_`1S9nL8A|62b[ .)>-˩mP1{5p}5Q.-z) ' ôpH Tt7  V>nNu;yJ` ҙ.t /lU>Wۥ%a(* RT]9>''`F1YTb -#$FVe Sx03s 4j6n г悷6oIQ,0;xw)鷥xtp8nV&x|M>j2 hچTPqj!f\}ƣWw)} xbqERqDuIܾG坕l@QcD6 [}D&7D_tM2jR :R폒hBiлr耸xUyPFyI:51!ܴcin1+&g9)7^ֶsP0$qB#|o3_SLv_9H'|J-as|OGܣ26Wiƨ%e[B >Izro.@{ct[Л^ձ0_u%zѧ 'tB9nbl3Ey4 ƟPIm :{R0\MdiF35 #ag_ީA잁yIgVuw邧X_i(NZG,[pEp9RxJA͠1~/n58dS)$]ĻI|;4Z@̯$kUͱ }078lV"l&}9~EDQ;4{"\OˡZ\SDZYG XKo S DV!-{[h݋P.#n0fi,pmL WS$qrbm *ҍ"yn]sN-Ք є)>{H‹RRERƳ2fww_SzJsZ(ݶA1 b:kIu(Qi` hLbevPm5:bMo2Me58Oj&x*9xKE:$ܛv3-6.'A7«SHJ!Nmu8(@c\w9`X̥AL.ՐZ䎓>\< d{"@:HEzp-qR#%n|Qb_XEzu~;;*E@VE$;@=Vs#븉"p[oTFVm_J1 .sS8tDKMcp+"Th]d=-ounے: !Le!i,x1"-"YrKz-¸w+,f6۸co<{ޓ;bKpr?LRL)9m' X5W6qhrx9Q`[2 .fx"wc1NgD!:-̙2搴*~kZHƢQ*gAE4S~,g<܊[86 {SLƵ4d)5]:uY⮏%tD_I9x_B$ +)QlKq|T?Y @:sDw {5UF5dSR&kW.(>SSnrRc1簺/;q Rj,d|fJ2ܮmСYNTSّ~#g 61?A A+9;J7|X8zpaJBw'`SX^^4aN8~/nak,j'3# zϪ'^P|@!;//z&[t9H.C983 '0LQ p-)qfs,6= Rv{KgyO2r %R Ho,2X7sD{^Mx6S:: FAQ:k-U׺r HEX{OY6UD^P`RDH{xۃ2@T=p@$"أ;cM;9XaqaSL玣'=븻űlI%ÀLh:vݟ.^Ro7nh{X }n'D;#XLwjm5w( ?C͹cFF噢sBoB}ȵe 1h_r9ظ9Ѱ3yy^fiB恑NlD,̖OP(0{ ^u҂A !xBLl+o 9Aq^WOrs~(n{nF:{@5??6n7=[E5WV)4giS^эhQk'-a+Jz†`v\w!Hq 'L[ʞ .#qvI\5o6DP"վ:T42s䉇(9DE!s{PA|m=\bFQ2 Ta Gp0.Qa)jΞ8Gչet2^AK1w/idç}PK7߀eљb̳M⊟̮G@("UW Ʉm'rʖ}"C'o#]!E[H"uHkfO9^!꺃wnhҰ$T .>g񟽳 uJ-x~!IOHk &N?$+ıhk aJ.Υi5 QUI9uDМD=SoI'nsB۪9٦E(L-#Ed!8YزA!z]hmLo?``D$PꟌsv2f`<>ۯ9pDT,C+=zLe Ft-`a=*|%SW>|👁XoP=ŴoMeu_PǮu'}<;7]YbLQ|0\ZkU{>Y݇2J0ķQx@ϑZ>lw۩O}ٞ%}6mu8+'h<>z̈\]j.]Z *{u|V?bc%4o4+@͕Q4y>Zvz%KQ$wx1kY0P|1tHE,#HHqO訐zzz ,:=.tVsR{9y;xtګ3hk8 >\dD4 S*I0\3b7*Ge+`ȧ&QKY"]jb[(44Y?&sK,|c_@}4r\i gEF~Ʈ'[etʘ|Bix Kry66DSe4WMm]>\#UHm9U r4FJug" N6߃=F@ǑDl~Q`uF0OBY/-w7Z(D$U/1)6 X_907 A0viv~ 5 o`XsF>)VAa07 k pӠgYnCa ~gy1]1/4K͚vaZ: ^#d{<4PI'`5O8&f߽̫dO!l7lMqtYgνeZ(/'#B"f 7Er6O8ǟN1*5iOlP h7h U8P ]7bK}6axf}sv4/R/=ZAG^ZͼvRTvm򗄾@V/ɒ c偊1:ꄛ(۵Nў3MpZ9K%h X2>TfX)m6t}SED*`F5h;gXQzD$kYy[rx_H*)"GQ \ UsT/n~*t| .FM4r< աyva` g~hb အNMrj$yjE@== _+7?qҶ׆ni Z9 ZW؂[fUNLhV a/F^5;񀮑^Xpbvb+G8E|阘@=%&hCx]o"ub R=3ÀF xyf,bc3)=cq?[m>k҄x/fnUۨdo3y7!#RLt[D')950~k4z-XGONX>(cf_!.dݝz yUjT8CAjgS*l4;mC+„_J!,;(-un8áma3M3#  eeI(<%$yo]qE4/y@HkHi5 Xr|}W*j΂午>җIǞo&QlYzGXbY(IJKXPF1^۬ 뗩:jE;q0S Da{B{!0\"]z~e|/E34(NV@6$&,ǜyhB;~0ؐ 6v3`A][Bل,籀=:s~UHwFb'=˨z88rlŸ9R~KZd{=۫7g/Lfhᘊ`ji9a [f *;UJ_Dsت>D Zyۗ*\]Ww`{WjNyQ3gk*g fËq`5P=:$RPW"5õU)bF:! TqB*ZTȣs0$(ؗ7X. gf"\7:\/; BgKc>b_$*Ee(Ζs#ت֬1rf*9muu!^To%8ζԏ0[:,,ٷq+[n,ÉEݜ\†eh]\YDݯaM*!Y1;/uUHN^fŴ8p4guFRʞeaZ;,vwf~J䁃gI%F&ˌc+ MѩLMr-sqAcv2g_ t{)Y&MhkQ,+R̞]ܬ/<) !&! Mܘ7]˩(O0yZT5 b pt8,3hcUJ sȿZAAG_ٛY@&оfz,fȡ38P8PqVvhZNpLd<ZffWՉq+jEv+ }!hq{&h?CH.ÈeCKբ d ٭4{ԞR@:T1-\tYUl;aqq1|7^}jOڂ]=, @*X}NC9}iۛĠjN _ ?={%_`Q2\ս{y:TߙjTՙ \+r0%MRf`18\<ŰRK fHGiSywɕ'H SIQw?}ʝ(rkЕ&vU_iaNa,PW-z;֏1 "1'2g}(-R.li] h%ԉńZot}I9j\_Q=dD:POVUrԟt[,$ւ40^2_ؘъ-H6LQ:o gp (CM/ z] bqvhw XqU[GcTqx$/ ^]6(".i't0鿕>G{4^ :wŘ%q/ 9t^Շ_vbkUٳ2}SDSHPfL]-EgVa/!U?_V%Fx&*P2Yiޢ(񆄏d  +ҊZƓ覔l=fJz\y=f!+ \6ݕCDkBŜHK J@9䒚ΆuZ7rMu%o>Po牞є }1Ap8k([6*VU*n3V LwQS+knw!l2ݽ%H/}wMND\șZ֏Y]̜aopes{0-)+fQleppr#o="K:(AblFCEUkё A~"eD[!KA#{{!FIJ(oiMYk@uRIIZ[:ÅK(ޙpuf(]k;L!+ΞC,{,ߤDK8!GZl${Ύ>k˒Dv3:*oRT.74EEp~mhF`'T(o 7) VEs%w};Fb~8̌i}2عQ.N&{)R@w!Ŷ]㐽SZ/ẻO|Բ#_t!< 4)_)Q—2P#Y52\m&z/(.18&Mf )9%y͟F© tЃA+%*ٌ Tac#^ER n\(&;7LEd¨=;wp/u؃@-gyM\ܷ!A`sAhoLml}of`XKEMq ͘JF('^ލG'zb|28dMz`Q|N|U3Gf:ڻr\ q1?kvƿc ~*̃W7{vX~ tebH>!8D!Jn]rSRli̽?e1 {/_2EXw?|'k߽+$3t`+.))d+sȟ|\VDN)<5@k1&03X@ &:U]p(g\˨^1n萋-x/ qL'OCkAc,qfډ:^hJ[5Z@[ <1\9$ke=v+A%ր: S#F#Ӥ _sTZ38n/ Rfv5w0l>'T*U:yF4O odjW'|s9K|!JXhzgGZ.Z|ZwN:Գt ~ хj&1ڟHU?:ܭjyɩpڹ58j#P9yy1;<)FK yHjfԀjrqҧ&\&V0c,WLN{`6jGQAᰊܠ m |A0/Ev7rG'wb`!%i4e'$NZMVn"p_78{x+y2$VH[7 &Fiqd1ٯtMe/7%6U}NbW]MxͶYq465zl7mCwi^p^(GXů=0|c6KaO6n% .}w\x?Pr$^G4{oY^LmuL@2&)Z6wY|wcȘ4hwVi9x[UD8?'j\vW }KBZSɻZ%|{ Ը WWai 1wC;R3~EȲyNתd-`IfT>YƅD6@f=s:⯧7pͧ j8Z`|pu6?Cv^dxkW>t IG8~?@FCRI6Z6s* دh `&hBoL+Kb'>BۙsKC:.yq_qYC"*vG<@zbo{HW t' f\vIV >g*\ҋSq*弮l-/xß2@vµy]IzЎ^k-y9"aRLsf#{4ӌ>Ki#JT1nv|trl-x6R /q7)eѮ y\3q`X8Rrp@Ʒb)W`--ekh8KLO:Tɠ×R ( g*Aܱ U{M_v# fT%ej}#T34QcAb;p4QVj?H"^o@0'^ym5t& eV|Y0mCbZb6nN\~1+tNiSJ-z$q,;}) 8\2EסִdC @\fFh?ׄ5D_s }<]F64]58Ɲؽh% ;3ш]PInQ-ΔV`:_%]k[l1D8ԚDj%0ka6bjbr.($B K&qCdauzb`= !%QPr;LΤzZ G5Űl^]B'kx0t}<^ ۫STK[\Nآ,RiShԿ”2,o(a.AdNCI"CI`UUZ=ȗ ܭQ"Y2x­\vBݏ}NtO;ouve{Cg@f]*I \.0EzL{a,_zڞ@~N^;[ :.# >wb0lm}ʗ\:;][,pG`P 70 ʮ(if7/mF^J(ЙLaD]RA@jaD&œA$m`s*Ne-4OA/eoM*jS]#mFfJ@NgϿ=Wܭb) 8y{E墥zdpXҨA~! u&b7vHxxBj|yrʪҊ$}I}]e>ͪeu\^=My{O: y_ cjz,l߄fTy7HU?T9-,Ҹ4~̄@A8H1i@3R>rnVly"h%oOv;9Gp6%#"L/u$]0IJڼl_pNP&hD8D6lB= 4uB[AF3j1퍮Mn^2IpG^0X߫iƖ4߳"׽~]8NY(!S1/߮®cN/%,,ÊJK$Cod=]eFL]KINc=yˁؓBƞI9O8 '<  Y/D/t&M[G˔'FHb/-j.*7/H# ߛi2{?,o.[g^,ّz?~ғClyE`XٹH0p*pK9E7e$#ɢzۀ c1vp1QhD#`Zs%w\a[C,1=6]+uC$I n}<>"Do}`' ovٯKȆ:7|aoAgc[28M@f̻n&d!MPF.3_\/mZB1wF6* m7<ٱ뽰KUa0M6LvẄ"!y ;BχIU 3`(թwA;"Y^8T . 韂 "J ;$YzVy~0Vgٷ2~&< M 3@rB޿PH+O}{cx<$V@o#n`HXR!OeߛTD@"L%,rS(h>8_lCEĜUa}(fkĐk>v~#ǍJx[d 2F 0Ik]#.ZNN[T 肟vCgk|sخLa} LJJRr{`mX|kEdWa6TvfyRJ?L"|K ̱Y9"ɸNUZ|gRcz&G褤Vғl yЪ蛲T'xr[q8G,jLP\ϐ_jYIM9=',5YeGry$Rī>"joRv|R o/ t#%14D_@*iE'08Asr㰟I8 o7Hm$0YU8o1S7u*V0_n53[7,.X[-ǢXD0p҇Iq |N3'8P5ɯQ aS}(;g#8zЍ002hґUBs)CS WTjMx yPU :tP} _;hkY+b Db_-"p`59D˷sCF#sW~qg(R\ѳFޞHوwA!Iu>vNg޴i-FȮ'2aks yܐ)o^ +i]q`9?Džblt5-िOɖTRJPys}Xe^I2,1Ol0Ww*,AXf@:Hzښb.S9(,ŭpR+Si:/AcL81)2wFRrfќ Oqy2TU|\h󻲏b@ en H\$KZE^b͋\G(zQS#}O?E :}f1:;'i}n?:aq0c*Q>(wUiι~ 8_↣lKS.Biﳦd>( +NMmH.`/o0l,, 0neLZ[2GA'.Fnd52cO1֟n@_-qeΗɿ4`-*C2765*.jQ+g?,}Q9ssO7U$<]xΊ.k<GL犅Ft4x*w~E=,k_qo3d"cOYF5(sFk ݜ^d멍{ڛ3}Ky15Rgi){;n|x.$T&ys`ɤAت% 6vS?P ثxQkRGA<`j2ף.>@BB`R~)mtm p 뤟zeƒ N`-? W_sPBM*BY@*n1!Ӥx-(s|Y.ݻn;q;Ő&SD>ۖ+=̦$FUx.O=RR%!Tuʖ>6J:1=7tc< :vV]) {vLJ:f|՛@Yx8sIZh&/Lq_nih."p=@'EbK/lV Qt;+.C?uA_눜9zƁc?\aG(!hhoh"wR\+9/5] U}r!2csR*0m#} iw~0e-D;nsJ&>_$%@& d)Uఝ(ُ5WÇM?,ބ;%ƴi3}N>Q&=<j9Ldȶ4Tax/fENt\9G66x]TcB/;S['Wc8ЩN".$ylaH ABr,~aj?"C:^965_јl=8d(с,I -8n&@hQZuфM)G̶ˉ`dd {(◣2R!3<7aZBMw?‡&?F"|q!Aˏ~.ସj籐y(=rnȑ{f΂#3!`sp*" A\5E+5v3·6ޛ:6ZHb*1 rz!j6׺9 D9j2^E0Rl*gȬԼ U e.ET?vt2=Yx_ Ii5Zg X=ƻAMUu\fp +9VQbpT77)#É8—j'xD:ΈJQv0л4RT}T ՜&$:i%-.Q7BiIePKۢP\A":B0fB^FWe5 ! #.Nh =I6qtF^Qۻ$A'auH>q~=>mڻIn5p"YG/KRgԁfKָ7-eR 6LzH@&pj_)j&Z+5;mKg '1,j9GvMd5|? pJKr0@<@b?&?vsYm6ك `+aEc.M_ wLmƒN)y00(0lJ c?a÷u(i˗4k#}y'YQjEwW2U/mD.m͏tm7ҡ=Lv42P>Tصl4Wsje7xC4cobwP{e ] "\s/1qp|R1Eǿah3D 2ly~&.'&S0*QX4X(&ԹXS!FB@t5N4Co$ۯDT)M] 7Vj1V֧Ƌ ;-Y}1Vd٨[~_;A^Fvb ,H葩Wy 4Tj.R2~%3 C/`M?#ndҴ!lkkwO[9y d="JEGz SI6]UTdGϪh> c "ߊfY9 }78."q%߆_>8͗앁@/lUѸӪ\GK=yz7ϔ9`')OBO? +Ҋ4X B bM beM󔏣2.d]/\8a:}R*G ad̄^3) B3LuPDѸj]6#K6h1s*v޳q5/bOFh=:VQiR6yQːH[Cm~{&flec:x}[\PW,rfr:<7$jEa^s Rv{c**HOjn*u 5vD,C,3@פNZ.̅#`Z]xDߨdimJ$әI?M/SMHJyX,q/;M%kun-}JZQRy-\ɓ|*B+/PxEQP__a[c<7b,^e3[1 >5V:`yJ=/w_@OV|~jBmSWA.&0bf窜_N y/<{eImM,F`&H8؀ȣ~$ø_)^<'~:6;(R}( ҭjڹUuN8Wf, v*>SX37JRHrqE!s#>i|R؅/ٶ4fސOj~ӜywpPE`6qc5ОNf×}:=.0y<1 &Z(-^Fgw~E^`%e.D/Ҿ$<ÜAQfe]ǔL5{H gP)ɼķF1YOM~۟m5Wh9 -P͞R/uVj\FU125Da*CQ`D4$0wBbXJN7E9zxLL.;7ȊP6RPզXK7 E2^S\ďxO;9FlF GB\ EF(0$S$%K9nll:0|Q[Y(Y";n1ߧr z[NSFn <wFL-d9%߸G{yP/u⾄B%q/3V#mJa#!h4 GK]`Fe"u$OB%ذ lQ_1 s,?^57}XV@"T)L.Kxq/&b Gԡke^^̟&*3g]@c(em =F*ޏp ӠvƎkV7cP~^̫#`Υ]XSً(uD.!0RLiI3׫]=ԙ> cr<ӜvW@c7 F#Å-3:P]ı9n'$ɼJ!i[,-'8hhx*ら)TP'㑐6] g+@_7~0}\U~J׎u3Kɔ>Ȋ8E,atEJhܓaMfDʭa8'$=bY)m`)uUUgƅVlP C1V|U+V<znA._G4yG\ zx{=#<ԡ:`C[Z>ФLvP: 8u/ b =%vU|jxF5') 2 G֦00& J>\:"<?i%<WX/,n"PP7#_1Teҁ1Qo0}cJf _E=;T#1UrC軫p0AS"^mfDmX%Z0Z& c2~Vx>e0V!EL{+*u Li>FqC^<mXs9s# x.nq/խl)oκZIdt\C=v;`52S9+қN>ڐN>=73KS6p|ψDiNآ G ٹl'nZEe99L_u;|C^eT+~ף/ Iz COgKpwV'9EK8e˂e4Ap,$.0Sy;ˈ&Swg.dx+ڶ=S[8/b @h݀VcC6ؒa`oE^=U+Cg_2V$ F۸ q[RkGҌɍSyaQDOѷԚGIez=a8İ _kQ}4$H~HKuUZ ɬ%Py=9vB2()EFϖyEë!?Jd<#pUՕ@AD Cw,̐YՈ*stmo6s:&1҃3< vԽ5\=Uw~cJS8< ,({:hh5rg]/YkuW $.sCTdɨi]ާBւS6}NA!Qi[ :B 6;qu2!r=NMح^,XY@fbU/J7[UV7Kk|ſHn̔]G鯖Vu\>EAdp"7aW0_^ldLl`gP=|f?9zaef0`N֩fv ࢎ$ <ZvSqE\ ߄| 'GdNmҪjEIW^[E(YQ2)Kc q&p@k\L~ʲx 5yK-9~)46{FYyf=6*y/:sS*6sӑqhJh쬢׳mnh>te\;<>ُNxp?!W9Tf]822lZh1ڈ\m t!Cdq~^h*\!£iwpvc]z_Tc~PmJy͍6 1Il|xu6c۲|뇾׃t@zfr/V˭Z=? ;EP T tHF$Lς ^vfvPQĄ-m,6;So &S[~fDќ(FǍp|_N4YK -o\23U/I( Ô 3m[L&.V +WQa7/#,XƁ)vaJ=S@>7hFO n-FVI{4)ΧJͻ8q PFI8O.y}QfwAK!棑gɲa-q?RZ(T'tqT/hg1m-ߓ }J 5ڡ _pJۿdCd 8205N.;-x.Q2FuG5(O3Z`Yß=uHCI= @&?9 ԹC8/ * ?!8`H7{9q9GK\椬NrD47 {f ,4xm=-Y:xEWr{f R+Y6Bh=;q5`.% '?ĹhWm:;{ @m.oRø}47wHtŝv HxO!pvs($J*q >8>J&_EŇaw)0 j!)c/6MS3y2631R8.& :2@dlaIAb9[ ]oksM4jJIQwho'B^1[%'?skStAvR9`CIBjLVt(XUMK5K<{σWsyVA Ii$ɟ8Aov*?y#yo|RrXP(`{y%\vKƆSF?[scΦG@RO|eoCQ=aK_ S|~؟mvDn;!u^jݙ%hȬ?5kXXX|hK(` (]sv⍭D R6F8"Qq̧9Cn#8"@ 8&R𕉻 *aI&"SU.O졹厘8%ha1r#I-XW!"T[l=[@o>.m4z#)uQV$n*)u<ն1t b։?{hy?5L|g‚M\6ME;ȄFu1g3rm6hט9/^Wqx24У م@2+J@#73v+ ͪS1RNvO|wJ3H!Q7~ScrhdkHN0'IPVԽ~D5Y%}U7u]앗yM.Lwɛ{Lw{ͧĚ71aph͝2֩lm*){ g7qF<%sZox"VKhT$KL+@_v_U Pl֏_Z|ZyfpMsi489nDhMխJ mWd*,l~kQmDE+mibɻ 5Ӣ39]ݿn1JS1LLB uCȓbI0N(kNDN]Q-OWI_Dpf&9pTL;m,v]4,r2yvo5PQ^QXjϰRRϒaWO-df'?*ECZ& F,7lɪkb<D_zm.DZ&<&Ο_Q=i+ʤ{-Iaw\d?`Q* &+ 4Mf~m MQ"XE {/2.!C/@ZyK b_cnbcgMNad?z H]g6\m Io&QvwJcBC+X~ җ%?4[DŽs5b)H:Ĺ4+ٛvYE7 5daY-Z{+u"_/}ogjDl$uMAB@f3_9!$+Re5!|A!y'KZXC-%6FW{BVuYUCLW <+26۽y\$pz]?89x5W^\/3qP?6] {4]b| 0fHz|zK};u7(CYa;ڂ! 8+f  9FrCޥi 8SCSj% YU\tM0r#?07@q" 4.X##QrA9ZEBDc^\Y#y2U{^k} V*'> 5.r|:t<@Kދ1RIAM ǯZX'=Ų(+ Os@xG?d#LUT2 b8P.!U&P&Xg3=1Y0 2TL>M#|fMɝ=f3W] M! kDD Ϫ%'`kF-85ba| z'g%jNA!tt5wA~f]҉tu[2l[p.Paj! w~l2R`.8AA}dsj}d1Y"s{r/~6fn vŗ8:S&s?Dʐ*6ạ*Zj58L0p8P<'v 5'ӣx8NG7 66#u=X%4ۑ|iĝ:[ 5 [5^Z<@KCq|ģ5IN18s{bVL>rHGqhfItl6^2XhzcS1w FG#<:n/׍E_28N[c:-+0BzD^L>,9ō!z/m)TIEedL.ƚ Y71E_0!iݴQ8d#-L!j Aq3ruSV\Gl@G˨2TF uWP*F^@׽0mH>DNnYi9VMЫ[ [&0VXڠS]x&ͳ KYu'\+o}NtaYt wݳ+m\ndY{gKXm@ /E:t(96O'Z\VKvu%' ID̩Rz[ԓrK* -LTegJ%x'$7kuL8哬021v+)czPǺawiN挭Gid͑F*586Ҟ6{t,|G/)Ӽk_~!-Sv+h,9v- nͷ X^e/Znڋ3Z9+*,ϛL"+ P[c/~B}ȁ?XAx5EmNO+K5I-ILxq+b$!9k驠H[N0f2tgQZU_y.5᩸&OtէȈ-QVxI~5"x g|V 3%m!鬫PqWފcL^zZܒ|N)wOC<lr J0C,zrxj] #4r>(G{F~e|ɪ%άF@V"g]o(GI_"D ;Og'io~SoPH @f/*rY hW6ƚbX FK_4X=04N8`K!wY)ݒE? ~VRIAgד}(F7spzlBe%8 kn U9BbNnӁ!,9OB%7@#cO 9!G(`(ɥ]^E9 ݗUJ4U 4i@G/$E÷Vd7Vi~{-L+E0fI+*@CSoqkBkDtPB4hFu1Ɨ{X3)Wݺ TCv=DA];ӊK"ϭVݻSm!Cfgw!3@>Xfnc@dAq-Ap͌uJYC™sP$Sbka)mUk~|OOs%|;Et;Z2_pyvk3P!)WXJ`K}Y\2nɆ+0 !{x$Hb>S$Y:ĴL g] ?l>|;xa1?a_׏Nxsxx2I ltS,+zu($ xM``2UEWy5C)k߱'>&oqic^FV{D_cۀ4,ޗ&Yg[n:;-~E"k/SG/-[qWɞ2~r,{- Y);/~t ,y@Zf2c$!cKș,y//9HX(bRKb ݋31 _#n_a +0qn+zdMC#}jBt9;x?FlL]24 =ca[F5}Gh<[*6>HHæBun-ۢYM 4ܔi% W*.ƲEwwk1"jOUQKXtoaM ({X$"oyhcb J_qܦE}[gOw7 Eq{~y)}B+uQ^wjRlw,X.[O?c}ήz!qodG—R !.wsɤ4w}[sZ…Wchjslep]fv8]U)sۇT{+/!TDa}i8g%]2lO2/SKwЗ9Y 2Đ'&0>` tt/!d yȡ-:Ӫpe6NfLiz#0 _i&G38e8)YCJ߰ "gjՍFkx-Q?=F|6gtgnwwHȖ] aRLWRvS)]򏡩o r^ή^L > )h4/!HP0.iU h1:tjy2\!EZ{-:@i;E)B~'bj<dCbPwF+|3pD2 6v1n~ɦTآ&ՙ Jhp#j!Xth#,2^|E5giIPK Yr $ goׄE"3t,$e)q+N]9}KJezgzD\v-hI@Џ%+56I33Aҥ]mA2^~H$aww{Iž)qQGm*7+Gh#ѻNވ洗"2)݄R 1w٩5DuYK2'Qcά7,pp/Qn#<{TN-f`2^6ِa6(^>wW9+D3j22O7]Uu/`ei4LR_^zŠlQە mLpO0;Ayv}a$'6 krn]bZ۪HY)I7|Jr+g HT`7!o L6ԫPLқ=Ap$y@wYKӰa!ħtwL$a4 .OܗHq^J+>R/eq/06[eJ[Q;+Y/n^GhSCx3CPOY {~r`qi9ޅm)A$`|\#Tg@:Ke ,8O20ž>-ՆԲ+#+?j ^TFoЁ`ZYЅgq1dٷ co<k 9˜q x'DQA )BbͪD)0|VG6rUo*v)>^OW~$`#vݹ U)YN H_Y8VNO;lV/ \8? ){9k}T4`˸ G+MОd}]aN<_Ԣ/°C4Yo953BE?aI;&2Psݫ̅Ϡ`H[U^~% VK$ď62t3RmH ť ,j!*>1JbaP$ #*:}Te.*c(T'e|BdX|@7HVC4:gnPi~)u8s!M^DVWv>uXK"v_@IZ; 0;s`8d%l_4p$Ʈ^˶?|$}v8,vfbH~PIJR(%1pip\<%oW\C0♤i]y!bnNlE߀N?nQF$ Jc/S"5]E<}wVHQQókkkIɇ 7Hb$GwA 2.'Kf !! R ۰(le:g'iz踑FAvE󗞈Qid>c XG՟oιܑx%na[@OފHt|hlÈM? Ech.{ox8|lB,12І<?ñG r兖jz==@ 1mqlz*giO E 1d4;Y#Z $G]E dHe!-OFS7fYH_i:7* AmZW0$3ƒͲ$?y(p;u>ﴑ^0p(׬@[^OTui4HO>a ` !YYe0p jC / 7ݤP$31h Z|t0PKQ]2 @6JZH^UF =&_ny[WsG:4J1Ei#,'/ `SX$Rc3v H pQ,Y\X+y}ocЎ 4GE\9.9q>>5Lw? p!l𜷉ι=-yVDQ_dfɵ}4;B t6Q;m[up`%øIݖ|2%)!HѪGoM[ 9HkzQ'A$ )UcFx@5K*X(/NX!Z.͸fXOH׃$ Gr4%I捓9m{IRK`?K{ fTú=V~._m̝[bb'Hͺ SYscv?fs|@5tGo]CܠQ2P Uʊ{)Uƣ2njƜđm. \69Ur:QCUMFH)^a] t6CUrrׇMNGXĊy%o̝2],[қ)?QWܼ!BJwJ6Ve}J!:Jn׊!!mѢs]rb>^5W7t F:J[5a:\7Jatڣ2cM\I'r\p;[fr̛MgW<ef|8]L]VM>8Rew[PVܹV#y@ Y@! MEY/ !8TtS@ځ~, P}wN 1X~1nsZ.(v~Q~_S34V蜋³fL@6yBҾAlP5?J -KW8jl4ؙ#r^/5r6'X"8T&Rta7|FN+Sg!%C6p0Ԉ3O-s;Е{hr 6JVl(PdWMR MOɏyRD'@>a]s=WBuVwFRםw„t3 C P"P !sw XjVwjZ.׾\ONnȣ>RqN2|e5Js5oZsW! KHOlZAuԧ}UHQ3!Q8A${•-buXz%f Ȅ}CiɨtWhu j +C$ y5_И{4,8]X~w>C}׻< ,kw45[qƘ.(bע' ՠƌvz ‹B" A)U펣wj#'uPyUj|y҂A35ڞEue#4٥.p9_EH悈qE&;|ο|k[C.7w\i/v vY3ndONY  GZnᇡ|Xi\/$ Y.YxJ-“ZrXi-x Ϫ=ʾ"sYRM( D~r?ݚ|6hJ<ܽ(,b7XNi%'5AYUۛAZ s" 8=aVGx#=?&x\R:^Y?\ݍ::i,q>qDKyhf 5DMWiۊ|bc2S/(L7(rzUɘ2A0T_’7ޗH"?4y*l ٰ`7F"8 ؐ}Q/_qOU/v)8#y$]I{I-6J]'оxgu6n ;P6o|{6va: t Gj*1,IT,D~.blW}!ר?u{-^K5C/QJ8 :%_#񠌷[:Τ0MV-mqynsVjo&QݛT`An.3K{naۻT0ow.w6L5K-%A4F%O-5uVr9f͖XY"kM1zB/"\--Ta\ )߇lՙI؁t%YhY`Wf}}g7 b$V#1 332}?ސ?o׻ -L;O/b9^mKpEn .Źf^ܒ4,6 *\hWk_xcDF=O_sC't \,Av,SItLtF42mi$e/ևMu+[>>,bk,Gp:~OCF w-b3 dj|}(Xi#,M[GcFc<5iXOs6̀TWp7x#mV>Ր0ϵ8L9ͭ;mjK . x1:N= ZjSqS1ɥ vn3021i€ F6ܒD>g"!Pԗٲv+6#qZ/ܾӺſgLsc~ECKpu|ÙA}RbQP ƓH!(bBvEtױ)Tv:Эp?bͲ-`,'q8tǜ̜  zUfWq}&948$äD7Y0%Ta#u L.dwv|NEqxQK $H$svO 4{ VЭ]ƣȍ" mGk yc㢋VI!֭⍑-0<SF-*YT[#n1p TȦDf\9=})o_(řʵ[2=rɪ8 ;vGWAL>que>Or5I0\ DYRztz(2-9{/y4{_5+jn iל)ˣ 6bմଔ_;|EP%M/qA]Mt *sI yV_eI58euIJVX$Pp7Ҡ^31*#d{k"N6|Z m dfFI1W|f0?oEDcΏW~{,"RÄ&6gZ5!¦V5|_.qvڱ>WV:ǞF X$n$\b9e_!)1sW^5N,(ɃX&YԺ5)|R/HU핦%\/jϝn`HgўfRZcثoi>}eg0qԃ5/đ'A,V_ХWApX,2dop9bR h'pҐ.N39װMJX<%{UpXtrD+C2exd EeaSTT6\G Լl_|UD <;fn\VV]\\ą]}(wB Ⱥ}vl`JDT yw3~Ug19 |Zv˷P@c 5ϔ[tLê(nai$- vkrՙH{Ca'G-G~:+ى}&%`̮LY2>r_jرDrM%!%#Q.f1jBhD"0a}c޷zr59V~͖j#k xq49N\1-Ao>:`q8jВq\zZS6Zp [6&6M+PA l6pŠO5>X[kv]|Ψ,]nhQ [1FB92K]K,Q{gh)^Щ2241^i4|*R{r4q͞c0mgKUX`kI)?RZ =78*'{-|Xu5S8v _YPcN|?zN|EJ9Bu++;+\4L`^4; '=h} 洿!hϘrņ|ݾ^(<w.eqb)xYQ-T8IGSK9ROhZwL= ʮ Z' GPCae]Džy [3$FQnR9Zs鶠d%ULaim1g64C.1G$D%iH Cnҥ0GL Mfl$̖YBG>kFqaE| ŋP_25\'2GMbss %O"rǷ lRX|N!4Օ29H؈dƢQ(10Y+%(Lg+0zMruUPxvăR &OG&2Wto?)=k?en=\Q-PH^ucch}%~Ω0\^@n`bӻyU`CiAL[; y|;$D-[v'XunkMj@)棾?ݏ̻kG+VhqƶE+(bf7rjrǨ0іNz6j:TTw/}ml%Pn #;ڲ<^6)`Yڕ0~'V,hLZ5̌Avg?+ymOVmsT/=̩FnO>O=_S-l f{(z@oDl._-H=s6O#bVɇ"ކrqBI #q/$:zHԦ;$BxY8e!v1& yET4u g^aRt}Ku9YzZcL<ܾ4QD ~+3r dލj—_"_lЀ<(V&[ v El ,,#jҼbQ6'=<'Vn☨3`0 9;Q]p:/[ӊt2ӀhNӃT0Ge۽Ѷp_ş.qYv)nkc>~xN\8B^Dse&gSΦ@:fӚ&eXq"/#.))&uY3zA\?gF쇒WEY:w[0C#v HLA;ݢJ%CWZ" ˄m- 2OLT勵ۚ,vv  R32VE1mҟgԪ@C|,|*Rv٩8UۋNHDm4 *Fg.Xu7W%)>P'Yw;uw}S * Xhos2S!mN4y{ߕ,,AAtè:v1μK([hxeɭ,%vxj˃r2{'V+\_ ƆsU։W D$K¸n%sgJ!*a#'_hK7?QI S 3)Ǜ6ŽhY I}(^'pFL"y#k_vx {H}0-҃7@;ݬ^p_4ȡv$Po&?^2'οuM2l2R>ZX!q:AhFZUsg R[] |w "_Y|^eHLkhh? 9 M\ PUA#++s@ qM΁8 HAW>DQ"%; c/JC`@ zxE:O V R+%;}Vt 3S^6D)PF1lٰm d.P"čڌKeXLL jS=SĴEª [ hrRR͊a s qyn7_ B D/.=5 >Xx4ęfz8I3ƽ00Fh%DUU_=qD yo5i܃tBۅu$%qrB$o܉DكBc =âto<`1 4x yMIG-ʽV:1Oۄg:rbwŃd㮄jR9^tD]gŬGzɺ/6"u&a{Y6bato yML@ϙi5WĢO-4}9iVvor1%-mS,,gB]/Cj`YhtH ʏׅѨTM, uNLȫp;猐e?Eg)]s?NIPu?Yq8Pk(AksBzН~֥ q6 a 5J܎5p77˙F Qbd_9"좓o)E[58UyתXO#ce%k xgΆ}UjҺ04(?2_GkGgAZ[vە}ߎVc x'MOgt믒; `YxwGѬ|iWǾ _ALErӴ>#m*TH-?bfšvX3 G.jvޕT䶈Uu2L"B4 3b{ڣ4K{!`e1ݹGoU5H=69b"`%卝8Qxmن1}Z)4`)[c6tRL*/N,;d/K! /c4= 72u1B3pIP;Y~SL_OrlcDvV#.$wN3oZt0m%juT{ߓYVQ+ÊB+{|$P%!} yoI>UEa3:e䂚{µB&u3QإȵA4cDfV2+KAqcDsqDe4JGOo-pAk~t=!NPU>z Ӭ9+@& N.fÈN8to0|p)~zS'zO v;f=,_%Z N$JXTR^y%DS + 흝AdL*J~Ћ}z'/H*C6/:+2ղr/ȰPʒI 3[9k7t|ǹ)hҒ 6BvI βo9My] l7ɖMLc(!G]=FX"SXµ3~~<y6:CHVSWKқ|A$]Ι1m7t.6#mn>4Q}L7qd[pz9-'CU\n~&,9㯋kE?JD^'NF3@M<62bnQ? ISӈޝ&!tr<9 +V Dz>lȈ$ké>fU&84U/&{ rew8GV[6Jvo,9A'Nξ 2-&Y(:#yP&YD읖4(͉@K | 2&4 6ԍכGRlCž72QMeDSb_RSj{ {Ty|ᙥt߅0$$P?Cί YsաNq9F/J&OtK#ߍ@ xB򳶂xTN䱭ڪgqƩRYVd: Nڻz4e x{bG"<yItQr/ Hc\CpDC E!QDЇ_qb!(9MVȊ O8 BHd))[wq/"00h )s5P6b$ϩl2V ±ba(O-vbK?ss F- =R>'f]Ub$%Hi jցJ 2~ {%nI4N)S-$+XkVwEC; I٭p( ,X8|0ZuJ^Sb$ujsEt-O [Q{q*J-MQO>rnձ;4)AE]_%hwOoיR)R7MRhOv?twM}._Q1)Ma-6 3OR֌܋G G(A]L=39sl$̤/ֿgz,y8+8r|8X"t5o|S?)9㶿hddeTbF3=P+*p8٪;@ 3)a9l{Z;> É1m4T(yp6Fz<C5mj(l`L|!eavry|e-W}\)b ?}ϖsKOKMKLwFM'3kzfP>2Djw|XM0r[K#C7"zf1㩪7@[J=H$O4GxzK$Ș m..L"JW:5m\ &-ڳm6d(ܜvNBME>t'h.0XZ]%Xy'wGQs(nNqf!GqК=0V0o)o,%FJ[3EEx%?"曭_ ]čKb\NT$ UU l!TY|W="e$`잘<r{X2 BVyX̉OYx;`ADW_oѨ4ǥח[Uz%nLnqoːJBڤmLjnS$Ʈĺʮ=A;~& Έd< fuȿcʗ(t=(iNRմ`m^ã6O$/TgUJ^M{v4S|.> lZȋ<P̣hI5_UO<8P#^`$KR3/ժ2EmFG :60WSIz)xmm׭5a q8҂u"KLB,rN:<9,6˜ b}sQ#葛Nɟ#gH/31Z"5*9AeZ仐e1rs=0sK:~_J}{g&ֆ/Ǣ >pBV%v) Y_ GSl?T"!R>f6, U 89[܃d˒Z`jJNoIG`ܕu)d4n#J޴5 p@ymlNttv76sUB9xmGًȂszcQ]jN>1oj꼽Rv`+;jh%/W&D8ܡdup~Q7 lB 8<'jЕWr,)i7Z=QL5( W,:ok,"q@ ( SMxO~-E?mYw,Βt3Ȝ0**voc~*%Zk^.\AmQy=Cћ x)HB4fw-0'60uRm"1ƚ$/*c |#(_A(KUw#1v(wr` =YҗcŹyeG_=ZS./f\!O1dN{nr`1)]O;j)^:)!V4wYKSfMrUsix -E.Tˏ {RCT9!Wom(5ހ*:-3$Ē`~ʧhd5ܯ$ !6vHi+V*^ Uu0g0%`~alWDmGU$]*SP,_q.K Y.|_|.qw2=|.)p,1X6h8 WnT]r=ѯfG&<;Gdc-4uB߮u" zr3LTkUSi,c"H9nQmolD z5l&޻O#KUT]-`|>C9ܻ<~{ǜfG͟ɍ梼q/^DPge60y?уs 񟪈Y6>к(1qrI6pYZ2 <̼Ffm!ʢ5䝗3Ób+lPsq Zz%EoI H O7P oAi n8a ny{ >Ւ{pdكho=Q&z5ҟIOcY/M@RxN~8z?Yy@vGېO;i9>-R3{2dEp:,*j YJ(Xζf砾kImHXc^=! Vx壘iʇ/;O+J #4%RdBdYĹLl&-T@AAī]m*&B\_p`syg>K 3> ce>>*K_t8-!>.4TC)GT8"~u4KN{ 8)$v,=eVJɥR erl?/ =P2aqTR |偮N, qISjMws./W<%v5mGje /Hw߈q ,<)#|Bܢ }#컅,gSE%OVC6ƈ@˩ȡOfxRrVT)jt@vF G'ؾ^'ɧdI+F <=3~ jԦBأ@^De[*iR[lB>ڿ} ar D@ Ry."ם;e/ ^{eդ/4@ [N蠫'bv_u z_yy6:<HKIsN( %%@uL^xN[ЦSc4, O'ߐV >1[K6{jV'\P.p3+HݣBdP)V5o &h;Ne]PVS>h|%ԉ琹sY hX[`h< ZOgNy} 9DuIDs'wUD7;Ҟh|x&j*eЧdCq53ps mw>ҥgĽ,Do4]e?-m#J1fPz[X%=nDP.̋M bO7)܍^ƆI6 yv}#H*!kZpe>X&`d"}xB{cien\Of{s y*^1L< qQ 9h㧥6!CMfNMz55wdgW*?.[\ a8CY2z,x+96ԍ^퉦&as,tsJ"5}gbA: ]0a 0q&YIzdr2WZXC m91*#JC}]W#K'.(UNR봉WX,0O6mӔC /kvMLoݸq=_k92g_1^=7'.V Dޝ“)djh75W[\:[^pt J~PJ|k:Ե>lgsj~ar,a-Ʌ%6&Uo4egLGIS???h$LP6Տa֌ӌT-L\@.㴱qMՓc{ r<]2ҋO*~8 㿰_YzFM;nEp$l} \dTrjKb/ɣoق }>`Y}E6poJ `q N|I eoURrH͈7ǴFz"x/.r<ѓiIN\@ A<_A/"s<7 |E-&ÊN1hA٤y\JȐVK1l?A˄ʫ_GU@~`7 `v_K'gIr{_&+PԹ= L%=? 箿S.Jnw;pUC jo6^L:#!@ht2* 0?iMƹ|gR;:Zcqcz?ڙ/kKEvyrcȽ gcqNUyWF3tͭS̔ Yawwq*JrG: 0k %Ҋv`9<˓A&n&Mv ȥ.—htN.%ѳ!1ىfuSheIng1ϳe#vZUБl<,CG̱bTsꆎdi}e,W6np1S=X4:x-Ѣj}C/0S$n YHg `1|U9܅iQ!ލl,7ڈqdV':146 lf^ W2vc#NjpU\uxmcTzg~@P}Y;71^< .F/UI˅Csa[nUsw^d۠ok`\odoQB#& 0T_сk%? z5>C)$/dqY%#ܻ#Ivhpsآ 6uX &h*BoV*svkܢ 4N݌0\41^ Y!k-ENhZxdsu>J`Xs`kCQ`s2eӂ4BpNb>*R'~$ZȀXmzDI-r+~ w13/ݭ)򤉟CS+1@9# F;y.^ǭ73I#6uG:iMޅ5!y-r-UךoNR% 9BWx 4@NHɪZMQBbvG NvQ(0V(KRɳCg!dZ0+FSt&!B >뼭WjwGD3a_rj4?B !YQ"[&cΎ{2Y;0,rW%/qMQtI^0tV.SRSB juD 4<Qd)$ab2K.oLCQl\lxpWbV=``o rP0|{ADDfɹz;t`^{SKTebzBAe]Fkm[lR31l*D !b">Wm<6N/7^p1\ǐ֨xOL^&udeX;y5C-9[-5p)y@=y1}B5s}e{LGoxs-AI;6 o7ܝcy@ l&o+E-\pX535]Pתoƒ\&Me'--}o 5|q0P*..KjV*iu?e 콐,S}&NRz=`3Sv!9wy ?Z;-KZPYhErؕSLcj$oכ"U_sO ~jtj8ip+~JkASi U[>,?xxQgW5p4F`c(hM" -<^EjA%LN kC'|n(t) x=q[S^j HG 6axes1l̯3qY0{T{[* AsvOЦ&^,Aom7ӛH5۔13\ j>Q*ft| (i ї]Db5;CYBsDTPgu2O8;J᝾Rœ\nt6>Dg1*N]վ4zN3z/LV wYC}WQdP¬;=A#!ڝ8= za-JC$-qISPtP]$~5N_1/I(S>&ؓ<HY Ucf?r"ʼ2 I@P0Ckk蚥ڵmAƳa|կI,Ofk  >y0%fvo#s9L|Uw7RJRN N;Z`vDj(鮰LU=tt_k%p3Qą%vL%|EAo+,mLxyg,PY.5^8dwŚj;{u|"bZ[aTV@6Gh? | 1i7@ps~_<((@9Nc#Ӽh]e09Rg(?`JGBη`8KH-3nAퟩ.zPVh8KtlA"4}DO&hl'QOPz⸋K~6&(=3Bs=Ŕ_b%FR3].ὓ+PPPWsP$~?!QIO`^AP!wC+8LGw~ɢz1جX亽<)ovO/Tzmʢ}$$lZgBYLa,|T*£W*#̅9bOn1R߹9G4FnZK#=V%7sWx*x薒lp[)h ć ?r<yrP(_& ZP^DC!"3mOk2.jk -̃Rb1Zrn`RώEgL=U7:cf85g|(f`J8 ۦD%SنlSH?,:Ef|` g\*U`׼yL2mDˡLBjm#M`XQUʰ,ǷǾP&g+6e` 9 hH@`_fd.%Pyr+ht|v27g)ӱ YZ