ploop-1.12.1-1> H HtxHFT  Զj1Gle? *̆9M%X֗kgce8197816d48a085bbb807856a031e687208aad9Շ`hP[8'NFT  Զ>/MfyhnOp~6'@B!'|>8Pu?Ped  `dtx       < s (89: FMGMHMIMXMYM\M]N^N8bN_dNeNfNkNlNtOuOvO,wOxOyPzPP{P`Cploop1.12.11ploop toolsThis package contains tools to work with ploop devices and images.T rhel5-64-build$^GNU GPLApplications/Systemlinuxx86_64 dXA 큤T T T T T 0c096597ee9709f45d72dfb731ed6ee0fda7eee861580b0f22329684a4eebafb9ffe9981b18aab5605e22d18fb5c9fe86b1c7819751badc33313de5f2ec6223152e3ed81cc8325f14e508c7f113e6bbfrootrootrootrootrootrootrootrootrootrootploop-1.12.1-1.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.1-13.0.4-14.0-14.4.2T\S8`S 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 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 1409683980>>>>>ËËÌÌË1.12.1-1mount.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 I4X.Œ?XKl^9r1Ck~Ѵ- ⾤؊u$K+[ack+P @EQ FE @OmPԇ^z(zh%KѢh.SdvK8@qQw>uN6mػW4֔zjpZ g]V>:Fǧ\-;OAu,s~2Ƚ]X=ӓtI6> Hpn<ч%xCtH@>A^~8x2i dɧHH@zO^ow@{ =~~ }DS-WxH'qO˙ƂXUӰiXʵS9݅Ո=bB#L}Ao@#^VF5&6[[[ۆ8k-l?o:7ݟ?֓_/M<}qǿytG~~_|KZ[ՎO~˱;"~FC17F?7E똜*BGDAYL3Bb(ÿw-=1}]>| |ELH00H H4H4:0 r(!$eá(qiǸY\tD Dz,ʍ݄Kd^U _߫WW^U8$>? ϙav㳂?w w?ٹFƏ>wm'̎F&<|g`?sEbn_|9 .l\/h'3~˟G9)>L϶0}Z*ֿ4.aɟ?g̻0]uO*d׭&WN 6V0x˻%,W7ֱpt3?8fvCa9 +vDt?k\w_/ ?Ĉat BWs|XgޞWFg1O쵒?˺tq%[3X-F~<F'}KrLظ9ǷSazXedTKR~Ҹ~Nx>.N "WPeII Y 7g~k|eBԮؿm@({2:19Kc|`}\Q8no<Χ1ι0:'9y_zWxYYϯ =dɜ\ 9q)p|b&V4XyWk~jH>eS\A9?9#g]ևk};+)+V[IV,+⍳07K_Θ1.b K ?S\,,d o}ͷo #x%4`[G+.fs, ޅS3TD֨ײw+ߝ20F붂nH}MW=#2_SP y~+LpVn#-f"Lz3)HmQQiFiXqoj״U ."?>RGj/ZN hSw|wH-#$|o |#7|_/ DO)U6*o^, |XO/m+]~^_-/f/#___+*O_'_( .&@?\!oEI  Q d|a# xq\!DEcD X8,__O_;DED/'A~~~~q  Y ٢ 9 'qݧ!h/ᯋ51Soi@*!OG/3h>˜; 02zSFHx1u<aLY*G"^A0]!cj#x ˜ aLEToBS=c01_ytDy1%u |#HH~w!|3O?C܀p_`?H~?A% ~[I~@6W'% ~$? |'OpHvB8'x>wBx O& 'x4ƒH~G"|O0C<x& !$?7!|/OpwG @| }$?FG8'v# ޅ$?Dx8Op~'KI$? <' G(N& ~g~' GHdSI~#F< $?SC<tgDx,O0ǑAX& p&Om' $?vG <'I$?~BGx2O# ޏ]O% 'H~NGqO~'gL7E*³I~3?)Gdse6I\_Jf<VU f:%"*g+RVDҫ7g.rɅFyD;ewUV賍zƲG0Xq;;er (i^zV×j㎴KȊI6E=eFxUՏKqV%/&m˒٥j˲/#p YN?i]LyIV /inZVݭρaHzFKe1W "m<A\,ҐoV&d 9f]Cf|G*v/0wBDs롂2:)9C=smyJmTңv W qXTY<,UK0= $i궖.hi֥p#eNV7)P2</OfѾP&ˆh@ h@*Iz 1]`/j:8G--Xq K! VR z=H2D/iO"$;SC2/b :tW0!69&{6!~V1-it_|17$ݎ()9Fz~fDrBqT,_L˟" h37|>c?p9G8 ̿f|˗s}ivmg IP0Hճh/3䝴PEa@d$χ4 )˕oRRaP%J%5A,)wa`G6BxxȠ@2D}n@aWZLB ?v* gheL'L|3;| T0&/1dxXӖbdolZ

>#>.u$mƱgG\ !$;`^9OvTGWH"ߢY*ZɕKJ92``3 16|`$ϒD>K,IDaKd6[FiSZ2-I=Mw`hu$*093ۢ'd[C=,y6zP[oޓh(7LԃR1=MO.`?煇 Fۆ/Π0amV}&=,*RbIhtp"ɢ{#l.wcݓxwɳH|e?b=7%X6o&9'=3.X?0 =ВLE̎xHT?9жUnJt,Ƥ^on=3Z;NS퇹Xqkcm/NLE-+})AT+c Au21`bR$yl&l}+׳WH%/ڹ?mjp5]jsMdJ#aҒ[hZ=gf= Z/PNWn{B9X 31+PlKWCZjh/!jn࠶ ҽ;;~@+ ҬѴ:" @@Z!VM՟G[ !|off] pJ<*ɗI} Q} =loy;WLJbͥ>nѠ V6Iv` H%6 KST\һ;yo 4?=i|S-n'%$iH`NK9`g<Λi-#Gwȕ;\w#G\1 "$=VZ,뱇^⪻\Pv Zmҡ~on g[B2FX>6nd8i?%m N$Jw[2 K>f 꺗qc%1Î8FKյUq-mF@Dq6,0W,L.,铭ђߔ޿â>&ȱ"i"<'埌'1c"j~dί#8 T++h,wrN3hVg(; /}MB@v<,zy%zɑ:H@cū>XľVWTfLPEg4N=h;=Jg=_<#X=s#hX Jfû0\ȓ"C)]Z aTw[Dju]|R$ľaanLg A\<I>'z!,eB[0_7pspN]ޢ4! 0?3WO`T4_uWv= OS#W/`cF?`l7xټϿYSN14שBs1$ 38I}QY}M}dJµZK^W 'J3qKK~(NEvGQyZz;*dPn%N9G}ur~5y~71wa0T%Zqj-M r]C2@S6Q3xWlEj{9"5xK{{ vߐC*UrAdu/NT.IӧU r<T|QH D#m Igmx3+j E!]LTϣbCxWQxYEs6L1q?U aSrn>T,ۋ̑]+I=`-?Ⱦ._zٲʾ1Ѳ:h`yL,ZF@x?D~fvrz\9 }zR6Qr pQjHjP@'?dcAޟ+d@`3.-kz77w덙Et0)SKZL۵S{1ͱEg[?*zi/ȺhL ~񯯤`h~[IxXhFiSi壒'}$ށ~~{$O+ƹVx]3u4df--ÒJt׼KGɛc7tıo7ru5#XEi'JL2"=#Ӄ^9=+,DUۼy?a^h17kCidgX#wi(GA% ye*< --;eO|4]tPi퍫t@B MD )EZ$:pڪ^"{K4 *CQ QSyV<6hxʥv"[Gz%**3`Y bfA4N{\`G1U.N Āns%S P)!{#w0$ɦom+`o.ѽOA]ڡ>TgG鈱4szBV@4!+: vW_o/y#h}Ϟz! oD 7fNGD<;x_3SLnЄG瀗4,mjy>ǼgpB K°*KX ,r'Ft ҈G$ޅ9f*O5#Hq6qNp%gx)7`y΢ MMY\Z^ (zDQ~Vɾl }zҍ1-.5|T{wc#70AAGH Jt@~(Vߔe 2p1/=/Si v&~g ۚn<!{tRL,JzUWZX%.>J:%j+H$[5 /ezuiO3FKYcW95 6p' $)3,)n&8묘(xJxEGr}Y >. ;5GP|߿8q fg:s!,:!IPA1Q6qop[0y\YzDpZUt tGɃw!8I9zDsC;S޲99|Em;`}6ZڴLr;ywL9M'Oxz(mtc0wB٩tr NӨ /t0x9C<\;;/pN%FWy'Kkر[?c7+?vc7+?vc7+;v@ 8Ll>1ot-Xr}c_zLغDI̿!ͮ[ktނJvk\O˕,IC$U`弄@vհ3-ͳMD<yQήmV1(]a7t!"+W:::.~ Q4.lsҷ˕#d)}eE|R EvoXXŒSN㍖t<h1F\ҪiffƟe ~X}k;+,ʦ6}c)(8TlJ\Xf2z ziy}ilk[*=ciWx}"X=⯩4H=}X(@@|x*ħ=}jO}>? Wև]˸izK*Rf2aez,FK*/}2-f>5csʼnKYf۝-:ÌGq9KBn:E]/t[M(DQӼ҄e+d܅236bD4E6(Q a1yldE6aR9bds*-yy5B458\V;:lP*$[6udbT(XFFrF8CJ\j;OϼH5<,(gp{OQ>Dj#|9hFH$ ӯo?0mvX(ԷR{t-{lkD4oF>E~ ݃Y[ElT/!i_/9_:<0~ϋ!i:DC6`D̻-i:'3C j)3u EKv@'j̜irh^gWp^uMxwόx oʫVed;S2z@qZu9#avq).: /f]o-U6Q x/)4.dFr>XCb1|z(94<390 #.5@#-,#Lbt64`#L& Z},V@: r:~ou]U@Vn_< 5bЮe_PeoI`g= Ylܔl(*1<={Yct 1GN]oh[a18/)VZ$%Wjd't1EaI轗XXY7F۾ >Aƺ]H?t6++]#]νv}H{{WOw*=r+1//5&Wޏt9>9=z'wbZ!!?\%iaU`Wmw7 ^u_tvIWkDr}-1߫?Yy7\(zw{c+2Unubo-]v/k 6S"~ϫt䮝߆[yyThR?[;ӭgZLk2):xOF|xL.\c3R0]_ jW䤱KR#ɳ7})%Ia-_6Bg:8w۩oCo٣xꭞT|/>:P?99OK`9۫ :o\œvoa ]'I 4zw{\w)+=_ƣVWp(L })H[.ƯrUU9ҨH4=~TZϬH#?s%Ij}W][D\q~OCca}6!n"K^X,~&^W_?WQ?CM?$XY_Toz;gNNv^v{ByI'E߄{wkZGlkݶWK8O\S5jvL[M )$zn.McNLsbX5Mpjȁ'Yň[kةf5B2cki$ Z?_hy=_1 Rq!Q5ErڰհpXF%*$I̚$뷆8cȰiΗ~I=P"ZZ^̘6pQjf>tEl,V"WC)}dxvFf̲GjngV( ͢IEJtF Jbi*TbdguOt# ߓdkлt2&3j*)`eNƒE8"`TF"uRE(SE"y<=M LN͜9S17 vLu0rıc J(V.?%F,;$='H[?ғ Lf!N3֠$l-ԱɱdvJAT7@ł %=͒`Pp]tie;Y}D. oo[q:H &gb8׭7NH=%1q$;^NtԙCKMP78)Mq+I%]niBT򅗦/&SG)ks3sG@Chf|1|nlAK<ڑy\*ziK#Ku^G9{hXa5juݰlƳQơ+jKB))Uq&xds؊tûٓxQ-v}\OtܹGp@9..[˰]c$"v(';oVá.y192~n}bέQ~f1ew׏r)S=Jg[ɱtR)bVٳG0 %¦:9mmߨ?x-g22 =`(n m,t<٭(ڕ@#zR9_V_ (݈z+![P#m?bǀ!pzY4:&2 ˵ 0(ɬ>v=)ۘYka5OnmMn9H}Â$mBVeHc1)! "ۆ_+'F&tk)L29 ]#04kQh" 7l {iOh״rD7n] mNQKmyov+T)MBNVqdENԏ<KA$(AcXt"'K:2NꂊfdN~h+,E1\O6Kxx~V䶒j %0;99d]x2c +eДHӏ2]5쬹Fizȋ&o$"a(TCB1O6gKZ "ULo @"q(#xrrC@q*WƶIҽ5E.o:6)nDͩ:Vid7ƗHeI/Pe/͒Z>`<: KmH9( ^ n|eTC%2`":aK šh4F_,6Ȥ7SxB)@o6o7OJ۸BhWTDW]{tENBy#! IQf;BB" 1ٍ#ڃ~d^XFYMB L@-t"oU*Pb5b/k [0+ ߰E7[7}>ʿ񯬗sğO8FYA @͵kV׬ZCp28{sb[gny`h[h[/9"r@L|[pn_ Qe0. ƚk׹p[c~L^[FdCVȘ/DgapstpnKC#D3ⷓ4hC:Pָ,+> _Ѓ'+bFFڿC21S>4q]T9Nt8P\GNߨ94B=MZxГApV8s㋘ӅGݮHb˕|ݾ݆q[1 t!  =xp_m=q/ Y@8F 0€nX8cf 5(0< ag`%q@3P.>I>g!}]'19`9Uyv0:7b8`< W SIW~ђl/XoHS~ǚY_›l~*?~~ d45 Io' mu =a$K?YcC7. ì]/7{xh:4z͉i; dǔ5,I>3SkrI9B& -B맯Qy$^W5quԧDz:nLᇧ * S|dic:_lJϳ|Tn v$K Q?'̙%p*< Z ~{ $oְRTY24忞l^nM_Ο6NKoeQ=[Nr♙2]Gj%-0=ot%N?c>1MS4=E|&ْ}4=Csii~9ڿB9Q{UzJPe[SR^V\QRZA ~2-ߊƣ@P;YlJ̾:|>GW%dPn0l%9SpLK*ϹY)3gqX}~O5:Sl9^K|oyS ,g&e?ʗE| 9?pg־>rUJx3y%P]z9Gsa[laxQQV ryTw+]Rr|c"C͛y5]Y`8K[|C|eJh>RFt1ݿѶ·n/}ϓ_[6xf?x㗝޶uC໕fYͿ;GK{o~yrn?w3^yKgd :ܧV}T'~fg1Kd=ѓjdnmaoΔ@ GK,]-29ߺ)VilM[RE Vxw*b;N{Uxr«m} >Pxu_go^}q?O~ŸT\VxufD')iWq(QS; :Q) ꞧ]*|OS^]cTyOW:W^}Hب\/U۹T۹«N;~d_k#FٙQE0F0n<2wH1PƮ2:{P.2]c˷q(cv!e*M\e" \nDƨנ]bW];i3 P.=(#磌M~4:W.r/?|>/?'<Pfsy _OQߡ<_|/?Fy:/?ż\Wgsʗs9/S(0J~_v_uqYwU'c8??>;Tz!ޤzw,aʛXzR׳̅%G:.4Ξr<֞X&r2i&[_׵t;zm(6u7uWA~78PC%ᯥ=1|n"~T~Bt*16) 1&k>Wc+п> }hfBhSDi*c A>[x,}/@$ˁjtnO᤬=ZG~˽Ňѱ/73>2=Qu)\Y(#и;Q!5`KlTGsAљP2pL\;D; fXv_?~sӄ؍`uthp!w{na%_,~'zmk0YTe[w}`ec џqZ,>Xջ߁Nkwy?׿bnX=L{$f#ˡTo=r,ۺ\xtgevS#KR_B*ٓ}pB)votM[ÍaOcЛ^ͣKLqu~3ܛѧW wC~w{p}'~ ӝ|%b@'9fB %P.yQ<=5_xO&kOxU=~mP#0T?Hq9$YjEHYVOQqmeQAs^C3ؾk+&Ex- ,UX0ךǬ6k,WXC*ee +li8xzUS?^#m}=ƥ(B7#ȈO2c5Iy=Cl5>Мlݭ4TenE_Ic;<9S<)>Ln?QR|ؾ VxJ I2k(]k_.E]ˊCc]/5uJnSu_Pb:Vy]hk_K*A9NTո2ʃ)RGf8/bhiB/_r q"cu"j$ܑ\3$t٦zNcl:^EV%|A{sbWFpI+sT5B `]?и%jAk AA/ =` Y!>ti]jUɇ'>z- 'к ~ տ_`>; Rp nHzWSP`%r9M@o_f VaHED cၝ 4v bJ` Z B -J5("~G O̐h ^&EPEnnXfmAth g!8mg۠gXP}aq8)]olSUgt-ۂ.R}hMAu1t^Cǐm2YǬ22lE> b`~ f)!9g{nsλ\4U=@{@z?:*^Q<~oVBȝ,LPHc?lĉ, UIw0h {R@v˼i/]Z܅mW?cV"}QX hNe#ߌxsRzia'kso]y )JCQ^WSӈj}! @]!XQmu\j?^7"7cyV'>u}*jE mOvFi/~)?Sdt,;zTsErZpG>F+Oˆe[Oq \\ZF P36<>` y8 (P6 oBHy穗dA=OmrU|O2T02IgEFwsgۗ(\ց3FIq *WwE_8dET RR5GlP;EH9c .,W#i7>96کY6r=u Zx{\x3a\Ln#X,Id:}$2 S.4 KpwW2ֽ\R&21I T]Be C噓"Kt)2V(UDnT r2ZT"GzֱBx|{aoonFqLsUOoq+פku}lK|5MYo j2"Y2H.kyV BYM uG]Na.aOvw0>ioXj רx${W[[v/|WŷzӬ{]=f'ޞi^f}fbE~Y 0="5XaYBdɣFrA>3ev*;p|Q1F ~_7rY9yB-@$0 uOunQ_bάWlHh̢8\G4E[8Nrӏ/،םgn` o͖u#AGFy=D6Kt!`UUaX&-R:)ws7.Q5aͻ}HHwE||b[`0SKQ:8W z[Lƴn`¤BOM D)M}ķ3(4N@ ac_`/D dc" |H 7;\z1cց!Uc$mPʭv75m5iB#viQ0X\^DP.3*s>LsxCth^40H [є珁)@JPckʁE[h8r1A8.:rl&44ae'ZAz%&zXEPt8i8 {܀)!bBN.\+P\2@b Xd-fT_3Kѣ uf8R )%oKbI"T ͠paO1 =Z4W&㫌,ApgI=#ϛ;>)vԻ[6tjՃ/c$M}z|ڡ ޾Fm$Zn[Rz&Ǻz3[f&ߺ^PUcM]{3)r`&|46WeR¶q1YMaoϗb^'QMƥL@G]zᇆv P8>?ldщEiOg_hu,i:03z?nLPwhkd񝰀Rn_ܗe޽u{.pPҾۿL'2Ip 0<֚EFL/-W.yUӲ,7K" d{_K["FEk׳`^i Fg}[:T̊<{65u0u *$TJ]a|ƾ s7ISznUfEc'iJ4ԓmf.}T^3ޕ==wgad/F5GĜseًi@vNb4|*=" Zai1@! Lѥ"m3Yc5 Et )}M%BVYL͓lЁvMɆD )ΜRPmy~F^)ȧd54)2ǍW\0~X {[ŽZvZhL E_0L? 5w :BohՁ[*X l/@+j)tĎOYX(+uy ƤLR"ABl?{vEL֤ 5ZoYtYr(lNJ0=kG]|G'0tH$+l_J􆥣aF4Qb]D !u*TOc*3穢&:&}y.!W޽NDz8eFZW=2o -AE o48r.LL\yxI-(T;#lf)5<ƪORv'[P_b[L(P-8/M #i)E3} jP6}SJ}4w`EhN4-kEbeìG5-JUݪb`J~W {K7cl0钢f ވpf>(H=P9ʮ PQ\ C1Vcj,U.{ӈO衧R{BIWqs`1[9H >5 h:CMRgH]6hj`(lzJk͔.r3I#$;]Uf"2,J@ MDZ_9"r<a<{!#g{Nb;se 3F'FA *L\ƈ/r^NY8џV8#9iSGY[_Df6 y *KZ$sY֩K&D˪l_D͜:?2|*JtB]EHh7dr$e,rgړM2Qg}1d(MV`vRW2F&iOc [S []8Q}(ӮP=!|ZvMl0oGJqĺgtiCOJ8;bj$0@^WHeޏS)W3+<\х|r< vVyhLA9XW+u8sڞ"`GY ՛ȊvRE+YcN:hMʜ;HU&wLmXp3$]+X@;ca%g.=T*S!8~u4P4_2O:hR龆KI^^XLRWW;rE.'(k]Ƥ6B{s$#y!IKpH8? %j&eO}HRsh,)aFl@ݘ(L]jA6\RWÒEQ-Q7,Wpx8}P}4סL/H.rZߙ}v_ H&D ,f>>?˱v!CS#ծrz!Gc;Q{AD+C=w.i{4eZkF\ל|57ЃVK'\-7| d}_{ڞ/=σ Mxl7[tP`| ʊpG3ř  MTϽ% Ȯ|e70֯TYBw{="} }q7ʃ(GA*k1ۭ}_Q>MM0zG:O0L+h3_᧽1t۔wiAjǯQcbId.>KdHeN( ̐6pXeUݲ/vOQi|s,IvLn"M=eA^0 z>R¦t=V x.yKef|p"٫;VBmAtQU^:ϗ.YuftZwÜ+'7w+#E56Z ὸ|^| {6k6yb/b>Pfi-DЉ&k#ѡ8;iC9"k"Ba;uQYqLqԔEb"Ht}c;S 0`-g=]$Yrs )NV}*bfp6+L4uRVf'Iu'T FsU8h;v?ƛ[jDvO ߸g?rx%7!aT`tgPgp:ѼFSՎ{qrr ϊsw2 =2-׫y[]p-]d klm Y,AH䆛nST2>Ӧ0g|PsRL:|Ǔ& OkC[XX d$-wՇGVidjq)yW^Т<s8ҟhQd]E$nN[z L$.͟7P쫦X!Y.\^j${7 3S *mrrJ(Ϗк3]WA}K#}e _OV+NtN5{Dzf}`r_d-)į6d>Fw74eOaLpqa3ˇ\֘a?E;.܀J_|Lu nˣmeB jqH4u31?cFʈ?oŦ:s-Qe9qGUg=b" Pv_Äm-eQFooΤ7JJ ;u*<˔h~-j{JPZ~q,M 6uC458Ya۞kHf p5۟ޟ@{] ӡMӰ4-ymèy3ȉ!p;u79&/3!&hkh3è[J 8X%18I7D;\uSśg1C^%onע@3Y|"۱k 2J  g#FT*ͬg_Z f,WuI ۇݓsgǥ~dp*wzUW c[-@M$mu4G(]MZ6~`X>]N+,F?٦&Ful^m\XT__p8i;m{۴;toe~ :kHV<דCx%J&\Hv[D0Cp"D;d=bs!Sŀ[\ ^+, G~%qH[qvc|"iPF2-_ف+P%a-z0