ploop-1.12.2-29.g28dc464> H HtxHFT  ԶvsdH`+Z[Hf`[t*Eo3s2903b49f3a6a30aa0cf09e2cff7e9d8a10a37333tMؤE 8RM?R=d  'lp       P  (89:SFO_GO|HOIOXOYO\O]O^PbP7dPePfPkPlPtPuPvQwQxQyQzR({R8Cploop1.12.229.g28dc464ploop toolsThis package contains tools to work with ploop devices and images.TYrhel5-64-build(GNU GPLApplications/Systemlinuxx86_64A 큤TXTXTYTYTX5a5021a4760b56e87702ba39f7f18d7104259c52f2d97349c2d66a096585d2cb9ecf080154eaef010cfd2fb77f32f1902ef2c19eaa0fe61e511193cd00de7feab0c3002515a6c8633b43600dcb09b09frootrootrootrootrootrootrootrootrootrootploop-1.12.2-29.g28dc464.src.rpmploop@@@@@@@@@JJ@/bin/shlibc.so.6()(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)libploop.so.1()(64bit)libpthread.so.0()(64bit)libpthread.so.0(GLIBC_2.2.5)(64bit)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-64-build 1424484185AAAAAA1.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 -m64 -mtune=genericcpiogzip9x86_64x86_64-redhat-linux-gnuBourne shell script text executableELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), strippeddirectory  RRRRRRRRRRR RRRRRRRR ` Q2!4?WS; 8`ʈ/k^pɵ6q>1m6}?npp/p;|>ݣ/>\ivj0TD)ouezz^ /茏 |lL?dROtr}TՄS,Ixodbu:|ӄ$O5Ws5;v{4e둊\4*?'gۻ<]E{~|(5<|[<Ҝ }1L9i]} 6ޟ_8!ymVX1^|R5^Xއ݋ccӫ÷{q|悥ym߼Z< _ rj|4lg88 \ VGhg'O|s*cJ>ڞK%&m dc)J&8sxip랑J_$;'j`1,4כW͍͉?(`cx~LJgЊ%fX}[Ϟ< a%5k`ASj0v*F%ym@YCGL0l3% ,S-҂t쎤@N^Tˆ )b\QP4`[FL躏HR `GSpZn,8X9"1%a*)Yu:S9bkUWJȞ)9J((eb8\/߽ƪYӭ+iM X* 1 B 6d+A2d/h XOiLlU$6 }%vY^XK؈C\,0\́(D,߱kz8p9~0wx3lXLʊF6IT&67#nbL lH+`k@(K&UnFhT E%2F?FэFcʓ{yXexnB{uQ,˸85k9P ֲJYNlDY2KY"H9WN{)55OТ9 7$sIg!jq O1b}@l#/0`r5tyvtMOqN ߙ0C&^SZ?AyٗQ$ݔbÒkHSlVPV̭)``&JVi1NQVPHF̍MeaCU8I< k0A&X HBĶ ^8 ÑTR+f̨4T3ሮ1MrMwߦD?ZL酶^-CPs ژE7Uu3]4 mA5K4!KK#D!$zkхG~ˀ\7 ֠ndzPB*6T^$N `b[s0J^'L0'V6f LXhNJߙn!?sJwsL "#i 'ŨWrL|PEE iUزulVQw@6F8I6^X}3f~ffYx3>}3?!z+O?޽1@oŇ"ԯPhC"wa  94 'JX~`ŃTy:􄪁4?!mP=XSXY *K!6r; WmLU--pqݔdks{X70N&u!NAG?&9%j?_l&n?z$}s=޶᤺˕NZ^v$zZ3G.Kݵܿn5| _QKk;k6?lrCmkZSS{QzԏΌE[~"s]dvϲ 9na4|l jw |٨s^fs*1:i Z$n&5%bbM=LAƜqz>q,E@M:Έq7 )$6Eg90?ЩDA-?ODPSHg!m,; EE z <6ԮbWRT_ʭ y>mv[iu?M!t)m&Q ]­>n:urí[#ܞB~nn׿z`Ԁ[GnX]zGɝss >Z~ki%a3GB3ޛ ۯn:;sn3JN=Qj˙|3;N}:lyb]r *|7yDjVOws <x \eTy' D z$f/>Kid^5IIZI@&ɳxa 8H f=<_/o y$uۏGz$S{&ĭ6ڀKژb[Iܣh\Dݟ_ )~F?~Kyu GryԹ xzB3v!Ẇdao ď<$-Џ?Mɾ@\#᳁Oi`3Ǐ~"L}D<:%~e'~\z ~? 72O?C?ѯ;;/;2~Hd u/3?/>e, Hʕߊ3DU> >hI)d]uV,C}f}X~PϢz\+ !Ow~ϥ]Z/Ϗ Msj N[V)ĝ3K 37?>">M9lmT/H]eY_PqwyW]Qa_@7g,/ LZ?mZWA)~RcFLܙςl{y;瞻7VzZ=}?j̟ϏO;wܺj{*e՝Ak6ksXs3M#߱珼ߋcrU/ф/|`G -4W'6 BM@w3:X.x6n17Qܒg+x40l$8î2^1Y9wd}! ƲVfNݾX:Б4'Rj:U#{|+lΌi=v # 3K&%otī 3T;E9s,g'4˛S/P.xq/9TXJȋzv$F\PΖhs-OwKE9xgB![}J,\J (agciY[V3D9a )[ant:G i/ l&m|d🕲nXI;Ҷ^3au8rRB]7nE[Iz!srqJSAvQz񾼓RHQAZv߳+X<&bpkĽ׫w$wDv5&ϙ`2kƋ% R\:|A$vrܒ͟Յ6k/ᓹB&]\Җa/7@tӵzJ:S7 -\ձt>}O3vvf &OA4b~6># 'C%~"#jyD~"H%x^Mij|3R 'Spg"a})z ¿^Kz>"zQyrvE׹}+mWt=!3EIs!z}'~E$蹆9>YDO}9W~W*UYCEsըW빪5EF_h~i~7h>S_5EI_5E/-jަ/z5E/\i~ߦ/o}4EC_;5E'ިK4E_/2їkB_4E_/zT_;5E[_Uߣ/ߧ/jhޥ/Zi^_5E@?/7jgNN`h}}ґqs,Os-Gwcb+U2.U0&AA0$/ [`t'cQD\ckQYL ƖJc+WF[J |_;bTx) H< ~<*x:O~B?YuO 7?I 7? <ɝ[? mOn?y&x6?y*x.'?yi[;r;ʎcK.+5 +hQB~q{}bӢ{5[ޏ-vZݾ ArVc{qυl,b3/AoIq'ʯ%[/!I| kx- !0 -#a}tٺMjiɲ|j w~?={#d`LrVw~ku+2%K.a\$Z|Zb !>%3#~"pG 5F]XM:O+%t*U]^7@x7)_c<|j jw" { ~ABV|y6+t'-{Em5WjF(!^DO6m"NI]FnCΟ|z툕cQ4UE5 S{ E<͓!?ѳ?r;"JA]n'7ܛ(&o֔GMzDiĔ1δ諊 |6'1 $J|ҺxF%2x7!-Sh*ؔG,} ˎS ډ St!? ϫ?j䏻: BUZK=#SzvVgK #eU*V2-1~"FN3},Q"&ik3"u3t=]iuL*6cO^rwhRnlr|4J0îvE.#W4xIOG鑿`îo=zHӄ zY[O}B~ z`Cr?]ˏ㪚F~=,7Qy{?7٪HYUథx*yu_vpز~?D6VFn3v&&v$t{ 3p#j 8G=I>Z[WD(l[lu `E}ZZ0[f8;_%xc'ou؋69qö%>RAT=s80v'hLGG4brU| \" OGMv8ÆLEu4J3 1fe5; N{ʃ9Y7,.8/$$y!]^}Y,&O=ϾM&? b&7)ƦsZ;8{b$Lհ,:k aGo#?+#>fwt!uP[o| tn @;8|\AEaKc!u)ө=Wr``睊n=ixTUU b}F}hXH*+@ K,t B*E0ڈ32v-IU ҨD=" !HsνU% 3cԼ{=sVA#Fȥ0}Z ;z")U4/*W2@~@\CW2wdpOp5iXFsϵB R43v@lmJ[$ 5۩4f 3MPaL{%×oU$9ӂgb, `IEa#{"mwO3w2Es0Ax; ZU?K֞<4ahn"APp3k@;/xfW9[ D Kt8Q ,y #ALw g!ta/X>Pj3^Mf!L==XlE08D+5 򠇁='cdV ,/}QsI]Y~z\d()^pLcRU> Ы,JE=$՞Tm ˨g OK]Ah Z#D'";{u‹kK|k\u&rO5ch1O.`6Үw<t_aV<A 7 3(%n\&nTo<ȟ୎F,PxLR`t kb[ZUW `5YhO~B' "X$!I[ >tPaaVAWEQDkPvo[:Ld7(=@mmM>k҅MjeQS`Y㕧d"WIQ+I}|C,߯$$gXGFq=UhB+cmT` !)$V(b מ#t~Od[RdkJ ѭ ۺ&!&"I|.ySN$xy*@װ.nxv#hȩiN{kP85P3 9S+}e8Əh ko۫:-Gs9o@O,8xm'#X[`7şPƬEFZȪLFm "#EHa|@{κu~fFOSp_9a ;oɚ7ASџMP&c{ k_+DžF}ǝ@79x"Aߡ%x7АIrL} Qe+*^HG:UCM]R]!FC y0lb\sfc̮pgw4k΅gq.<t.,^?A-: GueAЕ;CMeKQq04IEy ;$%~- c;,:umF]Y _Ժ%1}(7ϯYPԮA 8ۆ'JyLl3N7-$lOVjit 7/PDnŰšWG$&{h33L>ˤv crc{bQx\Gk= y@_cQ,bԝL=?'2nk,FuW.v_w3;L? бZY%x QR-cL#ak(}Od~"!9 [&FΗ)[e[ icI&iU mѐ~*I?PKxyu Of"HѺ{eURZގ "G~6Cط0nE>rQT0.- C~S4˸5}OI9 s[NDYnX՞Z:wߤwXMu_E]K4tQc`3; 1UL\% qP(SR(EY)L~- Vw+1ބ6vu5ۻ?' ,)-KHJ* w/MTRV(S(F)}w;t~I{( P-CQw{{XL8̍FYɭq6CџS>` E+zesc"u45Z.xMish>צ­{Hh*]Dۋ2 )R"徨t91 !{^B wg*/P, aQOuP!DI( !Q^41T:N9`b>T`Q`3wf?:YEgwa;Nw TU 'cx&z?/ya<=%Z'?|( k[7Ⴚ&-XP/{5pya1E] <-7Rmwﳌr3YwYmTŕ9'?(zSO]w#m]۫Z7 }BQn}E`Ͼ&`>2? 6!UrYT!AX9o㷡a'a ūP5wuL;ExK6ǔ7 VިscC$6I̚RjFsF"xy35qVɸUk(3Zr]cAS-uP0,+ 24W<\AƒU8}YrK^gf6OoymC^|lvb9Ÿ?˜Ҧ[ ' #T+x1L"]TC,9EQ"|#iԈ%ٔ&RkunPK`@qpr*lc ZhY1x,X"W|9I7ueV~V_z!f,|%:J*a[)n8>w1R岁iNazUiħ ^Ž 礚}9 k˩| `h_U^=qzC[CaS>|2#͓q1M^xQ,IIͲͮW'D ",O{B"2q^ 1#.u7xP.ZԯO3jX{)!zU vuu]?8͍ڕZ5zmMRej$%Hi% x%@[a/ +>&_  UR;hQG@$qJ#xzb{3p6{zڂ@Xmo'y`4bfR%f$콢M5MHݴ 6):rzㄦavZV־`?ۧS̆ }MjzPP0FgFfh](lcq+{gf5Сt¶%+`cf`Vu:)ZYWM\4DF܊Ѵ!nߌu"cR@Z)O4 ԉyA)&v^2ln61%ٽ8zOBh*2Ӄ^1dsf-vk[I޺DoHDçhGPrP !*)RO(T6o~ Rݗl TW {k>Zgy2Hf 4d,z1YXj*/$Bzϡy;/mJС|NA/qv˰1VIn6 8t!~`Ecѯg}wW[ҁ`##Z-kC^\zZCJRg8C1n8t(XN1/Zi⬸s\E'LSeUǷEKJ}^S\,q qy,N>LݛgJJ\Vk8:ɺ4nAaI2MacaLMV"Q~(b /N=5z;pK<.TnI??3,}Ly@ʼnĒDDS|Cd@eƙKj,#15 Q&w!E~6$ȐcZܬlیlSsʌxU&L_O4O9m3L C[3*)9p8g")L ўmIyНI6N/ؙ{vigҁ{0L;lX5T2H2MиBm9n Ifdز# T紴)Y_sb-+M7U"~|x?GF0:B ZK"N T C lMNdG׃JJW+~rHoò"lZ\OǻtU\hOґ+3fI'>)nogG.1'aFaz4,88ģbc cux@v2>5PBoXA93 ĂҒ"-ri:OK 8= iiP?UI;1Øo+z-%7vυ أ/~rYiS܁Yt)}HX+h16"W&NMj. l̚5%cr>ңV iT<M?zgL4&`q~>CFPO7$<;#a!~'ʳVw-&Czg&N&?bE%Ÿ,M`  ä-F>=J [-k&/ttQ;N?_PN]Ko0 u m(K1!NXb~ ?~lKZw/yI%RGQqttݰYJDӆ#0q&>,mƥWTdyRa7:x(Ϭ%jFwG>_HlB Ѻ!#okU%ACQ=ءj6 <5pa& F^$/!F#8L/[pcW#*AYИl봲ttZ{(PըAiC`PS-^)ON?C2<%}V`hn4dIL7zьl^;y3%KF|<NţL$+3B~K@skrsJ v@dwBw-NKӏ\,c3yRE.ﴦj%x\OLxwϢ;⛾3d^% ڐK JXቔX@Fu]T;㌴M֕|G瑳>v\Bص]`oµ+Օ,*ei%zX@U6NtL2;<-}n7<%mEffۜE%sms< Ngɜ9ngRtڕy-3_[xhzw?}~ib[6dpW0Ħz/6yCߓ]CdMx܄)AuqH6ҥRW,,g⺰Xð[Mͷo- s ɟEONC<^UUSx JЍ$8'zJu{ıoܡat3\Xs` LL*]XvcqE ^tK;q r\"ͥHW#s?'P~!~ ܭ_3xfW5  D gﱓsB7#EAoPχ̄,V[XlTZ2CVV/XAg* rDzHV5gB\3}EB2{Nan.-D7Pnڀ/<9澅 7,;B#;頢] "tFuLXO#]e$v" A0gP h`ַZ8}7ӛx=&P*$7hr?)K!|llp/`/C}@>94>p%` `+` 6&m̾'=; ?hԒrw̾/ nt=HoCF|F7p^O>`n(/ (h._A x_4 `1~@6{<K}`:ÀgwE>%^5Ҁ2MpK-3Z C2 oL3&(7[dz qJA>,Nw$p ~l0CY%'$uI$P$M¿ }Ip7ߚ/÷'? $ߖ_c$Gǽ_v]cT7:fk{Z*Z1ibڍi5fc3P>^rS{Bs~1V"zjzr,fv!]D1^ <A^S'H3JWt/ߒ1}Rs}{M[.og댲Kͧ"inrȢ|ĉylIL3gkW!IJ]y9A鷛e9k}uUٙ/͖%C1~]|@]x;O^ہ? +3g6kZ;{VBB;lVf{QbBru[ʋ5G%nC=`~fp~~1ޮmtѲGj)?@8?+-&ž]Klx9{n\r2;G}7$?G\t]/}<2JF;Ǿ?cn?qhjV wnl7-W4e\ nu7=EFz|\zzH\D铊C ,!uD:NA(_ٍc, sMt.FOIpلi~iUQQ@es\Lxv=F4V¡Z_FE},>J,.]7=V=  4bJu  Cx( 3|iń+=7n%A Qg3P + Wzn$JpA£'fL V #HpƒG O!ȡ ƓyI!$tgw^Br|:nKry|ξ?mL"_|p7!ίy4&[$?F{~ep*h7\H#:|党B`Y򼾰;`y>؝WvM-ldyH^3\| -A!_%NLHa Vd~3dy&'lq;\85(আ /maG-%^foּrڃqb ?+ǓxbXik30J}㸦O:uF.-V#lY0j6s:%U5ԗ Dߨa9$-1aqIm9mc9z;5}n:;&qF믥6։MӥMH'=fM?U\t |oO/~V>wnS7k]vBAFz)uv3K^~_Q MK^{ڙu&1L<_B%]ė4}b'~I7W|XK8O䞦[UO#+/()8O)(S4xvA [H(83Tu悱;*U qjnkHdmhO/` KYKTo&{gܞxk'`gK@s佮]Eu x.fD=#%^g=Z\lW͇a>c i\G 5?Ι3]6X]EZm%Ŷy!^!Bm`#z¶,ˤ#2ڔ&. qZWFǯP0#//]1gpg;OG=/wn^9~z4M+SI7<+(k 7>>U}>?w.s|v*u 2V>"$-9ğ^&1!1.}ZPcr;:JKsgUSScYKЫ+'|oL [4_W s4$Z>S#ӟJin!y;Lk 4<) k4~]W|nWƁ_Hy>Y,Spqpfu٬nn]]~;"1ܣDeˈY6+~?1S1.I"(=[ /$/_lOJ!dOf3xv2|&}3)V-F ܄H8Y3ǵF| ovB yܝ;9-~{fpWe9awlZ8K\2[|khpG[MQ~_-#7+V  { j*r8нJSiDI= S OL7ݰ…AJ_!i+SW>f) " Mk舆)>@xZ-`@ {P0f 6")kdp-3Z^0!4;vn;pԇB")jRnE|;Q}]^_YbT#xɥCSZ.o#%kkKCg > U_3QWW>;mV(7)me ,7tc|6мXP}IM C|f,wI—`zho7ͩw]:ͭ1'?K}nR6ߪBT٪K᫏֭g _=rQ3^?T*|V ),ߧ=~?BR3Y?R0J¿P]( ?[gV?F*f(Kuz]Շ R+ j?W~~Ÿd~Wzx'"d?Zˬ,(xK@<4r Ce Cdw"Ccӷ qAqq&\+S4:N߈4N"Cck!1kơFsJ!0`t!fH+.?p aLFH(Gszsڈh^N6 x9 cx9G/HgswH_7ב_#=ןןO"=ןӏ#=hͿAڏYV}WU^s8@񴈁SՑ~}F GxR?<&lW "{wձ*[7}嬩jJS4UsPkڜ>{gc"E>obL g_CyVL~ʆ,w'L㵲Tu{  к~ g@[V(Q!ՋPѵ"}<>'^ꮮc/gawydgO"0erI̔йUPF'kwyӸ%TP<W&TJ?QneKXd,k!h_LmxK?AWh9o?Z;Uu1m'P<^pIO|98p`ug}3 -Ĉ϶syDt^]ˡ֔?Y.WS0fz|+;x܄ WPёar!|]oFADɪ5pc(zd>F'Pz`.F #bti]Uɇ'>z- 'к ~ տ_`>; Rp nHzWSP`%r9M@yo_ VaHED cၝ 4v,bݸJ` Z B -J5("~ O̐h ^&EPEnn,fmAth g!8mg۠gXP}a^#]olSUgt-ۂ.R}hMAu1&!ۂ ,dvkȨ-. &&S$`B2g"lJHzιٺ (~i}s}}9?Jo*AᎪ:K g0R^߾-Ũ\ȝ̅S?ޱ!UJw0%{T@v+hӒGQJȟ1X+^S\ )oy7 QгUSG03عG>AFʺЃdƅ).[j>D=*7ϡgګsL;ء=GѬϦP@-H;K KI%s'3DD)ݑҤ/Ҧ' SRlhEaulp=|M$ :ZD9,o>1۠5T (6rfC] m kC4mhnn!+ uJcuxVsZ`YN8Z~a~vhWZv(7)TcSޖxMp~a2CM_R_KzpϝO@ e#7'jM]O$r ;aD")|Ye((囈|25M:;4MZE}_[㓸}F8Dj =5dk T)^nsq9< ,P y!P1# .7ߩ7> ]*%}j,NOGҮ]YsoqoFcb 0I&/3@J|a:a8z!]Dcqw4.Ok8mݘq \ĴNp$LK5#װ 07(6QpoQw?PqLsntJcnY| l>&rmAPg2QFNeM0Q&)yf3CVDžk$i 6*6.|]ɣБξF rukY;ϒϕE\'5E3գ<,w3s6sz)glb$G,S[BbA0Y . .<~$s:.7csTIͼP%c t"gGv N1k9| cYݔ..3Q̍p-i^Ayk-Ӓ (iZRlW4X9]ɦח]Ǻ ~^nLm,"e"$Sc`uHtQÏ' eeqb9 His̀gI1=0SW5BA <z0*ޢ0q=y!W4`2vg}u<1Ƣm.?Qi?Dr(t|m5uOϕK+ ;B~ڍՅɿ36A{z Z*eH4h1`(^uiV`v:w5nϣ3u9Mt44ۡ^7X /e0-Rѡyd;ɹ_1ˣ) YjP}HJeOʁE=khފ8rb98.r`8CCVvT@-+W"eZD EJS ʹB`-6(`pzbHKʵb%$&Ebqy@%5ค1[[o3 R@o:q1$$Bŀ.9 *CaڃmSkk,H?/윱k@41b!m񆒿 B ̙L&4-h(c1SC!1 M}ؒ@R-u瓍d ~GDEkyX# ף~!sFA8$uѵ?tU]q_Bw& &ҴK%G)g=J+ޣlGn=Jޣz҉=aOaя5ET(07l%{UX ^_p"x(qɋ=H+^j sɋõ\bsg}&@3gRK(RC(u&W:Avcv̽|& Z+H~R_Pr> i7ɍŷ> 8OX7- {`lm<;`?X&Vpl- `y]w ֺ?J"7~4{ O  j.Ac'zd-D= I= 2_Oi[yd=#A?q6OƟa .E;Aj6OJxtwN>i瑣9䤞g_?tqn;x7_e4< y:A_Ii '\`@9 < P~8i$.:’sSL ,X&8I4$ys2Rs@2tg^K &1om_1A8޹y?߻cN9'T4 }'F5mYkLAer=")Fꪰ;5Kj]qʤ64l{UEaWU7_՞/؇ 3â_kql鶾Wr6sn֫g'M+کjŹSL*nidL;(Ëψyϻ~%TmWwޤ9.CnŻwwyg|;wDqj}ӧ'7wpS-<;Mt>tھ=U}7FYzqW: REq 4܂45q!hpw;ih=]?Ugj+;Tvc3{=w y{vJbj<_%UZ5\ťId`t8&l~^,X}}ryX_E`9|_zcRzH޴pr,5FMIџ:S7BQU<\²UvWP=_}ژ( Lڌr~W)U#?qS,߈~VYG\યw*`o'??Uv+ηXmމ,*,Oh=n`~{‰H͘zg :XLuR11Gx-_TzwIXZe.? Krwū#L;}Z+$VsDwi+ϼ"&g.NmG5q`w"ngA(}9K?-.Dqл%G}Kܟ l죵*qKCh׮џ[.ăsD7;ZS\Cҟ ^6b㚮:injhxnI$oPKȗtn20e}0_v#۸:U=sg*mWԴ^:~΄m{W+y +w9o[D/fUUd:<[?dR% Dl0gGWLZEJȁD&9"ؐwڣp+,''՞ibu@*[ADs# 25XN~YMu 'J5ѧDv \6X$؋0?t8x VȼNg`U+ #F\NՀeϊpʥKcEW%ʺc=#f`eV1rce!>Qdp>X.X%5o?wOhsWs>Y& cSS(.9DJ{%]:4H/3{iDq)q|,xX,W9&/fSYʣ ݮyyo.oYa6tߕ(S#%fR 9tNm\)KLL|˙&dFmi4sUܷո}@PC!24Ҥ/!WfߛƚN@WųˮXW:!۳=%"*C.MrBvM\i t,bBx/QHVZhqC$@'8 Q`$JZss'$UY<]P]%<(DE Cð~]#>8D5H^3Z.Cyya|ġ`pzZZуiN.[E\$R@Kj!5"Y$KFt~}~EThU08^Af2|+6* Bm-0`zuI/A8 x"Iwk-֙0tݓӳf 8Ig,cɉzv]=8 U%2^bB9^3R+<ºfN{pŲ1w;<ɟArr_uȮBb{A-tK(M^yzҡTf 4hL}.R X8+@@[Y6=F}w_As>ərU>Z4X,b;/vu%?KF-״~ѷG%x`#j4-:G$!?*8=Ds ^om2|K <1I) ü1w"uۖSdXz+$BWӦ.h7]hb&2φ;s@&c4_1!.SwĄ!+IQ[ dYf2Hi6xWuZ0⒠Ca"cDKhWVg"(ӫ;BV(G6q b,@baîHaKAv.R0ɹ] n/^W(2NGp޽kO?3a)YazK2ƻy|>`2'`@6N "J%Q?\ 'AO_(e4DJi2~ZeQRECwb}ET8jjp`++ib8!cbzh RҒ<)犑_DANQ%L݆FKHj3›ƙKq:5,+|#a_ke.!Y8{EB)O@1iZu^"W$.lԴv8\Þyb{zGhQA-pA(,ԝ(!r!|ښE *'rə9FV%3)+3",R5:Иnk ?\kA6EOgt'[sԆhuy?e*-=]nh"2Nix&=uFe 0%H!6\#"(b gA6 fg#zn|`$ ke\@IR̦ìDQFK>Qzq}9":f6)j'4T. %HeTmʀ$}( εHQ a ۙ[r:Z<=4ۻ,rVѱQ%?pF\)S/>ī=47,`R֊Sl?'v1nE,$g˼9~p1[F_pWNo-y8c+Zwvzƙna_1Gы.'-5d1J(Ұ@*,$"z0[ʰB1OK[__^¼Whz]D\vǍJ^CLG%%auHZe t m:+xΤ /("̜Τ L(jOǕ4{ (@ᡣf$pC"rEBU {SH.?R3Gy3yH<0oJϓ<-b~”]%>4rFLK"%"N ҮUy٫n, z;O"R2 > wT (!=g A;,| J֯uD$6ÃaxѺ[c ]1ji: Jl6QrqLp"ÛJRZc+pg4T+{ϗo . yu4}viE*lsGQ#9^,'GQ3cϘ@{3.^D CNg9L*LD|VxXj]j؇4'D)c7[yK)zE};?v `lA^\"3w,:bGS bztx]ۚ+ݖYy|]&/U4; ¬oڂ#p2Y] #<ʵ Cb_&HX5-Q8+H륀Ѐ=kqeCz_1y f|9/22fs0cT?Ey F& hmNJJ6+$GMԓ4o~gӟ郁(jDfCV"EC. YGcK8ziGLss2"oHePĞ/Ri_6z0JGa_O-&\ӑ3>iRd6>V V:A+Pil8O+АxK!#nE9i܎> Y,V%~ntZNib䴆;G-e-,DѿJB\鍯(OKWk^J}{"w-8%s5/YˀY1\trfw2.ͼ]hlǽ6iQ?%eibfiOOEKz[-SӔ 8~8m6Ǻga# qTGGǶ] 64FVV#GhfX҂۞T!Z0㨒Gh0*%z\gLq\|V3%eBqɑ)v9%f65޼haXGʬӿ=]LF_w@33C /)"/Yӣ}t݁u_ftL Ê;270D~к(BB4oBT ~ґRv0g[o14a18DF~lJ$$m^6Zlcj;;^LkNWܷ#RޞC" +ϏqkO)7Xԕ_IRE횸F1DzR^}m#["{CEErɊkHc ZP6i3"j6i5#7$O$}]Բ1l#,4U@uDK"툩ţ05{ܷ a)iOxpJ5 {cĩmqZ;[ؐ hY "'ZOHA&kyh 0{2CDz 0PKFz->މ,>}L^9qqju[\&BmיR/nQvjcV5wp hydk0)shC6s q {usE_!>ϻ$N-XӋ497q^<ϳcvĠ 7R15`gy -SA["uFN0CO:r}ir/DP|եnBGv8Ig@dȍ>_=\m<|8m86a_vcU B8oy9wI:uEzװ6]VI.,6{/%͒D}!nF,.^%Om^(qf]8s?LFSlǡ}"Y[6L<Z/zگV fy}|ٌ\_*fJP3 E:ݿmOO6Y=;5h|ɀ;Gt ]!_p{,4K'iٻنMG' q+i7mCKCB^IZ2V$C4+