ploop-1.12.2-29.g28dc464> H HtxHFT  Զ 6#-xo F8u9X>mYSyNEmF6b11fc8bb3ac9640c632c44a78f88417633efcd5׌[2oQMՈFT  Զ0+IrbEELv0#udPbÍ -1y8+<{ 4>8R?Rd  'lp      Ty(89:GFOSGOpHOIOXOYO\O]O^PbP+dPePfPkPlPtPuQvQwQxQyQzRH{RXCploop1.12.229.g28dc464ploop toolsThis package contains tools to work with ploop devices and images.T[rhel5-32-buildGNU GPLApplications/Systemlinuxi3869큤TYTYTZTZTY5a5021a4760b56e87702ba39f7f18d7104259c52f2d97349c2d66a096585d2cb5bd14a22a0517a38d697cd638de8105ebc372014be1702031d715af3a4e441d9b0c3002515a6c8633b43600dcb09b09frootrootrootrootrootrootrootrootrootrootploop-1.12.2-29.g28dc464.src.rpmploop@@@@@@@@@@@JJ@/bin/shlibc.so.6libc.so.6(GLIBC_2.0)libc.so.6(GLIBC_2.2)libc.so.6(GLIBC_2.3)libc.so.6(GLIBC_2.3.4)libc.so.6(GLIBC_2.4)libploop.so.1libpthread.so.0libpthread.so.0(GLIBC_2.0)libpthread.so.0(GLIBC_2.2)ploop-librpmlib(CompressedFileNames)rpmlib(PayloadFilesHavePrefix)rtld(GNU_HASH)1.12.2-29.g28dc4643.0.4-14.0-14.4.2T`T\S8`S 1.12.2-1Kir Kolyshkin 1.12.1-1Kir Kolyshkin 1.12-1Kir Kolyshkin 1.11-1Kir Kolyshkin 1.10-1Kir Kolyshkin 1.9-1Kir Kolyshkin 1.8-1Kir Kolyshkin 1.7.1-1Kir Kolyshkin 1.7-1Kir Kolyshkin 1.6-1Kir Kolyshkin 1.5-1Kir Kolyshkin 1.4-1Kir Kolyshkin 1.3-1Kir Kolyshkin 1.2-1Kir Kolyshkin 1.1-1Kir Kolyshkin 1.0-1- Fixes: -- ploop balloon discard: fix wrt 042stab10x kernel (#3156) -- ploop_merge_snapshot_by_guid: fix offline merge with raw base image -- reread_part(): repeat ioctl if EBUSY (#3081) - Improvements: -- check_mount_restrictions(): check for all images -- ploop check dd.xml: lock dd -- ploop check dd.xml: skip check if ploop is used -- check_deltas(): read-only check for non-top deltas- Fixes: -- ploop copy send: fix a race that could result in image corruption -- resize: fix resize working on an older (pre 042stab092.1) kernel - Improvements: -- ploop mount: warn if host filesystem uses data=writeback (#3030) -- snapshot-switch: don't show ENOENT remove error -- ploop_is_large_disk_supported(): check ploop module first- New functionality: -- ploop copy: implement two-way protocol -- ploop copy send: implement async read/send -- ploop copy send: add profiling -- delete_snapshot(): handle snapshots with multiple refs -- tune_fs(): use EXT4_IOC_SET_RSV_BLOCKS if available -- Introduce ploop_get_max_size() -- Introduce ploop_copy_{send,receive}, obsoleting ploop_{send,receive} -- Introduce ploop_create_dd() -- ploop info: add -d to show ploop device -- ploop_check(): open image RO, reopen RW later -- check_and_repair_sparse(): reopen image rw if needed - Fixes: -- ploop copy: fix open_mount_point err handling -- ploop copy: improve fd checks -- ploop_store_diskdescriptor: fsync DiskDescriptor.xml upon writing -- ploop_resize_image(): handle get_mount_dir() error -- ploop_resize_image: auto-mount fs -- do_delete_snapshot: fix wrt temp snapshot uuid -- ploop_switch_snapshot_ex(): don't return 0 if guid_old is bad -- do_delete_snapshot: deny delete top delta in case parent snapshot is temp -- merge_temporary_snapshots: fix infinite loop -- ploop_switch_snapshot_ex: fixed case with PLOOP_SNAP_SKIP_TOPDELTA_CREATE -- ploop_delete_snapshot: fix for temp snapshot -- create_snapshot: clear stale top delta inuse flag -- e2fsck: make it quiet- New functionality and important changes: -- support for 4K sector size (including GPT conversion) -- ploop replace -- temp snapshots support (ploop tsnapshot, ploop_create_temporary_snapshot()) -- ploop copy: implement fdatasync before freeze (improves CT frozen time) -- New DiskDescriptor.xml read API (ploop_*_dd()) -- Obsolete *_diskdescriptor() calls -- Obsolete ploop_get_base_delta_uuid() -- ploop_log(): implement subsecond timestamps (with verbosity >= 4) -- add ploop_is_mounted() -- ploop snapshot-list: add snapshot mode (-s) -- ploop check dd.xml: add -u UUID option -- ploop mount: remove -u base feature -- ploop tool: add -v option to set verbosity - Fixes: -- skip max fs size check on snapshot delta creation -- ploop_resize_image: resize up to end of device -- ploop_delete_top_delta(): fix wrt top_guid -- ploop_read_diskdescriptor(): fix get_basedir() len argument -- check_and_repair_sparse: handle EOF properly (#2897) -- ploop_resize_image: add missing gpt size sync -- ploop snapshot-merge/delete: deny snapshot deleting if mounted (#2887) -- grow_lower_delta(): fix a memory leak -- ploop check: fix -b option parsing -- get_partition_device_name(): fix chmod argument -- fix alignment on GPT partition resize -- fix GPT partition alignment on ploop init - Improvements: -- ploop_resize_image: enhanced inflate balloon to max size logic -- tools: add {} to specified UUID if necessary -- check_and_repair_sparse(): log filefrag output -- print_sys_block_ploop(): speed up -- ploop check: try to repair non-top deltas if they can be opened r/w -- e2fsck: return fsck exit code to caller -- make_fs(): add -i to mkfs -- fsync_safe(): use SYSEXIT_FSYNC -- Fix uuid strings size, use define - Documentation: -- ploop snapshot-list: fix and update usage -- ploop copy: fix usage -- ploop(8): document snapshot-list -s option -- ploop(8): document ploop replace - Build system: -- Makefile.inc: fix dpkg-architecture handling (#2877) -- Makefile: add ability to add local rules -- gensym.sh: better usage and error diag -- gensym.sh: add run mode- New functionality: -- Added check for and repair of sparse images -- ploop check: long options support -- ploop check: add --raw, --repair-sparse -- ploop-check: add -b BLOCKSIZE argument -- ploop-check: accept DiskDescriptor.xml argument -- ploop umount -d: allow to specify partition device (#2788) -- mount.ploop: implement -v and -f options, as per mount(8) -- umount.ploop: add -n option (ignored) -- mount.ploop: add -s (ignored) and -* (reported as error) -- Added ploop info -s -- ploop init: use v2 format by default -- ploop init: create ext4 by default - Fixes: -- ploop_get_devs(): fix snprintf usage -- ploop_global_lock(): create lockdir if not exist (#2767) -- ploop_grow_delta_offline(): Fix uninitialized struct -- ploop_ioff_to_sec(): fix for v2 -- lib/ploop.h: include sys/syscall.h (Debian #728173) -- umount.ploop: fixed (#2788) -- get_image_param(): added online (from sysfs) and offline (from image) cases -- make_fs(): turn off periodic fs checks (#2769) -- ploop_store_diskdescriptor(): check rename() -- ploop_store_diskdescriptor(): don't return -1 -- resize_gpt_partition(): check fsync() -- ploop_balloon_change_size(): don't pass -1 to close() -- ploop_grow_image(): fix an error check -- Don't ignore chmod() failures -- print_output(): fix output -- make_fs(): fix max_online_resize type overflow -- do_umount(): fix diagnostic lsof verbose level -- plooptool_stat(): close file descriptors -- ploop convert -f: do not return SYSEXIT_PLOOPFMT -- ploop check: fix exit codes -- make_fs(): create ext4 fs with 128M journal - Improvements: -- Support RHEL5/e4fsutils (tune4fs, dumpe4fs) (#2812) -- do_lock(): open file in read/write mode (#2730) -- ploop_send: use ioctl_device for PLOOP_IOC_SYNC -- use access() not stat() where possible -- umount.ploop: improve mtab handling -- mount.ploop: use case in option parsing -- {mount,umount}.ploop: don't hardcore ploop path -- ploop-check.c: rename uppercased functions -- ploop snapshot-list usage: fit to 80 cols -- fsck: use fsck.ext4 not e2fsck (#2812) -- check_size(): limit max ploop size to 16T -- ploop_resize_image(): fail if umount failed -- print_output(): improve output -- ploop_mount(): fix/improve error message -- dumpe2fs(): don't hardcode path to dumpe2fs -- print_output(): use our own default PATH -- do_umount(): refactor and improve -- do_umount(): eliminate extra 'lsof' call on EBUSY -- do_umount(): don't call lsof again if not found -- print_output(): check return from pclose() -- print_output(): return exit code from command -- Fix some wrongly used exit codes -- Remove unused exit codes - Documentation: -- ploop(8): document check, balloon discard, info, list, copy commands -- ploop(8): describe exit codes -- ploop(8): better resize description -- ploop(8): fix ploop umount -d description -- ploop(8): fix ploop mount -d description -- ploop(8): improve convert description -- ploop(8): add missing OPTIONS section -- ploop(8): make IMAGE FORMATS a subheader -- ploop(8): other small fixes and improvements -- ploop usage: improve -- ploop usage: update ploop check synopsys -- ploop init: fix/improve usage -- ploop usage: fix mount/umount/resize - Build system: -- ploop.spec: require -lib of the same release -- ploop.spec: require lsof and findutils -- Makefile.inc: add -Wformat-security -- Makefile.inc: proper LIBDIR for Debian case -- Makefile.inc: add CPPFLAGS to CFLAGS -- Makefile.inc: prepend, not append, debug CFLAGS -- tools/Makefile: simplify SOURCES define -- setver.sh: introduce build id -- setver.sh: use getopt -- Remove stand-alone binaries: ploop-check, ploop-grow, ploop-merge, ploop-stat, ploop-copy -- Makefile: add Coverity generation logic- New functionality: -- libploop.so: implement SONAME and versioning -- Introduce ploop_get_devs() to get all mounted devices per dd.xml - Fixes: -- make_fs(): reserve max possible GDT block for online resize -- do_lock(): set FD_CLOEXEC explicitly on lock fd -- fix raw image creation (broken in ploop 1.8) -- return SYSEXIT_SYS on ploop_find_dev_by_uuid() failure -- ploop.spec: run ldconfig on install/uninstall - Improvements: -- Display mount data in error message on mount() failure -- dynload.h: pad the struct ploop_functions to 64 pointers -- gensym.sh: add code to check sizeof(struct ploop_function) -- etc/Makefile: ploop.conf should not be executable -- Makefile.inc: support Debian multiarch -- Makefile: add distclean target -- Makefile cleanups- New functionality: -- convert from/to v1/v2 ploop version format (ploop convert -v) -- ploop_mount_fs(): add option to run fsck -- ploop mount: add -F to run fsck for inner fs -- export ploop_is_large_disk_supported() -- add/export ploop_get_spec() -- ploop fsck: rename to ploop check - Fixes: -- resize_gpt_partition(): skip if there is no partition -- switch snapshot: read parameters from image we are to switch to -- ploop create: error out if DiskDescriptor.xml exists -- e2fsck(): properly check e2fsck binary exit code -- ploop grow: check size wrt format -- tools/Makefile: don't strip binaries on install -- ploop init: fix an error message - Improvements: -- create_image(): remove useless assignment -- number of log messages improved/fixed -- tools parse_size(): print error -- tools/ploop: allow T suffix for blockdev size -- ploop_grow_delta_offline(): use delta.version -- tune_fs(): drop absolute path to tune2fs - Documentation: -- ploop init usage: add -v VERSION -- ploop --help: rm -P from ploop mount syntax -- ploop(8): add -v for ploop init -- ploop(8): add ploop resize to SYNOPSYS -- ploop(8): add ploop convert -- ploop(8): add -F for ploop mount- Fixes: -- default image format is V1, unless specified explicitly -- tmpfiles.d file added for /var/lock/ploop (#2493) -- fixed creating strange directories under ./ (#2623)- New functionality: -- Large ploop image format support --- Now image size limit is 64 TB (was 2TB) --- Kernel >= 042stab078 is required -- Move ploop_grow* functions from tools to lib -- ploop grow: add DiskDescriptor.xml support -- ploop init, ploop_create_image(): add FS blocksize parameter - Improvements: -- make_fs(): create ext4fs with lazy_itable_init --- 3x smaller size and 3x faster creation time for 20GB image -- lib/ploop.h: "unexport" some internal functions -- Use /proc/self/mountinfo to get mount point by device -- More clear errors on parsing DiskDescriptor.xml -- print_output(): generalize print_lsof(), improve -- add_delta(): print more diags if EBUSY -- extend_delta_array(): print errors, return SYSEXIT_* -- run_prg(): print error if execvp() failed -- lib/balloon.c: print file name in an error message -- Introduce and use p_memalign(), fix errno handling -- Improvements and fixes to ploop_grow_*() to be used from library -- ploop_read_disk_descr(): set *di to NULL in case of error -- ploop_find_dev(): always assume ploop cookie is supported -- resize_fs(): try harder to find resize2fs binary -- Makefile.inc: ability to add CFLAGS - Fixes: -- lib/lock.c: create_file(): make sure dir exists (#2493, #2597) -- lib/fsutils.c: use ploop_execvp, drop absolute paths to binaries (#2595) -- ploop_log(): fix loglevel checking for file logging -- ploop_snapshot_switch_param: guids are const -- Recreate ploopXpY devices on ploop mount -- ploop_find_dev(): treat ENODEV as ENOENT on /sys reads -- use basename() to strip device from path -- ploop list: check for extra arguments -- ploop balloon: fix -f option processing -- Fixed lots of memory leaks, mostly on error paths -- open_delta(): simplify error handling -- Fixes for other issues big and small, reported by Coverity- New functionality: - * offline image shrink support - * tools: added snapshot-list functionality - * extend switch snapshot functionality: ploop_switch_snapshot_ex() - * ploop.spec: disable udev iosched config for ploop devices - * ploop list: added functionality to list mount points - Bug fixes: - * ploop_mount_fs(): use mount_data for first mount - * ploop_mount(): do not allow to use ploop on fs w/o extents - * ploop_{create,resize}_image(): fixed size checks and rounding - * ploop_create_image(): fix memory leak on error path - * ploop_get_info(): fix reported disk size after switching snapshot - * ploop_get_info(): fix when ploop device is not mounted - * ploop_{umount,resize}_image() and many others: do not return -1 - Improvements: - * much faster resize when using resize2fs with EXT4_IOC_RESIZE_FS support - * ploop discard: add cancellation support - * ploop_resize_image(): use real blocksize - * parse_xml(): deny processing DiskDescriptor.xml with several - * do not auto-generate dynload.h, instead check if it's uptodate - * create_image(): display error message for incorrect parameters case - * introduce/use SYSEXIT_DEV_NOT_MOUNTED and SYSEXIT_FSCK errors - * alloc_diskdescriptor(): log error if calloc() fails - * ploop.spec: require util-linux, e2fsprogs etc. - * ploop.spec: require libs of the proper arch- NOTE: this version requires vzkernel >= 2.6.32-042stab061.1 - New functionality: - * switch from old /dev/ploop/ symlink-based to new kernel cookie registration - * snapshots: switch to schema with constant top delta uuid - * use /proc/vz/ploop_minor based interface to get free minor - * if ploop is in maintenance state, try to complete it before doing snapshot/resize/merge/mount/umount/copy operation - * ploop mount: use in-kernel I/O module autodetection - * ploop balloon discard: new iterative compacting support - * ploop balloon discard: implement --stat - * ploop balloon discard: implement --automount - * ploop balloon discard: cancellation support - * ploop balloon: allow DiskDescriptor.xml argument - * ploop umount: implement -c component_name - * ploop list: implement - * /sbin/mount.ploop: do load ploop modules - Bug fixes: - * do not crash on empty DiskDescriptor.xml (libxml2 workaround) - * ploop convert: fix converting from expanded to raw - * ploop copy: fixed check for opened fd - * ploop copy: do not leak opened fds - * ploop create: fix gpt partition creation to be 4096 aligned - * ploop create, resize: round up size to be cluster aligned - * tools: few exit code fixes - * multiple usage, log and error message fixes - Improvements: - * ploop mount: check that mount point is a directory - * ploop umount: reduce retry count from 60 to 6 - * ploop umount: print lsof output in case of failed umount - * ploop create: for prealloc image, use ftruncate if fallocate not supported - * ploop create, resize: add check for correct block device size - * scripts: de-bash-ify - * assorted code refactoring, cleanups and nitpicks - Library API changes: - * add ploop_resolve_functions() to aid in dynamic library loading - * introduce optimized ploop_get_info_by_descr(), remove ploop_get_info() - * replace ploop_{alloc,read}_diskdescriptor() with ploop_read_disk_descr() - * remove ploop_getdevice()- ploop copy: fix data loss during migration (#2287) - ploop(8): fixed according to doc team review - ploop mount: tell about unsupported underlying fs - ploop-copy: improve usage - ploop-copy -s: added mode to copy to local file - tools/ploop.c: do not return -1 from main() - tools/ploop.c: fix/unify working with diskdescriptor- New functionality - ploop copy is working now - added pcopy's send_process() and receive_process() to lib - ploop mount: added -c option - ploop(8): added (still incomplete) - ploop balloon discard: add --to-free and --min-block - add Preallocated item to DiskDescriptor.xml - add add ploop_get_mnt_by_dev() to lib - Bug fixes - fixed offline snapshot creation - fixed race between register/unregister_ploop_dev() - create image: if fallocate is not supported, fail - ploop init, ploop mount: fix -b option value validation - ploop mount: fix usage, -d is optional - ploop info: fix usage, DiskDescriptor.xml is required - ploop.spec: make main package require -lib of the same version - fixed a few ioctl-related error messages - ploop_create_snapshot(): check for number of snapshots limit (127) - ploop.spec: do not own _libdir - fix SYSEXIT_PARAM value - tools/ploop.c: do not use ploop_err() - tools: fixed/improved usage for many commands - tools: do not forget to print newlines - make install: use /usr/lib64 LIBDIR for x86_64 - ploop_create_image(): free disk descriptor if fstype is NULL - create_balloon_file(): fix file name in error message - create_balloon_file(): umount and remove temp mnt point - create_balloon_file(): fix error message and return code - parse_xml(): add Blocksize validation - Improvements and cleanups - ploop lib: add visibility=hidden for internal functions - tools: use parse_size() and is_xml_name() where possible - remove merge_top_only param of get_delta_info() - ploop balloon: make it accept either -m or -d or both - ploop convert: change -t to -f - tools: unify parsing -f option - various code and headers cleanups - setver.sh: add -v, -b, -i- Added ploop_get_dev() function - Added ploop_set_component_name() function - Fix: do not clear in-use flag in ploop_fsck() - ploop-fsck: add -d flag to forcefully drop "in use" image flag - Fixed handling blocksize for raw images - Added user_xattr,acl to default mount options - ploop_mount(): added ability to pass MS_NOATIME flag - ploop-balloon: add discard command to compact ploop image - ploop_get_info(): return old info in case statfs() failed - expanded2preallocated(): if fallocate not supported, use ftruncate - ploop_resize_image(): Check is it possible to fallocate before inflating balloon file - Fixed merging all snapshots - Some fixes in ploop tool usage - Some log message fixes - Add function, source file and line number to error messages if DEBUG is set - Build system fixes/improvements- support for variable block size - default block size changed from 256K to 1M - ploop_set_log_file(): make NULL a valid argument - logger: introduce, use and expose PLOOP_LOG_NOCONSOLE - ploop_getdevice(): expose - ploop_store_diskdescriptor(): fix for a case when image is in root dir - Fixed expanded to preallocated conversion - Remove some unused functions and non-existent function prototypes - Introduce and use SYSEXIT_MKNOD error code - Changed image -> device mapping schema - Use strcasecmp for guid comparison - Made ploop_merge_param.guid field const - tools/ploop: remove -b option - tools/ploop: remove unused and untested replace & add commands - Log/error message fixes, improvements, and unification - Makefiles: fixes, improvements- initial versionrhel5-32-build 142448418799999))'')@1.12.2-29.g28dc464mount.ploopumount.ploopploopploop-balloonploop.8.gz/sbin//usr/sbin//usr/share/man/man8/-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tablescpiogzip9i386i386-redhat-linux-gnuBourne shell script text executableELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), strippeddirectory  RRRRRRRRRRR R RRRRRRRR RD_dC(Px{system_u:object_r:sbin_t:s0system_u:object_r:sbin_t:s0system_u:object_r:sbin_t:s0system_u:object_r:sbin_t:s0system_u:object_r:man_t:s0?WmS8XZpC L)/(x%WroIZ\SjYnׯa߫?^nm5}WDȩi,e'޲ .xA|asm ,B*l+u2^a$%u؏cPxiP\s5a{ݓNI=;^tA(ͤ&1蕙|c^Nsz;qvpr|+8xbMolH26λC͘jr z6m\;!%Y-VH0^|R4fOgo:Ʀ%fPj{h .|h҇/M*>H`ogWE^=xތ܊ 5~@QCvoNLiTsd^l,AFAҙa)/}#}3bn3}X* %zD3A|~^_[_" 9Ɗ}؃Fg 1{BV g7WhYVD9evb cdT#XkOWڶ (E 7 d".+ 5 s1rwȢ%)+9e `6PGvAO6&8t/{&] +ИjUZQ&a'n%ߦReֈjMW)sm#]jy"(TE3X}UҔ+0_H`--Ս഻q͆%%qRC H_M- !xpl?nnxjCK6&[P 7mGW$eTM 3>})myM]n=-9_Mb*fnEvK/ 3!T,Qbp8aꄹ=YT0xbX}CSM=xSusЕP[ޟˤggs,B0Ibf~HZ:2W eр"],4/:g^/nN]Bi:ildsk?_oӧgO@DQOw/mb?ћxawZU7{:GSZڞ^O(6gW3ۙٻm3`@$6B0"?HG"X$Z h?M{; pL_afi WdŽxُOy3{;uMt>~jgЕ*XaV-vtl{:ŧ#fx$_֗g쾍SZnh3tc^nA3ǩ[{u~o܎їdk5CLySjڎIoxꧺ|Uwٟlͯ}yTN@7󁍟$OF4=d:9aeb-1A+2@͊AW_AEG H6rYS1<j!?/O9`E-h loE9e*ŻOQ>z@haTtga_QvޕG1۶Zgh>h$,JcWhk]2&.3-dKdlPT "0hq.>jy'Ժ]]{n_:MOC f4~rq.⅔\^/e4KuĿ#9[]˿OS#^ոm_jָBo1Pg;iE]`>6M]?$6&E~GVߠʿ֋;;L'i9Ub$g?;x(_VW O<ТI뢽oS#C\淆_}JP{[)Nzg'io0S)򿤿2բq.a %az~.'R⍴iAx;lx=sH_G⃴a>e|ɿg=ߞ6oύ?NN#2i69_g)"_~l?Uv1Oܩ?fmq+fޱeM#WED~hQah/f~_z=kMVqR3MZ%΄Ӭן6iuOŻ=e_A s1>&O 3Kh' 2>K ?yx*|r礊?U (%7Ug ǴW׀<.ը^K*!?5,oun{J C'vW^EVRW )ߓadBwʸгaɏ8k%VlNہt+VGV(C\(: Yvr2WD*Xǭpm'(:t%0#B\.s/Fi?c~`Jw\vaXs)s`7r}\=uQ?mTa!^E'Ԙ]&.fH: N[iMˡ~uk"tTkzA.T8\$I=c\o4\,O&"UʉMWCI`kob!E~4j4*RS8K|Bi Em=r؛yד5u[nޱc(Rװ~vw%Q<Y?LHu5O_PKÝ(#VB0n/H! ,O2V7Zr]SZW[^(~[C2k *A+(p};R(yEu(nNPLm)E˶0Ġ5_B$Z*~-_)P`2|w#aML7Ua UYITtOh\eo'3Q 4J6VH)U0jTmaҖ/(YE Y̢.g YtQwYp"A]tAwKR ;|Λ{phՙ%W\8_`VϨ 烏F®]n_aҜ~C-\k\}+_j|0oUFbtlktxCw_=,)]gwݭQ;kV gmĶ6lxJ=;r%>.=?K7}vfZͿ.љ{eK{XWNG}(Z;_*^zkJ#*_5H廼v\WԪ: eA+}PjPvDAIjO5uNnP< U{TCqR|9b po&aqT6WUt`=bV j&Tsx jZPMOp$<3<<r<@5%+XoPzOooE·#c;kPC ՜Ó-'PETs<2|_j~f}+PH+pBjGQ'xF*3N))PV?Bx!G?m/mO6֜6-%;=t,ܛOǓA u0]j0% 5˿0f@vԆbޝϣ"jA=Aca{#{?o=GKf翃 uz9eTQڔAh$e^tFm(^^5_M'J)TO((oDaWjCx ԥW'׽ܘt)fJ;b-x, <+?qKotlE_؝#소&j}FvjD`$AZPy҈XD=dd^K%Ggz}IޘHJ 4;oq8sפpf\,31})ˇKFcJ׆dcf[N}r3Ɲ bOK+4R4)v( lY ~/Kr%;ߟyM]̚[3+o"K߫)}L1A$}m㚥 :`]u'ak}w.b(u_JύAڞQ?S!p\YP1+oP O orPb홑IJ6R8\=.ޭfO cMP;ܓ)9cSHڧiy40\s`]+K RڇW[!G?5Sޫkk-ԃQR8@#[wizTiȐRwd\Mdg}8 J]`5)ɳR5GyU^MX)S[eLxvĻk0cqa';8ÆeTwRPǚyKsnoK/"V<;"?߮QE'!ѕ|rq7G})m?:sOWV[r d>A[/b QGʣJ4.45w)w65^p~g[ rj-ʘ1SܗӾ7F3{gTk~ӏ١}'oqa9 0E>i}M^11_>ݨ&RMf%jPYM1ցupXSE0;i orKxIsl8kjkma+)jٔڣyu) D7cdWr^{eE"ߊB 0"߶8Ns%Cc0>lEsv>:2ε/Ř;1e+1_|p QD8z ,!1_9}sv c!K~Z{p XW..Md꛼ENtmZ-a+̽bgWgl!)[!2_[ ¹gjUC@%"$huxhvC0auc8ZB81 DH9)wDO;'YTa/qvj 'H??)VtY}1ƓS5\ޠ{qQZPOǮXGTYyy ҋS @D*-Ј9HDHNZZӽ%[Aᝠ)l^Chcc*`\ 4Mp0@wH55$wւH  " P OXL"0@-̥p{Wq/({"ض %v1pLȅd9@ķHg_!ؼp?ʒ4pD>@/0_Nڄ_/'dܣ2!uܣpyy/, vT;@Bah pVD}D[}LUe^. <~P[S,Qv(b4HVr~0uAtWšsZӕfZ)7PB-&A<\R½מyp.?ܗ~<{s/@Q*&P]V٪"SzKIM*-yVKHԋ \JJ]l@{/vPr,/U" ߵicc< g$X0i*Gg3S6S?S!7..;ټv(2q<&V gf`5KﵡO1E@w͠ĀU8lp\a Pq\շb~#~TM*3lF|rIٻ\\vW0巍ᴵQ MRljmy9x( GzY,=-cC+-=1>+q(ee:9F~X/iZNs*9~[(,A"4(1-t0Ku_:fo5mm ,H5^Cĵ(`M[`p9vDA+?iXN[nk9@} 6?nݡ}Y \h?Bz{GTEwGA:ᢻV}KvH;ka2@'Yz:D-wBL'K.0{D롹Jg(kpRMᆿZyu |lH0~"Z^]섺".>@9ٳ$%[>V0nSXq-U$u?S#u;S)]!GϺ-LR~FSHMʓp&>&3zp?<dMucb:I) O#'8j{L8$rL &F>.GN,jGTSmq(A@3C uRwT${#Cŷeԑ܅Xcp[*)8Q9< 7z-4j+«Bq]85KuUIqy/Ͳp! Xu#fs}+]>?L]9@Jf*ר 3.9/Lͦ0I8bP#K&8.iwݞ]܅$ F'tҦNz{6IJ9¦f{y@ҘeyhYNGRZ+h{'35^̶a B7R7\DB՟/] /vM7=aα! @<3clG$Jٙ'ſȇN()Tf&uSV|5 X@D$.)k.O ȽK! %P|glV 3ϮA=Q+즈2."y&f0oR/uTRRkRY-} M ƠʞmjPy ,2m?!E69lIzm x\W+k-eVi$5`$S5o8M$b!zdO1m]uJLkWO4;< ޻qY-gٙ-{vc&.\r2wMWƬ1pܼUN/tQ w*V DgTT3`p |HN<:MJܥݒ8{uzAS:qeӆȒ"J|n EKqZ | &.*`R(R6:1}qbKf 8Qy 㘭IL:EqL|N3obށcBEy5P!6:2nQ~_E00z S/Շ_pJ_ ~ڨNT$%BvxE?SMQ7̿/϶0M'<i"(\*=$LWwX!3['_gھ >OA^؅Yy3Δ >UTD - @Yoڧ\H㓻@d4dl;Og_;|  |%g__> b_yD+#7ΗJ@8ae,Qc:@J x[E} +kT@bbaL9hԸdX_uP] @Po]_.&0} M9旅`160=O5? ^:iFZ9F`9/A,ρ6 IVmݡ<2Mv_^[n? HӀhkqa}b l[MhAPlxыkT-Ԃ}ݖ23Qoڞ(a;DM^@mqzz2]26~=Y&Ң|zԸ0"lU{[tܗڭ ) +pXcFe3')eٖ=D(@䂉 {OuDQ2/]XXb5E|3B ]Q%<(D9'JFWXAqFD].\]qFEW`1qݻ ;t@wx[Qs>j7kXS*СZ2e͔kφ#Lo[gS fk~-ɻv)oc@;u(ߙJs=tN8ޑbG֘^φ>#iAEbQ=@I’iz~XGI5"uIaAJ)IxĘoXO-I_Dm Adml[u!x@e(EK )qCQcuRDM,I[ plFu~n5)nDG ZVbbmbM*cMv>{~vXm|{\wNiLP6qT*2Ӽ_ܧV' -.˙P vNzO[L v2hKw񕈏I2BW_CcG^lsR}X{ab KDޒCj5?G7#7~i'qK}~G|y&Fq.sĕ|=w"ٖu5Ha04?AFpk⧨&ew:AIsur 2y)63_R wĈmaS6«\-Z$;-cd[Azl32`&_i_ W j6S#2TI<_'?D}4 l G_ƸL݇0T& &?3GmH6v-elG`{qm1!1)$}uReYݝ3 w.j/1^hM܊~]-1Lf9۳z7ZI2hwŔ}Cb:Q=U v񷈻 o\Who_du 84vłA4r nAEg-~1oɁ)I9B=fsY”_ }$HP^괧|v| '^43?d~ 4ʃG6 lO}w<?6ۻ R "N ~JeCݙOpYw7, %do4.%ӆJ뵡wlZ7f?I{m{#9_ qvȳz>TiKyd|F nKz FNL#Uxy̻ c;(7o?fѮ JJށ0+zNbCAސO.ŶuX: )i8OV #&~y.Ng7i*@~$y@1(`(q:3`K Ӊ1|:?>>U1۪3KHGjK Gd~L*v#<>i>͇ؿ8FZΏS.VmM'GKN:rqN]'NQ+\DVDyؕlsrUBQh+u6+-]N%W8aw4`H E|<*WR vFo|+Ѝ?UJY#ZFeJ_Y`EѲvYvcLs|VK@gW0Ag3 ;fR5@!%%Y¡^pV8[* 9L,dJU.RFW}RQ*pbzK5nWjq"* 3ȼx>U#ȋ,ZR"mt0npFRtjd /N4>sF#e]䌳 'UdUrJɖ(ĐBRfFUdRGzRGm&(pRՈnEE͖M շ=zk feD8׊ v Y K0!ɒ@ưM4`k:-KdWn G:nq/2k,MQڽl&j J0ҽV]mbsmc m5x',N%]Xz20bb Ժ2,\H2kTݳKux 5x%t\H-*hQusZ:Ēu-pʼN<[x6t:lebLMa"=ɍ=F /L.8'6w}CڮY"Gϖ /Q1`9-ﲬE\uo= D5mڼѓƛUυғބ_:BY@Ҕ5/1p~N 7 La L4}ĬLf'XX[3gO#ϭfFU<rjBHgD# P$iP-X Rw:4 9a"&LLsos?\3sWIzl0Yд`_jxs3Uq.ISVFu2Xc՗C,!}XΧX^6C4֎%MTKtKuD4\t4ХHI t` 뢘F,"hjܡV m7:G/+@`uo+o:%Y&S'TE^XoŠ!R6eoF)WтŒ(\F Ta/m҂a;3b[\|,lblA/0Nk)‚JM45e0%Hd3eYsu < kȜ-iN:i[_#D.{*rO0U*,՝^W:Ӷ1NLQ2@e\Ve oj X;\Xbzl0 }~c${7Ӽ os8DֳI5"%G"5ҍ"T>+ 8M b,hE:l -@bGTPm G0bGDG tlЙ ;i +e^*Ghqfv޲3drgdKRߌ!!ʐ/A̲[ec D@]յu)"Fhסv `8]ml}ؘ Z­Q]w-9ew3 5i BIih)M-jpD)EȍԔq-Ufw;K ?:3s}3sgݻ3{[gQ](\ OWn>A;ԋ\{O_|koΖ׽K=9gDi5$f&aA㫘,bnWNj*DW׭mYox]7#pk֯}A tS@CUݞN0M#O.ZCW>pV;1PRSt,M\ˉѽy) t(㱫(ge?ޤD$VR 퉥5֐OiNL#'٨)nIwnܸ][.>%nWDUM̯#+tC hLҐB9,*H1;^1cףiy5CʭtEuS&e71 4*dMIg-]dG(fANZchVs4d ]J. iXxHS @ʒ:^*|6Qp4Mns'%UmqitCP:\ 4+8#v-*"5LzrAV8Xa|Y6`a+Ğ5FǍyy^SO+.rG<*#o(vN8e/_E6b;&dN(́E2*0z.^QDoѷ%Xo;5FƨD2 mlO#9Q5sˠA4"‚]15^^2 $AϠ78h6؍!5kĀjެae@͸tʲFf5J. !?B:_[؉wk]baO%I}z[(03@I5JD=W0bi e1!Uƚ=ߎXI\nͤ5Pj L;=t HLN bWAH}^ŢaE1A=Ǩ31l1GgW(;NE%8# F0d_;}+gd ck}1U]ʴH^F?nk6uVYU[:԰DVdq!CgC0Dq ߕ)5ޛ ԰䚌x.^Q6dQ4A޶tsȔ]OcqzڶtTڟ@bY&8%3eU0Fβʰ[ʅSh>}9}GfR`[8`AQ6ꆧѬǏʔ$p d<nR$6WuOp%z'tw0-i+=hޙlAkC佶MY_JFl nwQ`zzmoOWwρkk:h_>> Nl{ >߶#!pm[}\{ضO?bg6AqاL\˂ViV_kb?`.i]#9}yCf=Q%9BA!_9긇}ꛇ},ߊ7y6vȏzȓ!?@' ț=' !? x^rYȩ]>ZuOG:WаcwdI Cet:@ͅzDIYE;,ڦ{G]|B1w+Gk 33.m?i!6s7g a=  mXLV b A6hoY`0 $fC)s6VVHƒ'W2IJ7kn/ $a+DU'W6pV.UKYܾk-NNە]u0L[ҿ V2ji[|Klqji꟣g^e~_ԥ VVq51<'qmi/չ5G=^;\&m^]z}0w+J{ХY:bT7B1 ᅮn::V"XCV&кM4 v$սbAR?U0b;A1Fp> t܆Ő Hy@1%e*h05;045I5O57Mq!ʑ%mpq="<̂.t C##gL@׃x2 1C2 Rə411 AbahƂn^ cW#ht]]HTAK3lR0  Eʲ"tw\mPO X a$dYPdEa=T|w|~9s̝stWģueg}c8hTR;ʫit~vt}Q~_MߵMyFC}ՏeϬ[NLcL47^`2.|/~9?A'lw@.nσ?<c/4o~ m6kN%crdз9N MuKw5-#^ zgϤ0N_-:~"ͨ|L ~"HT>MZ/|Y?xۊ61M[B8F 8㶸{~"; ? q }7d_7%`Sq~+ǭC5^cS óG!0܆0|j5ըd zBREmeCRs n5pKct=b.UryH:htl/_ǒhV3Z'yrb\1W,wS@KV\R/Y̰8Z~1"-WXCP8e,?A4/ yEO!7DFW]LU޳ɮqD3]ՍƦkhbpֽ +(J,ռBW\j*6 4Sy ԍ9-A'xps} ,~~9|_))(ۋUV/S'ԕKds_e Rg]e%%3qF5Əm xk^t[VosR$Pri\販_j`{|#-?!>nWqN,F0WQk0xHF8X:Fy ( JuOB7ZJ|Q Fa9 ~n̲һjCkqQKj[JPh$#u,lIBh^#XH4d04iE3pQ [Oƚ LNPb?%ʵ%?J?Gka|5UP..Z6nn =}ii9ᑛ?\wWZ4uȓxb,haz qd\3|qdTX5bC>ncOkxW&,ѵe 'mXSh,lfxkYX}|jJdB^3D4q`?xǕX##m6*&-L~+!?9;/Fommsa۩#oԸeDt6:^Gnr3USӒtɲѮ`wcNhV3#n=EN@%0VYQ̑usҩf GLS<<wS3~j'U%L j1"U7m7#DͱⓌlpf;4[N* x ^]Ȅӿ,d:;{i!kɐMB|rX Lb3f}ƢG3;'r$(cI%UeIsv,beƤmm9e gEa;S8em= ]6۝)tK75 %2?IX_yk:kU)# Lagp.)Ĩ?r ڧzPOD^>k'ƉH5>cy-/SO (xrvu@j nvE':#`DeNQ2ʗ')oD's%DA 42 μB֥'8n7 -NUPBˋ)J;3rAڀ2#45+NBcz \:τC9`{4[ga:'Mt$ʸE.GVM\R爐ۑKˠ\ܕ$F*J̻Qֻgc<~~4^-N:\Y+Cmg}˕٢fmႴx37-1mնXvΏr:{'w%pȄݫꖮs95(*2f,(=kRzŏ _ /.zt:|ގo ‡ ‰r]/ Di)upTDx 9 z ::{/5Nn\( D߫35|~8r7Y/+_|K4{>Gs+)17}!`%`% *j fG~lp9yi6H up]d  Dj F t,B(@M@@#@3@\!!?v Yv[x-=8ez3l3-Y3P3/ϙ~oq 38Sψq|9r9Sد9}9+U+sﱃ2-ϙB *9S8̙B֤ \n!g:a,rih99Y~O~eYWLaA~et _3m+sp6} g Usp;Ê.n31oVLVLqXKgj[3F嬕~3~ǙYhĸU=BG$q[_^@3&brIc'jHa zf>y;}*gb788! !`+:'~t0&W-u8/[7A&{Ƥ=(gZZwL9QH ufc;Wvnom4ۚd /yPjS vWݫ]oY-7f]uG+:/&MLM=,nUnpd$hݐ.bvօgC){I?FjƻɬCG ,*rOU;hq2>ޘhJ OraZ$s<}1Jt;;NYo7^(|~#2y:sF#^GCgں/Qfg3|#2qFCEjo+ުmӛD 7#?V;찝x)XXPex"^ vFߗ=k:4$)<0vc5›[~c>7!I9(5X}^3ʀii-EmUÜ=_ɩ;~Hҏ߲SOƗ:?ƳNM[&FS Gh7s7Yvni&De^nrUOVjx:Sr$l:("yI!=HNT??eSO"!Yrۧ$VJJaii?Ǣ2شog6$t\׿[)գ xd*sͷįՋ+ ƈOTDKưm_,%{ȫypEJ3" %l3W/Z&zO5T|$8I [-5ZFYwM%n[pcMLS٬6Fpm&A쑻![NA֒4nO J#u7* > /13=$3; /ߝx֌Õ:gG$#@ڶSƦ@ˏT2ŴRqSƅ¶3\o+V7Y$sbc^ق֏D c*Fj7].đ 66JB .nQ|'}]`0+CF_~i4@yxzWfRǺ d?[1qim}qTD~n}IS/&v;9zXrSk.CH0Z;.k++XϮA 1Pyn EyW bSR9Ǽ7XqmI{ٯyD)g‘ ,Іi;,ϳbrr,.&[(5ftGYDY'2?@t)K  JPB?&bFSձQ!L)ab&>naՅEԕD1j0l>PXS%=fmpgzz8mS2 j5-2 U /l'ޏ[8mIKSz\ᬼʱ#UPuS Tɧ]}ElLTT[%ae&oFD j>nT:؄$j*'"c6r_|!]ibW%;@j ((TҴ$V [cdx!b¼6<8}ƸmR|̃8+v)>f3r'gV#k$+\|NVv"!,;gG*"i nnZ VMjږ݁>ҵ)؞}v F>rݱ<3=\+T.Q, D}%aDyZB#@(k#yp21Gd0a l'C:5f0MIBfg#XWC PÜ86kg'3%#.!z;9c vĵ΃8=Un"0wvȳ(3KeuEu\"Z$o!:W&BO6Jwo'66g!袦e@:4IPU#UagԴ%^jh)@va[wfƫͮL&85B#ҭB*&D$CSȴt4P ^d1A| Ͽ$ ?'F^L0P5hr*hVswX>V8툩:GKb* Z bbZGbh\JJG҈9>h5`ɂ28VƔq+h'6?CcG;f#c>%Է62Ɓ.hd?MĜ4q=k|sޘ0RvzƔC:l[ݦ1dtV5ixnOK֣kq[1s,&XeGyӪ&YFla ۝t`^]FR!M>y7>+A^$mp}#ABW_U] l:Ctz] 98h" DqTPe3, 7tec^D[dOOެGWl+r\r~5'[txVT\1YI#)(]H6USqN 9H\dBKj)<,(C'V݋cj24v|5ҷkGZ`qSUXCi8gE*nYe=.Rc!rdRhKM"i1:IRc".JEt^b4+$Ng>iX],c.$hB>&WO@Fє7dH`pݫ 3 &] c p!k޸>$ΥiM&uSzڗ<lasWP  H>M2ZZ80ϻ>vlJ<"?w1n2*Z"i5[.2j("J!rs ASFLHj#⋡þ*eu٫d?=&.uyx֋(S) ߯hjd(?z) MxĆ^ U#A] )}G\_x(%L̩I1WCaT#'72jP2󰛅ŋz8†־{R ɥLv41Am=^b:9&|լ$TfAtϋ,md]4lҚLWo?cq%6m fsc]7)xӭq56.шMH_~UpBޥ9xYc8Kfuۛ+qd P\#?vl .^ȟ(HC^'h6tk ʗSk%ޕ(sVɟkFDLcvl1kzWԆTOptuU{nܻLkMՐ^pRڑcȠ;/hAnI"WkG}oi-2˩T> ի;,R5UW51Zt[*Vp"86IkƻQ-4A5}a4U" qGG,񫐡꥞m܍)H~f=G#? CI,kQ=-.?2`sSlkj_VVA2i;3S׵k2؀M9P}|BHt,n/- WެN t̎mX$m1#R4fT+} :ͿiώyN'(Ls;{RRA[[ HQg1{jX 'C$Qd[-qi $`o0}hI/ L\'Gٛ6,q &L/xBbCȷ"o>sLb,O6r h;'Nt,=g2f#A5 J {͘*ּ_Р"9bįgޜ[(,/5U*p`uRz{{Hj֍3:2cڛ7a.GGO^|ۅiD]6A{-ٰ`!=6n%7wp{|m+һ8zhvj)b3lU=(zY⿻[qH|혽ǞgxƯMv>ʧ [('gi0hƥ%߅xcZ\o) I<׉AsJvꍒU77& !?W3y nEl٠jUk%;Wc[cƴBU q%67Ӽ=43BUj}!Z]=j~rE!R^jH 2Wx?oGɾf|V>TY7wq} $ |#"l8FP&dNb CL@$sw59b#;"dkK?H1|!zJ^Boy5fG:̭?tVaL݀'msýI ѭ" tS;QgS9),p'T? D[g' Թ|-A;Z a!XUjNgؠa9`VP٠%|Ԫ@sǥ2KL;2s:&U PX{&pO*~=? zo fʾs>ZRLn0'bMrO [sh>T=7ZhcZ~VFHˉXnb?!/ {}H^+{#!#(ee@cpW,K7O\8SJNT5븇AgI?u܋akzPHA*Mqc:7;u:Y@*Mȑؔ-͓-,%^Y-tKr73RE-:#㬪SRώX lEnTWL-k/>?5wX>5~HDT4