Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 88

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 215

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 216

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 217

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 218

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 219

Warning: Cannot modify header information - headers already sent by (output started at /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php:88) in /home/afelisqd/cppseducation.sc.tz/admin/images/photos/17587263121019776732_admin-dbb.php on line 220
PK!} mtd-user.hnu[/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ /* * Copyright © 1999-2010 David Woodhouse * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */ #ifndef __MTD_USER_H__ #define __MTD_USER_H__ /* This file is blessed for inclusion by userspace */ #include typedef struct mtd_info_user mtd_info_t; typedef struct erase_info_user erase_info_t; typedef struct region_info_user region_info_t; typedef struct nand_oobinfo nand_oobinfo_t; typedef struct nand_ecclayout_user nand_ecclayout_t; #endif /* __MTD_USER_H__ */ PK!/XDD nftl-user.hnu[/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ /* * Copyright © 1999-2010 David Woodhouse * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */ #ifndef __MTD_NFTL_USER_H__ #define __MTD_NFTL_USER_H__ #include /* Block Control Information */ struct nftl_bci { unsigned char ECCSig[6]; __u8 Status; __u8 Status1; }__attribute__((packed)); /* Unit Control Information */ struct nftl_uci0 { __u16 VirtUnitNum; __u16 ReplUnitNum; __u16 SpareVirtUnitNum; __u16 SpareReplUnitNum; } __attribute__((packed)); struct nftl_uci1 { __u32 WearInfo; __u16 EraseMark; __u16 EraseMark1; } __attribute__((packed)); struct nftl_uci2 { __u16 FoldMark; __u16 FoldMark1; __u32 unused; } __attribute__((packed)); union nftl_uci { struct nftl_uci0 a; struct nftl_uci1 b; struct nftl_uci2 c; }; struct nftl_oob { struct nftl_bci b; union nftl_uci u; }; /* NFTL Media Header */ struct NFTLMediaHeader { char DataOrgID[6]; __u16 NumEraseUnits; __u16 FirstPhysicalEUN; __u32 FormattedSize; unsigned char UnitSizeFactor; } __attribute__((packed)); #define MAX_ERASE_ZONES (8192 - 512) #define ERASE_MARK 0x3c69 #define SECTOR_FREE 0xff #define SECTOR_USED 0x55 #define SECTOR_IGNORE 0x11 #define SECTOR_DELETED 0x00 #define FOLD_MARK_IN_PROGRESS 0x5555 #define ZONE_GOOD 0xff #define ZONE_BAD_ORIGINAL 0 #define ZONE_BAD_MARKED 7 #endif /* __MTD_NFTL_USER_H__ */ PK!O %% mtd-abi.hnu[/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ /* * Copyright © 1999-2010 David Woodhouse et al. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */ #ifndef __MTD_ABI_H__ #define __MTD_ABI_H__ #include struct erase_info_user { __u32 start; __u32 length; }; struct erase_info_user64 { __u64 start; __u64 length; }; struct mtd_oob_buf { __u32 start; __u32 length; unsigned char *ptr; }; struct mtd_oob_buf64 { __u64 start; __u32 pad; __u32 length; __u64 usr_ptr; }; /** * MTD operation modes * * @MTD_OPS_PLACE_OOB: OOB data are placed at the given offset (default) * @MTD_OPS_AUTO_OOB: OOB data are automatically placed at the free areas * which are defined by the internal ecclayout * @MTD_OPS_RAW: data are transferred as-is, with no error correction; * this mode implies %MTD_OPS_PLACE_OOB * * These modes can be passed to ioctl(MEMWRITE) and are also used internally. * See notes on "MTD file modes" for discussion on %MTD_OPS_RAW vs. * %MTD_FILE_MODE_RAW. */ enum { MTD_OPS_PLACE_OOB = 0, MTD_OPS_AUTO_OOB = 1, MTD_OPS_RAW = 2, }; /** * struct mtd_write_req - data structure for requesting a write operation * * @start: start address * @len: length of data buffer * @ooblen: length of OOB buffer * @usr_data: user-provided data buffer * @usr_oob: user-provided OOB buffer * @mode: MTD mode (see "MTD operation modes") * @padding: reserved, must be set to 0 * * This structure supports ioctl(MEMWRITE) operations, allowing data and/or OOB * writes in various modes. To write to OOB-only, set @usr_data == NULL, and to * write data-only, set @usr_oob == NULL. However, setting both @usr_data and * @usr_oob to NULL is not allowed. */ struct mtd_write_req { __u64 start; __u64 len; __u64 ooblen; __u64 usr_data; __u64 usr_oob; __u8 mode; __u8 padding[7]; }; #define MTD_ABSENT 0 #define MTD_RAM 1 #define MTD_ROM 2 #define MTD_NORFLASH 3 #define MTD_NANDFLASH 4 /* SLC NAND */ #define MTD_DATAFLASH 6 #define MTD_UBIVOLUME 7 #define MTD_MLCNANDFLASH 8 /* MLC NAND (including TLC) */ #define MTD_WRITEABLE 0x400 /* Device is writeable */ #define MTD_BIT_WRITEABLE 0x800 /* Single bits can be flipped */ #define MTD_NO_ERASE 0x1000 /* No erase necessary */ #define MTD_POWERUP_LOCK 0x2000 /* Always locked after reset */ /* Some common devices / combinations of capabilities */ #define MTD_CAP_ROM 0 #define MTD_CAP_RAM (MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE) #define MTD_CAP_NORFLASH (MTD_WRITEABLE | MTD_BIT_WRITEABLE) #define MTD_CAP_NANDFLASH (MTD_WRITEABLE) #define MTD_CAP_NVRAM (MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE) /* Obsolete ECC byte placement modes (used with obsolete MEMGETOOBSEL) */ #define MTD_NANDECC_OFF 0 // Switch off ECC (Not recommended) #define MTD_NANDECC_PLACE 1 // Use the given placement in the structure (YAFFS1 legacy mode) #define MTD_NANDECC_AUTOPLACE 2 // Use the default placement scheme #define MTD_NANDECC_PLACEONLY 3 // Use the given placement in the structure (Do not store ecc result on read) #define MTD_NANDECC_AUTOPL_USR 4 // Use the given autoplacement scheme rather than using the default /* OTP mode selection */ #define MTD_OTP_OFF 0 #define MTD_OTP_FACTORY 1 #define MTD_OTP_USER 2 struct mtd_info_user { __u8 type; __u32 flags; __u32 size; /* Total size of the MTD */ __u32 erasesize; __u32 writesize; __u32 oobsize; /* Amount of OOB data per block (e.g. 16) */ __u64 padding; /* Old obsolete field; do not use */ }; struct region_info_user { __u32 offset; /* At which this region starts, * from the beginning of the MTD */ __u32 erasesize; /* For this region */ __u32 numblocks; /* Number of blocks in this region */ __u32 regionindex; }; struct otp_info { __u32 start; __u32 length; __u32 locked; }; /* * Note, the following ioctl existed in the past and was removed: * #define MEMSETOOBSEL _IOW('M', 9, struct nand_oobinfo) * Try to avoid adding a new ioctl with the same ioctl number. */ /* Get basic MTD characteristics info (better to use sysfs) */ #define MEMGETINFO _IOR('M', 1, struct mtd_info_user) /* Erase segment of MTD */ #define MEMERASE _IOW('M', 2, struct erase_info_user) /* Write out-of-band data from MTD */ #define MEMWRITEOOB _IOWR('M', 3, struct mtd_oob_buf) /* Read out-of-band data from MTD */ #define MEMREADOOB _IOWR('M', 4, struct mtd_oob_buf) /* Lock a chip (for MTD that supports it) */ #define MEMLOCK _IOW('M', 5, struct erase_info_user) /* Unlock a chip (for MTD that supports it) */ #define MEMUNLOCK _IOW('M', 6, struct erase_info_user) /* Get the number of different erase regions */ #define MEMGETREGIONCOUNT _IOR('M', 7, int) /* Get information about the erase region for a specific index */ #define MEMGETREGIONINFO _IOWR('M', 8, struct region_info_user) /* Get info about OOB modes (e.g., RAW, PLACE, AUTO) - legacy interface */ #define MEMGETOOBSEL _IOR('M', 10, struct nand_oobinfo) /* Check if an eraseblock is bad */ #define MEMGETBADBLOCK _IOW('M', 11, __kernel_loff_t) /* Mark an eraseblock as bad */ #define MEMSETBADBLOCK _IOW('M', 12, __kernel_loff_t) /* Set OTP (One-Time Programmable) mode (factory vs. user) */ #define OTPSELECT _IOR('M', 13, int) /* Get number of OTP (One-Time Programmable) regions */ #define OTPGETREGIONCOUNT _IOW('M', 14, int) /* Get all OTP (One-Time Programmable) info about MTD */ #define OTPGETREGIONINFO _IOW('M', 15, struct otp_info) /* Lock a given range of user data (must be in mode %MTD_FILE_MODE_OTP_USER) */ #define OTPLOCK _IOR('M', 16, struct otp_info) /* Get ECC layout (deprecated) */ #define ECCGETLAYOUT _IOR('M', 17, struct nand_ecclayout_user) /* Get statistics about corrected/uncorrected errors */ #define ECCGETSTATS _IOR('M', 18, struct mtd_ecc_stats) /* Set MTD mode on a per-file-descriptor basis (see "MTD file modes") */ #define MTDFILEMODE _IO('M', 19) /* Erase segment of MTD (supports 64-bit address) */ #define MEMERASE64 _IOW('M', 20, struct erase_info_user64) /* Write data to OOB (64-bit version) */ #define MEMWRITEOOB64 _IOWR('M', 21, struct mtd_oob_buf64) /* Read data from OOB (64-bit version) */ #define MEMREADOOB64 _IOWR('M', 22, struct mtd_oob_buf64) /* Check if chip is locked (for MTD that supports it) */ #define MEMISLOCKED _IOR('M', 23, struct erase_info_user) /* * Most generic write interface; can write in-band and/or out-of-band in various * modes (see "struct mtd_write_req"). This ioctl is not supported for flashes * without OOB, e.g., NOR flash. */ #define MEMWRITE _IOWR('M', 24, struct mtd_write_req) /* * Obsolete legacy interface. Keep it in order not to break userspace * interfaces */ struct nand_oobinfo { __u32 useecc; __u32 eccbytes; __u32 oobfree[8][2]; __u32 eccpos[32]; }; struct nand_oobfree { __u32 offset; __u32 length; }; #define MTD_MAX_OOBFREE_ENTRIES 8 #define MTD_MAX_ECCPOS_ENTRIES 64 /* * OBSOLETE: ECC layout control structure. Exported to user-space via ioctl * ECCGETLAYOUT for backwards compatbility and should not be mistaken as a * complete set of ECC information. The ioctl truncates the larger internal * structure to retain binary compatibility with the static declaration of the * ioctl. Note that the "MTD_MAX_..._ENTRIES" macros represent the max size of * the user struct, not the MAX size of the internal OOB layout representation. */ struct nand_ecclayout_user { __u32 eccbytes; __u32 eccpos[MTD_MAX_ECCPOS_ENTRIES]; __u32 oobavail; struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES]; }; /** * struct mtd_ecc_stats - error correction stats * * @corrected: number of corrected bits * @failed: number of uncorrectable errors * @badblocks: number of bad blocks in this partition * @bbtblocks: number of blocks reserved for bad block tables */ struct mtd_ecc_stats { __u32 corrected; __u32 failed; __u32 badblocks; __u32 bbtblocks; }; /* * MTD file modes - for read/write access to MTD * * @MTD_FILE_MODE_NORMAL: OTP disabled, ECC enabled * @MTD_FILE_MODE_OTP_FACTORY: OTP enabled in factory mode * @MTD_FILE_MODE_OTP_USER: OTP enabled in user mode * @MTD_FILE_MODE_RAW: OTP disabled, ECC disabled * * These modes can be set via ioctl(MTDFILEMODE). The mode mode will be retained * separately for each open file descriptor. * * Note: %MTD_FILE_MODE_RAW provides the same functionality as %MTD_OPS_RAW - * raw access to the flash, without error correction or autoplacement schemes. * Wherever possible, the MTD_OPS_* mode will override the MTD_FILE_MODE_* mode * (e.g., when using ioctl(MEMWRITE)), but in some cases, the MTD_FILE_MODE is * used out of necessity (e.g., `write()', ioctl(MEMWRITEOOB64)). */ enum mtd_file_modes { MTD_FILE_MODE_NORMAL = MTD_OTP_OFF, MTD_FILE_MODE_OTP_FACTORY = MTD_OTP_FACTORY, MTD_FILE_MODE_OTP_USER = MTD_OTP_USER, MTD_FILE_MODE_RAW, }; static __inline__ int mtd_type_is_nand_user(const struct mtd_info_user *mtd) { return mtd->type == MTD_NANDFLASH || mtd->type == MTD_MLCNANDFLASH; } #endif /* __MTD_ABI_H__ */ PK!a E E ubi-user.hnu[/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ /* * Copyright © International Business Machines Corp., 2006 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See * the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Author: Artem Bityutskiy (Битюцкий Артём) */ #ifndef __UBI_USER_H__ #define __UBI_USER_H__ #include /* * UBI device creation (the same as MTD device attachment) * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * * MTD devices may be attached using %UBI_IOCATT ioctl command of the UBI * control device. The caller has to properly fill and pass * &struct ubi_attach_req object - UBI will attach the MTD device specified in * the request and return the newly created UBI device number as the ioctl * return value. * * UBI device deletion (the same as MTD device detachment) * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * * An UBI device maybe deleted with %UBI_IOCDET ioctl command of the UBI * control device. * * UBI volume creation * ~~~~~~~~~~~~~~~~~~~ * * UBI volumes are created via the %UBI_IOCMKVOL ioctl command of UBI character * device. A &struct ubi_mkvol_req object has to be properly filled and a * pointer to it has to be passed to the ioctl. * * UBI volume deletion * ~~~~~~~~~~~~~~~~~~~ * * To delete a volume, the %UBI_IOCRMVOL ioctl command of the UBI character * device should be used. A pointer to the 32-bit volume ID hast to be passed * to the ioctl. * * UBI volume re-size * ~~~~~~~~~~~~~~~~~~ * * To re-size a volume, the %UBI_IOCRSVOL ioctl command of the UBI character * device should be used. A &struct ubi_rsvol_req object has to be properly * filled and a pointer to it has to be passed to the ioctl. * * UBI volumes re-name * ~~~~~~~~~~~~~~~~~~~ * * To re-name several volumes atomically at one go, the %UBI_IOCRNVOL command * of the UBI character device should be used. A &struct ubi_rnvol_req object * has to be properly filled and a pointer to it has to be passed to the ioctl. * * UBI volume update * ~~~~~~~~~~~~~~~~~ * * Volume update should be done via the %UBI_IOCVOLUP ioctl command of the * corresponding UBI volume character device. A pointer to a 64-bit update * size should be passed to the ioctl. After this, UBI expects user to write * this number of bytes to the volume character device. The update is finished * when the claimed number of bytes is passed. So, the volume update sequence * is something like: * * fd = open("/dev/my_volume"); * ioctl(fd, UBI_IOCVOLUP, &image_size); * write(fd, buf, image_size); * close(fd); * * Logical eraseblock erase * ~~~~~~~~~~~~~~~~~~~~~~~~ * * To erase a logical eraseblock, the %UBI_IOCEBER ioctl command of the * corresponding UBI volume character device should be used. This command * unmaps the requested logical eraseblock, makes sure the corresponding * physical eraseblock is successfully erased, and returns. * * Atomic logical eraseblock change * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * * Atomic logical eraseblock change operation is called using the %UBI_IOCEBCH * ioctl command of the corresponding UBI volume character device. A pointer to * a &struct ubi_leb_change_req object has to be passed to the ioctl. Then the * user is expected to write the requested amount of bytes (similarly to what * should be done in case of the "volume update" ioctl). * * Logical eraseblock map * ~~~~~~~~~~~~~~~~~~~~~ * * To map a logical eraseblock to a physical eraseblock, the %UBI_IOCEBMAP * ioctl command should be used. A pointer to a &struct ubi_map_req object is * expected to be passed. The ioctl maps the requested logical eraseblock to * a physical eraseblock and returns. Only non-mapped logical eraseblocks can * be mapped. If the logical eraseblock specified in the request is already * mapped to a physical eraseblock, the ioctl fails and returns error. * * Logical eraseblock unmap * ~~~~~~~~~~~~~~~~~~~~~~~~ * * To unmap a logical eraseblock to a physical eraseblock, the %UBI_IOCEBUNMAP * ioctl command should be used. The ioctl unmaps the logical eraseblocks, * schedules corresponding physical eraseblock for erasure, and returns. Unlike * the "LEB erase" command, it does not wait for the physical eraseblock being * erased. Note, the side effect of this is that if an unclean reboot happens * after the unmap ioctl returns, you may find the LEB mapped again to the same * physical eraseblock after the UBI is run again. * * Check if logical eraseblock is mapped * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * * To check if a logical eraseblock is mapped to a physical eraseblock, the * %UBI_IOCEBISMAP ioctl command should be used. It returns %0 if the LEB is * not mapped, and %1 if it is mapped. * * Set an UBI volume property * ~~~~~~~~~~~~~~~~~~~~~~~~~ * * To set an UBI volume property the %UBI_IOCSETPROP ioctl command should be * used. A pointer to a &struct ubi_set_vol_prop_req object is expected to be * passed. The object describes which property should be set, and to which value * it should be set. * * Block devices on UBI volumes * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * * To create a R/O block device on top of an UBI volume the %UBI_IOCVOLCRBLK * should be used. A pointer to a &struct ubi_blkcreate_req object is expected * to be passed, which is not used and reserved for future usage. * * Conversely, to remove a block device the %UBI_IOCVOLRMBLK should be used, * which takes no arguments. */ /* * When a new UBI volume or UBI device is created, users may either specify the * volume/device number they want to create or to let UBI automatically assign * the number using these constants. */ #define UBI_VOL_NUM_AUTO (-1) #define UBI_DEV_NUM_AUTO (-1) /* Maximum volume name length */ #define UBI_MAX_VOLUME_NAME 127 /* ioctl commands of UBI character devices */ #define UBI_IOC_MAGIC 'o' /* Create an UBI volume */ #define UBI_IOCMKVOL _IOW(UBI_IOC_MAGIC, 0, struct ubi_mkvol_req) /* Remove an UBI volume */ #define UBI_IOCRMVOL _IOW(UBI_IOC_MAGIC, 1, __s32) /* Re-size an UBI volume */ #define UBI_IOCRSVOL _IOW(UBI_IOC_MAGIC, 2, struct ubi_rsvol_req) /* Re-name volumes */ #define UBI_IOCRNVOL _IOW(UBI_IOC_MAGIC, 3, struct ubi_rnvol_req) /* ioctl commands of the UBI control character device */ #define UBI_CTRL_IOC_MAGIC 'o' /* Attach an MTD device */ #define UBI_IOCATT _IOW(UBI_CTRL_IOC_MAGIC, 64, struct ubi_attach_req) /* Detach an MTD device */ #define UBI_IOCDET _IOW(UBI_CTRL_IOC_MAGIC, 65, __s32) /* ioctl commands of UBI volume character devices */ #define UBI_VOL_IOC_MAGIC 'O' /* Start UBI volume update * Note: This actually takes a pointer (__s64*), but we can't change * that without breaking the ABI on 32bit systems */ #define UBI_IOCVOLUP _IOW(UBI_VOL_IOC_MAGIC, 0, __s64) /* LEB erasure command, used for debugging, disabled by default */ #define UBI_IOCEBER _IOW(UBI_VOL_IOC_MAGIC, 1, __s32) /* Atomic LEB change command */ #define UBI_IOCEBCH _IOW(UBI_VOL_IOC_MAGIC, 2, __s32) /* Map LEB command */ #define UBI_IOCEBMAP _IOW(UBI_VOL_IOC_MAGIC, 3, struct ubi_map_req) /* Unmap LEB command */ #define UBI_IOCEBUNMAP _IOW(UBI_VOL_IOC_MAGIC, 4, __s32) /* Check if LEB is mapped command */ #define UBI_IOCEBISMAP _IOR(UBI_VOL_IOC_MAGIC, 5, __s32) /* Set an UBI volume property */ #define UBI_IOCSETVOLPROP _IOW(UBI_VOL_IOC_MAGIC, 6, \ struct ubi_set_vol_prop_req) /* Create a R/O block device on top of an UBI volume */ #define UBI_IOCVOLCRBLK _IOW(UBI_VOL_IOC_MAGIC, 7, struct ubi_blkcreate_req) /* Remove the R/O block device */ #define UBI_IOCVOLRMBLK _IO(UBI_VOL_IOC_MAGIC, 8) /* Maximum MTD device name length supported by UBI */ #define MAX_UBI_MTD_NAME_LEN 127 /* Maximum amount of UBI volumes that can be re-named at one go */ #define UBI_MAX_RNVOL 32 /* * UBI volume type constants. * * @UBI_DYNAMIC_VOLUME: dynamic volume * @UBI_STATIC_VOLUME: static volume */ enum { UBI_DYNAMIC_VOLUME = 3, UBI_STATIC_VOLUME = 4, }; /* * UBI set volume property ioctl constants. * * @UBI_VOL_PROP_DIRECT_WRITE: allow (any non-zero value) or disallow (value 0) * user to directly write and erase individual * eraseblocks on dynamic volumes */ enum { UBI_VOL_PROP_DIRECT_WRITE = 1, }; /** * struct ubi_attach_req - attach MTD device request. * @ubi_num: UBI device number to create * @mtd_num: MTD device number to attach * @vid_hdr_offset: VID header offset (use defaults if %0) * @max_beb_per1024: maximum expected number of bad PEB per 1024 PEBs * @padding: reserved for future, not used, has to be zeroed * * This data structure is used to specify MTD device UBI has to attach and the * parameters it has to use. The number which should be assigned to the new UBI * device is passed in @ubi_num. UBI may automatically assign the number if * @UBI_DEV_NUM_AUTO is passed. In this case, the device number is returned in * @ubi_num. * * Most applications should pass %0 in @vid_hdr_offset to make UBI use default * offset of the VID header within physical eraseblocks. The default offset is * the next min. I/O unit after the EC header. For example, it will be offset * 512 in case of a 512 bytes page NAND flash with no sub-page support. Or * it will be 512 in case of a 2KiB page NAND flash with 4 512-byte sub-pages. * * But in rare cases, if this optimizes things, the VID header may be placed to * a different offset. For example, the boot-loader might do things faster if * the VID header sits at the end of the first 2KiB NAND page with 4 sub-pages. * As the boot-loader would not normally need to read EC headers (unless it * needs UBI in RW mode), it might be faster to calculate ECC. This is weird * example, but it real-life example. So, in this example, @vid_hdr_offer would * be 2KiB-64 bytes = 1984. Note, that this position is not even 512-bytes * aligned, which is OK, as UBI is clever enough to realize this is 4th * sub-page of the first page and add needed padding. * * The @max_beb_per1024 is the maximum amount of bad PEBs UBI expects on the * UBI device per 1024 eraseblocks. This value is often given in an other form * in the NAND datasheet (min NVB i.e. minimal number of valid blocks). The * maximum expected bad eraseblocks per 1024 is then: * 1024 * (1 - MinNVB / MaxNVB) * Which gives 20 for most NAND devices. This limit is used in order to derive * amount of eraseblock UBI reserves for handling new bad blocks. If the device * has more bad eraseblocks than this limit, UBI does not reserve any physical * eraseblocks for new bad eraseblocks, but attempts to use available * eraseblocks (if any). The accepted range is 0-768. If 0 is given, the * default kernel value of %CONFIG_MTD_UBI_BEB_LIMIT will be used. */ struct ubi_attach_req { __s32 ubi_num; __s32 mtd_num; __s32 vid_hdr_offset; __s16 max_beb_per1024; __s8 padding[10]; }; /** * struct ubi_mkvol_req - volume description data structure used in * volume creation requests. * @vol_id: volume number * @alignment: volume alignment * @bytes: volume size in bytes * @vol_type: volume type (%UBI_DYNAMIC_VOLUME or %UBI_STATIC_VOLUME) * @padding1: reserved for future, not used, has to be zeroed * @name_len: volume name length * @padding2: reserved for future, not used, has to be zeroed * @name: volume name * * This structure is used by user-space programs when creating new volumes. The * @used_bytes field is only necessary when creating static volumes. * * The @alignment field specifies the required alignment of the volume logical * eraseblock. This means, that the size of logical eraseblocks will be aligned * to this number, i.e., * (UBI device logical eraseblock size) mod (@alignment) = 0. * * To put it differently, the logical eraseblock of this volume may be slightly * shortened in order to make it properly aligned. The alignment has to be * multiple of the flash minimal input/output unit, or %1 to utilize the entire * available space of logical eraseblocks. * * The @alignment field may be useful, for example, when one wants to maintain * a block device on top of an UBI volume. In this case, it is desirable to fit * an integer number of blocks in logical eraseblocks of this UBI volume. With * alignment it is possible to update this volume using plane UBI volume image * BLOBs, without caring about how to properly align them. */ struct ubi_mkvol_req { __s32 vol_id; __s32 alignment; __s64 bytes; __s8 vol_type; __s8 padding1; __s16 name_len; __s8 padding2[4]; char name[UBI_MAX_VOLUME_NAME + 1]; } __attribute__((packed)); /** * struct ubi_rsvol_req - a data structure used in volume re-size requests. * @vol_id: ID of the volume to re-size * @bytes: new size of the volume in bytes * * Re-sizing is possible for both dynamic and static volumes. But while dynamic * volumes may be re-sized arbitrarily, static volumes cannot be made to be * smaller than the number of bytes they bear. To arbitrarily shrink a static * volume, it must be wiped out first (by means of volume update operation with * zero number of bytes). */ struct ubi_rsvol_req { __s64 bytes; __s32 vol_id; } __attribute__((packed)); /** * struct ubi_rnvol_req - volumes re-name request. * @count: count of volumes to re-name * @padding1: reserved for future, not used, has to be zeroed * @vol_id: ID of the volume to re-name * @name_len: name length * @padding2: reserved for future, not used, has to be zeroed * @name: new volume name * * UBI allows to re-name up to %32 volumes at one go. The count of volumes to * re-name is specified in the @count field. The ID of the volumes to re-name * and the new names are specified in the @vol_id and @name fields. * * The UBI volume re-name operation is atomic, which means that should power cut * happen, the volumes will have either old name or new name. So the possible * use-cases of this command is atomic upgrade. Indeed, to upgrade, say, volumes * A and B one may create temporary volumes %A1 and %B1 with the new contents, * then atomically re-name A1->A and B1->B, in which case old %A and %B will * be removed. * * If it is not desirable to remove old A and B, the re-name request has to * contain 4 entries: A1->A, A->A1, B1->B, B->B1, in which case old A1 and B1 * become A and B, and old A and B will become A1 and B1. * * It is also OK to request: A1->A, A1->X, B1->B, B->Y, in which case old A1 * and B1 become A and B, and old A and B become X and Y. * * In other words, in case of re-naming into an existing volume name, the * existing volume is removed, unless it is re-named as well at the same * re-name request. */ struct ubi_rnvol_req { __s32 count; __s8 padding1[12]; struct { __s32 vol_id; __s16 name_len; __s8 padding2[2]; char name[UBI_MAX_VOLUME_NAME + 1]; } ents[UBI_MAX_RNVOL]; } __attribute__((packed)); /** * struct ubi_leb_change_req - a data structure used in atomic LEB change * requests. * @lnum: logical eraseblock number to change * @bytes: how many bytes will be written to the logical eraseblock * @dtype: pass "3" for better compatibility with old kernels * @padding: reserved for future, not used, has to be zeroed * * The @dtype field used to inform UBI about what kind of data will be written * to the LEB: long term (value 1), short term (value 2), unknown (value 3). * UBI tried to pick a PEB with lower erase counter for short term data and a * PEB with higher erase counter for long term data. But this was not really * used because users usually do not know this and could easily mislead UBI. We * removed this feature in May 2012. UBI currently just ignores the @dtype * field. But for better compatibility with older kernels it is recommended to * set @dtype to 3 (unknown). */ struct ubi_leb_change_req { __s32 lnum; __s32 bytes; __s8 dtype; /* obsolete, do not use! */ __s8 padding[7]; } __attribute__((packed)); /** * struct ubi_map_req - a data structure used in map LEB requests. * @dtype: pass "3" for better compatibility with old kernels * @lnum: logical eraseblock number to unmap * @padding: reserved for future, not used, has to be zeroed */ struct ubi_map_req { __s32 lnum; __s8 dtype; /* obsolete, do not use! */ __s8 padding[3]; } __attribute__((packed)); /** * struct ubi_set_vol_prop_req - a data structure used to set an UBI volume * property. * @property: property to set (%UBI_VOL_PROP_DIRECT_WRITE) * @padding: reserved for future, not used, has to be zeroed * @value: value to set */ struct ubi_set_vol_prop_req { __u8 property; __u8 padding[7]; __u64 value; } __attribute__((packed)); /** * struct ubi_blkcreate_req - a data structure used in block creation requests. * @padding: reserved for future, not used, has to be zeroed */ struct ubi_blkcreate_req { __s8 padding[128]; } __attribute__((packed)); #endif /* __UBI_USER_H__ */ PK! ll inftl-user.hnu[/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * Parts of INFTL headers shared with userspace * */ #ifndef __MTD_INFTL_USER_H__ #define __MTD_INFTL_USER_H__ #include #define OSAK_VERSION 0x5120 #define PERCENTUSED 98 #define SECTORSIZE 512 /* Block Control Information */ struct inftl_bci { __u8 ECCsig[6]; __u8 Status; __u8 Status1; } __attribute__((packed)); struct inftl_unithead1 { __u16 virtualUnitNo; __u16 prevUnitNo; __u8 ANAC; __u8 NACs; __u8 parityPerField; __u8 discarded; } __attribute__((packed)); struct inftl_unithead2 { __u8 parityPerField; __u8 ANAC; __u16 prevUnitNo; __u16 virtualUnitNo; __u8 NACs; __u8 discarded; } __attribute__((packed)); struct inftl_unittail { __u8 Reserved[4]; __u16 EraseMark; __u16 EraseMark1; } __attribute__((packed)); union inftl_uci { struct inftl_unithead1 a; struct inftl_unithead2 b; struct inftl_unittail c; }; struct inftl_oob { struct inftl_bci b; union inftl_uci u; }; /* INFTL Media Header */ struct INFTLPartition { __u32 virtualUnits; __u32 firstUnit; __u32 lastUnit; __u32 flags; __u32 spareUnits; __u32 Reserved0; __u32 Reserved1; } __attribute__((packed)); struct INFTLMediaHeader { char bootRecordID[8]; __u32 NoOfBootImageBlocks; __u32 NoOfBinaryPartitions; __u32 NoOfBDTLPartitions; __u32 BlockMultiplierBits; __u32 FormatFlags; __u32 OsakVersion; __u32 PercentUsed; struct INFTLPartition Partitions[4]; } __attribute__((packed)); /* Partition flag types */ #define INFTL_BINARY 0x20000000 #define INFTL_BDTL 0x40000000 #define INFTL_LAST 0x80000000 #endif /* __MTD_INFTL_USER_H__ */ PK!iiz&ctC7:l,i:؟"@MDdq ή!_Sy+/P$%jz&וVL_թ\a_VFBMؓӁ$(z@R[0sژ1ZLV;,#W0c=}yo`]%\rf݄^ZJϯW \:^N橫*1C 5\Fe0ٮMTIxK{q# yG&H%W7M9jq/f J^ٙx2"qȊ}@O`xF}@<$ pS|)>NM=çZ<Ǹ;&͌_mv4ӔG[3AӇyWmcоUp({"Gvc@3ڬIlwM74N!7Dۏ+W"uP':DXd<-KQDt| Z͟H$B9T)~z'tN(HfeBz>c2n> si!PsB):R(e?A=#A? zbQBО$&>kMUm^w D3 6y6M|[cgTGB$?.u̙Jm\ <S+r>jRTF";@P@YF( I[4Pi6AEG ; R|oR)WH11A AXq0hoA \έW©`8:Ww 7 Pl)E퐽G&ϳ2御r3GYxvy >vi˽-r"Ҩ9rY6z{{Dޮ1ՠlKm,r\z6kdr^y}' b$UCC̝4aǖ^RH2Pa$ѩ:ЩG2 r+yr_:^RL|ޙI ;VYOrM/}:@E{㭪Ldȫ9)gCb2 Kg.Nþ-wJiGMML!  {`e_vgkށCE7pÈF]˽D;ĩM9f<9AP|RW<$|[ޫ '8j QuC,z܏/183D PLŗz 't }駉T~N K':> XPV9TF#I@^Ľdh}D8jgVz>:VOXմaR?\EiDٱeERo]XJ]b6#v.!k[z`%*9Dzfx[*U/M[Y_1nXOђx|,Ԇd{ @JeMCVq:KQh!+ C}%z_yB\YZQsBEqi%ǽ|U!tR$ 0PM#`pJX^D]hsЁLAP aO.cKmnMζ308J vVa5(C v m?_IiopP٫zQg~Yh t/7pe_X-*''6>g~v.p1`NJ! |idC2:h6Qf`,>DȪi6A)`Q/0; łU"y_wۗ׼Q:7X94.;I(ɑS k96^f_S30ƲFl` y;tk5񔁤.M~tCFRVx:= Khz+i*򅴠2PI7^R"}`?lTD]w 0}DUA,Q{K)ŧ'StmiL3ITcFJXߐBYe *W 5L>ʕf!mcjJU# qY9&_Υ"H^QӨ?K}ɉZ= r``>sCjzaYyA'1yr^8t JiP_owns*i1LAtNdbC=:ދz $vTL;RvVY*zoyfOvYobPSfAiWޙ'i 2ncr5G=!8OR9 ,qNQzqʳNUi!|}$#yTǝ!3\I>/Y+#5H WBq&T~oMѲR֔)^މ)HTeex-\xSt\&ŶPv, 65y讠#8B5tvAD=K ܼ*jת-;+vr7 ~ NMQ':o,| 뤧^7(1Eh2h.#l6l`H0ǫw;<)t^2^ O n Ow@%4 ī}]@3us1OQӤ!bQVE'_o)T=¯:6`?FUGnSH]8Ǘ2mGw. ), ‚GܟDEa|rk,_"!Ne!|-A4K*b5=}&=9BD=L_ rr>EEeE=x]xCKP0"DP3PE:Dt ҥax紝>؉tnDTknF*[=9oNfY7Lj! Ѭ=,r~|RKUhVM)AO.qO20;%ML|;MdO7]QV=f)B753{}Ӓh: Ow^2ptEꪊl ̄1"&BԗR5[J(,lBFfne߉p^)Fy ;#wz"ltӉL؏s *f-){#~m{ْVvc?|]UjBܱOARګL0Q!!yp11EY)yINrc6)`ק<F欶ldYC&7"%րs"ݵ Hl|sSlr2޳+3+xPkcΣpZOTQoPx1a$ ]7ʸq78#ʻHT!z)_iY)Z")X] I8:^qj^WǏ& sg[kD.!\FZ6\g~ijײ`$R9\g\;lM/U%m\8;ZSz2i! f#oP^̉mY`lgmKbN\?^mn;'K4V8ia2&=/H r輱]Fv-kiŽRwФth&bxX4583r憳hM; &ih} Z֯YGaEة X0bפL̳ELj%uj4ung6lLHڰnV5@NOGR6N6(EQ"e&F)%+#G1 5 Vo z4>WuP[KZR3\;f}~[.ɒQ]Ֆ8w?s- %*I0ݦ^b'9omSyϏ7࿗_htUU@̚ Úu1i wPHUQ1ov3uuQH\j&0K;7ߖ?ͩt#ȫb3ۗ!kY=g8sqתAǟG)f y8* 2=-В7о܈]!=FU)rN@57Z11(sPejt1%P-/E915d#]]֭^9@ZvKCӒ:D{3uZj%3zGq15)V  }@{譈ORmge@퉾a߿1[(\UsȌ ]4lLeb mL3ۘȌcF:j%hewi#q9(5#!>̐0GVA*xFB3"br9XRb=e| v'&(ˢ`ck8Pak L,@C k6@Kڟ)b|=ķE% }Ų+%1daaZAfL‚w+hf|]8 7TUNSun p35DtzDh^\:*A޵'^@HqsS_?Lǹ%QV l|f0]Jr$*!ƩI@.m˜9jN+ L ݭfJo3̐|ҔVHH{m{ɸ1Ou 騯͠=eC>:8h7YfDfjI 0 '1rE/;nFb3_Ғ$E}w&e'ki+< źu@xu!nغ-DobX`@C-dBq:'0c'L'~|,b~4Ν`6>,I3Xhڏ'p Bcq߀&^K[6\$k(- AhB^7%SWUU#C&lh:xqgL3kw,6RC3 ,/ir0r,PTPBn(g$O򺣝jl2"JW!rjtgЊ17)>B ဉT)ߣ~(3FgTCĝ^ Ab3ǩESom'rI"Yb&rJ8x 'oyޔ#Ef :釠nˡz;Y4dMlbY3A K06=x4CLC:u;}E )9RdNNMris˷ [Il; E)*H^J)>^KF)PnFz}rKWLT qKϏ^=թ +0<];)gVv cUd)\SE` cи{'%Ûl\L8RܝjEd&HnG"0[s [[)+QqtIg y;QLܓEoGLG%J_pdYfjH]O$3H'"]ghϐJ1>4'K\- ׆X,sʔgKZu%vP٩kƍ7t3Rk49+m<}C솶ODXiΥ+8[92ߏ ́l6u ա[z3nBޭD-x qe0H1O$0W⚊BGzM-j̍F*Tyjq, z'xxb@+wǔ+XSct΀*-%Zv&:gMw)R&CAx94,tpY&^S4F[Lc~w4`% ~_2d1+ v Coٞw+M6]KY,dIG嘪ZHA369;%״BD,LteF-X$gQG(yi/u=\i'i)U4Pg\. 0rTA%Dq-!3n>F_L.Ni4Jdev[O6EX#:'z&[i2Ov}Lqq]5fJG>BalIl ): `112P$ p~{!07;j3[?fY?:f#o5iyyDo5 ;LڔU▓yJ;M@ .5j6T-i9m=f?BR8:eC}3QоCiW~(e5mݧn:*Ţ*zamyzX[. `;8ܡIf\ LO+: ' GSQ&"D5l>]/7U)9<%j*3cBH 8IWhEӗRPRJU3} \GJĂFsb@ytA/*1t<` L(O4r+6Ъ3VLtCAI?#j)MDXqHĴJ%sf*[4i_֡Q΄`ay) Z.W(^Ãy8]MAZ y~Wg%"az<%|1E${amSn?wժSBbLf{r;z.KlO:k׆ Ҧ/ u42?sM]8' k)򩴢 ܙb yq}%־lzy3n$Ήpr&JE%<3zh.8֎JHCt^ &Tt|W5P__Y֘En%I  +0ִm|xk戚 `irWZ8MэNi +UyudhqwFei9כN"S{TdB'^wQp&.e{e%Qǖ 3|ƞnmy=QGI!8"PPe5wh9@XVjyc^3D>ސ"EľofAIt ʯ Cѫd2rA'<:$' SZ4H=w%jpwӞ(7)UڟP_`6@hY)[*i_a8osňEB5"p7u`'qL'aF}2y (eWAv{eK ٿH|>5dBnƔN;~6. IFu7TkwzsqTe+N ˡl1p.7zHpP Qif{"OAHp_}RaŢ gzW\dX>S"$7ؤg鑛''(|HAjuj]ӄ)9Du(=T&4%ƻ _!`3 9}^&\? +}qT(Mȁw6^,tf}9yɄћMDo-gڿDשh0OiL7A*vAyݩ= 9px{lD g] jFfXT~Ro z`WC8l*xNWFz^j=!jR_QD0Y 2tB>} yƸ';2B4{Xڡ7lK7DS~ҿ'=A-1m*bhjV@0md0Yf ɽ˥ӿ|)sКNwdg!񞶯T-9ԯeXy| {Ax|d|ILĨp,82 +c,%^*ԪBx4!;8Lp8{D`. 1C$L?p?sϖ@k߫$nt+{LIV0 ,:%$@@P>". hm]V\&\z,PIq^HM/!ӣ(pIYK2k)OiU[SVJ.GOLy*6 I 0L&bY"f\adcR Z$"5$< ]kn L??J:a^!kqiD7zBJ?~QSDT~nB5b4XJc`#-ΣǾ =(~_ZZHH\ѹ'k׋˻O?T_%:!y/*y_^Ť#C(3 )NR[^T1]j|n&\q3Uf0$@@ M.O>>ʿF -1#^SEoy%1 hz4#A}LsaS(qKxXEKu%+Hx$Jd:Zg9b7 RCacqdX+ M_1xn@cFveɽcuH0#ـ_vqp߫_¢+,S6s}? NnAG jCK7o[ܠR14 b03JBd/oHua&KQh+"chH6cP?دE%k ~013 ps JzvB4kV^-zU%Pl崺FX 冋``ޙ/Rw-,yG,Yh[2'aA47\?skh=&D]G"ԁͧ1w%?0m ?hAl!^,=T͈d >z.Z&}B2]B:o"k r2,~#deEQS3<:Ei^2?I]]?n @ IHHr$+alL_JEwhdK8ĹRի͘RmFE^i;# wVLsR.e7Y{6gtz9 AOm5I'L8dK AO, 3sw6S+4b3;z~&_O a 0!RL'+g`4@'{'AsX Nyqk~#HWc%iweA(FK+O᤭ ļ tM*zRp3گnHĩd;q*>X?y&xyFW3 h'"mBpݐh<{;%uijY(Ik՟T%K6Y_9Oܠ##O@:ch|e#<*ӓ%ڃ",J,֩<)#@.7IYJ8]겨hҷN߰I)ObNg#+KYV~('.5h]>r q"kL xPtQq Opp+J-ڲj'%"I f`QANa. ya.+8H(儤 pճӇk!H(.QLq}4iuT7d6i25HHڎ[,dCVg}x Ly_ 5EtGBtHplykZ 5II' Һ˴<]Uwf}x\#4VG/T: la<FwS9ԩ=4l< ^{$3paKn=XEI/Z.ýT렁=co{]3)0GlC cs2A7T6#d:ߴik7SsFs™WcԴdd$*h8eL"CWs𖷘K^p2;W"]yHyv}4zx)s8s= {xWoIf9Q)4C#6.G7I ,8͵rDze=AXQtf؜bBqh dul$m7+Q%_V5E\vV2x8.~yvqvd"p17.D̋})fKŲ6xhg$&{jחԔ-, `.14U-..BG Dv2_y+ a9 zh5H-JNno7a;rָ,8V0'hc^c9Mn]p[|Su;%;b ׈@wjH̞//\Jl'>`H a`ύHab{FGrKtHf`,斐v47! [wX&з7)L<|l;3T XeM ǫ 䕅+wpcjOU[.04ƩX}Slo6{tD!}F.qz9\0%qLYY*v+7_).vv"X3ڕTHֹ(ݷ(Vx޽Дu3 z%ۢ炱"_8SIX'lw 1B_ _Cy]thߋᨈDz[qaYb0c N'Q=:֥M؏mbud9KGwy@FV[x-9U ^,|vӮ p^`Y+ 0p8ZRUy=a1T,˧NtZRouUّ>z0FEK;Y[`ͬ!vtfHZ掷˞b9/Wz}էQ/h=%X <؈(`n 9)=8gXzIŠv@c!Jdh]B{1X .}ַ$wAWX^i O 9Jw!(hBcSrUC]Ǽ7m?ud4gڙ%v|I#PJ~jԓ$֤vgy'6boRs{>Ex9frANX-SJ'1umeׯ'vuaϯU5V (6~ Q=E/̸16 .cJ'qbtjxd`Ơ7Rvѩ2ÖRAd:翼@hۄQA>83%Dв҆]=WpL|Tgط˗2Kd%+(o즩=,+ k]B{|7NM>.#16YE^E4eRߘDe g[t&-ż%Sgi!kgC &6I-{Yeu1}I_Sʇ:1фmo\>:;|S udm쮠nz2:-KoVZ#"il3yj>+>5֝X6d4e_p>'mӔϭ̩ț0CE*-cS[3hV'?T>jۧ -Nk|" RM'1QʡaK}]!3Un)싹KSѴ4L \>b8@cjx?^Q@ 5sG{ Jo3`Ick[e\#]qH- ,3&_XuUv: uPlbک|)DԲĢ4WmĘJVw`Xw1ܔ!H .K\5'I>sřvd%bArI<ϛFv)hHh=Q Q( pJ,?ɿQ~}{%4ܨKEA1N 唍1j T'e`+/acȹAKE-t*I ]h_TG~Y" MYWD52p(S"[ .]g-,Gj#iHPAXL).:hU, @ojnDևGY:_<%&3"d潝ۅMR7M:'XM' 3JsxAc䛮χI BpFe 6Wa󅁫E=#C_<ߡ0c`G} [hQ1D!<wmZe$鿽&z}W\x׭3c&r/B6J*qdp6VW;}!K06K(H,d)GÔq4qa&}j6z'R:;+Fyh{_ * 0W0|qz})_ӚJ#D|bwƨ;LA~b2[w>$Vh.GhSl5ޒ9ΪKb ;Hm|6dѩ/6mȋ˃ S|!WdXC3bg6>nVjKvyn0ГA1됐z(k llU%KRd|FmVA{:PS-n?;ʞl&lT+U>G$\`T.OYX5cd`sM,CF#uBa98h9l7lL)NZU0X+Yo@20CB0iTG>$ױR[=Lm3U^!ن%,M : $H9E1L5L6{dSo%b4S.ߊz7(n063ъn#뙅__dMK=bujIȠlXH˖yj#L1=3~sK}3X-=.T.sM*Vw>e`Θ= yԝ)#e-6a1@[, Zg]G}; CYM.-_pa/ #xIKԶHl]!Š44X?Ԙ-O= 4g^=w'JLAkBhF ;r(SZ+]h8{|Cn6epOJԯJYbqph|*yPy<~ ŭG߯OT r}{dtK"eݭpTбok#+wt!\ROIb,3.gARyGfvZ=8NV@-@>l_|G 3a+T@h.g̞cM3v+.9 ftXqCMxct? зL$Ccet)Y";ޔ>9rtϵ?w|bԒx.7 …  %(܍?MCgV:17.p=ƪ 2/JZђ1c˷!s.uO˾VXgNB IJ  _)T'Kx|xuE0yj?F*-MX •jB( u=2!.13s8oiig(r*ݣ2-GqrPz/LZA8reZI" rQ"kZo:uP{:y8ÒKn[9ritxcӸ6БtK kAikDb!M9MH!P)cz=GȌ]XqDܙ+VR‘\I"y[pIs o'#pnu.3f֏7Áb/[Cig+隌e\.&{(UuVEYZ8̃mx  T d"G*Ӌ?qxYV87P 2|o;)F @j=<ؽQ qܤRA)Sˎc5 1| MŚ淖{9 c/"_e7Rj%Iy 2R7%eJ2a4M H^])m uʉq ̻܉? CS_Cߩ7FݏW݁k" ¬b#jvYU%"o{hx2q@Z݉xtMlZ;$#M}_uiѲhWTؤ\jiCy{p *ZP3+ hSMc R(޺q3==᫇6J0jvxDx*i˔z7[;Y6+b\%ީT^ykkW&cGvZ3|!U|/aR @?UavI 1O &]dD#mV?1p͓bzmf.@Mb[WTVQWW-=Mu&z LZr3N&a$aj(KܐT?n Oh#rqiUՌtkufV: òaѱ]xlhgXӠQ882?tRܪtY=֘:>M[_#0V-ƣi$f&dgNa(TY]mIL~N]@5^~0zㄹDTnzz@QF 鲈&Xԍ!Z|FkF9e xԴ.f`n|s e#>[#/YescM#"T#Īj58x'Pdow#+@M)oJ'\.u. Z=-Z4,B-yR< F!rɓxNv XVn8NBG8 cŖnpKL9x bЀ*ҙaɪu]]l^+ &ԇv8g ?d"<"ۤ4=.Qcdg9[ݭ53V+<ٯRM! Co?u KŒ{Q<\AXHG`E8BDEhH\bU|(n_$Y:,M!Ґ|O0kpTy ޡ7<>i]N͏̪R?9HhҞ𬒇e@O[ҁb&gJ }΂YCEN1?uSqJtX)bz1ůG!&"V@M'ZkTyߛ'Z[SII Ő]@;4x N _SYnT B8yeGq7vMR*׫;M6MrРݗsXUǸw'~NK=Ta4m])-uo#,,P6!zʞ|SF|QҰ`wƐ/KRbB=K}BLYebXUFgƝ4Zr+6;Okߕ-0,&&U''N)t wod]=0 i 9g,Ńes(+gNkbƪK.[&>B1lrU"]=~ qUePcA׽KUf; \L%m̴u{VeeV o&NhЭ (y+L]7/ȗOG|<~H!Py<!McYԶ.+H{Ý4;S͕èSq -H"_ y?=^c`; L.q5C@R՞D+gOL=@*¨z4>3ZxO;v a*\ srjs(A%"PAoG< ׵~[}zV9ȇEL/z,)#bL;"m1 _( 8KSx ZJ<P<~=pw@1%~W% ^W|M9D>%c0x\l7Otf(_~߆m:*?vŀJ/9{[F B5P֤H85$/N=[H-IV$J|/!~#CIj붇j]^ 7 UMF bJ3m3h:<1 殥rxϤ{I2:6 K,P9WkN,ogehoB1_iO g=1T)^{+7dvZ%Vm 4T.DsW#$Tِ@UG9+_99B|024d^?ln+KgIipn 81̀ylSKg'SrS'z2t" sl}6_4V0S~jEFƚBcиhFk]YOǓ?ބ:Afӻ-Ff7pZ;wN8SIx?hetq\2N~\gRWd/EDe Te ?4EE}a R<s7*fxL5 4a*dw#=@X7pj ցv?W;yDn/Yl!.B㙰?Jb@<>y*J4TԱ;Q`ݮZ{z׫AsyBIkn_g=e~cB=w>SREg9OnSφ{I\vq=ЍPSm(`w"˅2/ SK%҉ i\ x`0h`J&ests:^ЧנY&O;# Rո0gYZPK!$c chips/chipreg.ko.xznu[7zXZִF!t/+ ]?Eh=ڜ.+τ Zno_0R`"KwE<=D4-W6e[.Y_FF?{#)%A΋2`N$]>,4wPMW(룟X,7:;Ǖ"BE.p dxN! \))tu`3ى|nȡϧý޻t`rf`_'Fo733G{ߛ;&G@ _)Ŀ(`mĪ^vD YKsf۹0Ņ|SnQsR =)К/pchXc PN茵UbbL7f38W~L)o(# `wH?db4@c }iN|1}GrވE"F$>]pPYOL?Td|͑]ο?f| uTH ʣѪ4:#?majZtf7BFW:_ T@N\f%:POYV,LKTؼL uT͈rM+H98 #'">{%U]d{EV`r+B&Оl/_όѴ9%GZhZ=fyx6ˆoywq'ZɇTRO{ֳJ4 @D'm0Wq0nj&hҢrFWD]2H*M݁l#a~٤Vmvȕ6A']E&kFm.&[!;W#ɘ Úł8 IދA!ht&[x_t-tALgS@(&^. INsֳ<>%Km9mUE)##,20qPi8h\Ч [z`RQkC!oe9~d(7 f~G;[ϲ{5'^S?d/ʷMC%5j< WDXp:1GťfW(o1h>|c@"- *,Ф"UD}n?}.nD/LBap#A)il+Gֆ4^Iֲ͢q,LH*;hwSƋӏE܂jyNLН>Z(W!T\r4LPs{Q99}0y3vek0[`QqKuvHHR;UW >#"Z=gڇI6 9v5'HG>nĶn]+}?>`=uLRK3ћ(}i 5Mj ;?Ŀdhr h.ߋ#iwa}4J}˛M8f0mskvÓS$3jp]; {k?s`?VsYb I#0H` Kkm НX&2MƧ":A9:|Px@)[+f C8^g՟ 4 gtyM4恷 tL`b*h=$?]d/cN-.gmPZkL'Q 5sEuՀkf4XnCN!u֯1ѭ.ā,Ɂ+H[FGcM*5.z5e>g]d͞;eG 6kb6TZЯFarv7\Z_r- lWbȼ# |"`"fiD2<4G>6>,$`T(X混F ?b6~\dB>oJX }RG[M}>?pd%6N19ػq56\jBB> i8"UCFfw3ܪ]N Y6_5=ܚ s{JIOnc3eAP{lGrTڅfh)Y@]RW\3&ds3Ezƕe%r01[h z3XjP= |Wyχ`"gZ,C^JPw,&(\.xA p]~w&$XL'kCsp#'eS}v2Jb F 5~VxS8@|} t_G4k!޷oK៵c-"`# hBv#bVGK]eo~^r^?w,V|q, gueд3Fv[9;xa ]uL >ොY1Rd`hU:1j#WjUgYZPK!} ubi/ubi.ko.xznu[7zXZִF!t/? ]?Eh=ڜ.+ɓbV͑;%ݍ{}JL:ClBt'ݦePϠo/r4^/e/|nL'\y6v] +|S R.D'F&]EHbΧ_bdQV^,jbњi}Vr&H7O-/{_ӶMaW ,ht|{ Tw1 z Эj|h5l-C\YkgҏdRO8@nh GaSi"Żɖ5Iq"Ze1eԳNg{ݩDՆ yUݜ=B[})+amm$m+]ڃ#m~.ABNnmE`jPw ":sRca(%^*HO3W[@w~FYČ>ˏVaG*R}ƘET JΗtT?S;I6om=뿠7V {u=dndA_4?%(5ڢ9uz,ZPQ,`tUٍA&FyB ґ?;ޫ{5 V |D-!WPdv_+d81I( W?3T{0x@MCZ@c Ȃ+` ?-&]^)8Ss}p*uw{93Ϗ&QgDKCԫ]-\/A[E#Va~ a  GWceR8 qo\Ak340v#F '[[N.MJGyb% aN~`)P34;!{M9I?g#smHw'Φ jƈ3%p'Fm| YZg{? 6׈TE$CU݃*u X<IG,g֕){[iTXGU;Ar1G;EVJ+}lY;=aFrXu};R& qPı}U>XSl8Q$~&\ffTaY+;T*9ruvrJ$HŚ'%MգԳNx=qj5>P]gC- ZIɦR̜wc"Ե 2ؑy_!>d*b*ql{rYhLⶄAd"ѝS0c"\1ӎ|~we)ڕnw/覎DיH>"A *4a\v<3 'j Nx7WAew[k"OEB(I%]yu#$K. mOeW^<5)#V" t[<*7`7*eRG$Eѯ. d_%@vTƱKϽ77̽ȤɻϚ;!+!4ZӔU6!;-"AH5ڲ@i{ % ns=r6r EDv1yw1l}=|pv&\Pmu`C6DL!9ls%Mxnb.=> 3~^mSA=͒ {zWTdT^ "Sa4npEn(60-b#Q PSMŻwIT9B}?V9~WM4-i.'J䑝Hㄊ@ QBjn 8 BJ%3|=DaGvD@5* (I~o)eL9ץw5(P4)ddЊd=H}f=-`7ߩATa~qar|R:88A T9w@Cqg%l$[vrn-59P'P2pvj?0)cu).ի R.=}t˷7` !KcY˱RITN>p0LTQ+4t]\Ӝ<'3ǐũb?~wσ(m+ʕԟP$}ԇ"fs$MLk -~=oR@+ aK*v2fTACjz*Y lr-ƒξ>5t 49!uЈ'$@{Fۥ/Du?ܙ#űshيu_Dԙ`\9Uސ6 R;{hV.a!\n$%w^Jxkf8UhN3@vRl-o( \/Zu] ߾~ʫ.]sk%,c{Pf]Bp_Xp#ЩS/D)J^G{!Ph"h?onu6AQ`,o`ymQQ@ % ujkWo4{oٲRS B6{9y$Ju񨙍;"̈́<+]eFYh1&y3pEw)sDP\Gb>@.)$Q"᧤&^eоw#a[} }!YQWE;󋞳L/}4:Pl=L|4"l^gi(9VR}@&g_ܙ| c\1Y۩>J[x. 0y.d]T)b"P`v!$Q0y zAK ~$$Rp)X[LyV$[b,˫o`Gd^2]VN1Z)!sȟQ(=?񲭬Q--+*.پSЁ9ɬ.0P*\l ~{iυfYRȣ<4˞ʉ /Qo5 4P'$6ՎV|5GcpQ Njq;!O}g)"+?:F<fYy&#/B@mfa%)x3+4JźGbY(jсg|+%~z╟X- [8vL0_iJ{s@B~qY^4Potb(FsReY1ymve^:[mcBf4TI nc\ܤ%֋bœ偫qg vIec"2jQ6uFhsz` !¹-Wz\4r"1y -5A#[YH7 ?w1- |``<4hWostriǀ6$EF.h#H[EW:E7#앶(]2`)?-k: "obvq)q* ^#*יud>',D3RױƊ. j gDeHxOL"fԹ?Gekp*(?pn.j'W5aȖq8 ɻXlZA+f-WvNǬ% 3yi6U]ZNT9A>Qu*%'y6\ 8"n[';[N."tt\@m?QI,t,_Uno߽pȒ jc. j2iVrW9wf #~9kxh GFg8xabVΉjf1,L+qY]ь V-/O%!%쵥E=jg(gؗZڇ'joa8bjFє~RFi㞶J!-k^:&AXLJ'4H/gBǂ^b& $q?\%wO4SZMX83d@ɩ4D$CsCKC+it4W ^J[:ĠE=L L#az;Dv^Kh oa1]H?oU~A:tB>!T@3;n(arV]$t:UC)66gNҫk3YҚ"q4Ydq1k*sA"͊ rId5°j˼zh&-Z[{'P!pUK7>B*20HV߹= W֋p98w,ψCV0DC\ 4;n.uV]]Ÿ@/1=t]?=qH/t1ߣob9WY/+`8'PJM,."Y5iY^t~YP[R#])f]aEESX OD0>,x 6#ٹhnএפ Vdxaؾ&rP ``6MdwWU~a=\!2DyZN-$l6TiBX9q:Xf|NHv'/1SJ"N(wÉ5/y`6F+ܭR/n5-0M/^NA$6,Y" lԐzZ@/š+yAKlj1݂4174:!T-^qZ1{IsTnc-DR!9`p!@Y>ws{O:l<}vP,"p@XhI@cR(}0oАT B.'qZ_Lb*/a~g:>*6L!.Ljju/knJ[ut7o5I/r^Hϩ}|ʼnAi5-\M)d_95Y[9>exQHQnOREGݨ|exq^߅!T ƜH:rh|/ wh_ћۉ"pH;bxYQhă N6JΛ>ӡkσ>6YKT+Ok+.I;HArØ^܍PJZoc˙\AǛI~y0ǡ[4^gdvע"CqD¿3 My*8@ChMGUm&qkBYlgf<ޛuP ` ϻr#0p^th,=TB*iGO 6p^ջi8RO`Z-,heIúx:B%3p63+ܣNӣbã?wɞw܊(7ZhHg\Iê'ӣ11R07 ǎ)Av170՞{U;S/Ŋ/Mn8v=+>Y~FdU<##3+ZK7v]1GmmY1M$&o_h8:8еtaЌ6sQE6ؒИܵDɉ9Lb,5LS+ jQ;lSd1 x1G0B攒kc#\` Hqr% +GX k+K>4UyV4?~~xTnu(Qr+%WE;XZܴur$ba٩3I cj/7XmSX!6"KL% ֐l6r.0fw._6nZ\=- L왻Ɣo/v!\oԜʻmrѴV=Qt(p ;=^%gBe ۪( ܉:L8+gO2%[q:<ڧU :Tn_orFə&2e$tg9!ve3%+8y^bC,U"ZR9o#9Jw `Cy_uT@ %4j;\KG:4ER!*a%PĞ8 }œG`媃V!;r")'r/ޱt1l 5:8 1#K. Sud{֙I?CP{׽cƑ9Tfi`́}&Coc+L1<slܶ;8K`2`תIZ |4?'Lu|PMV?Iq-f(K^<8]UWQ9AmkYǓqFh9~hW>Ko2BQ`mxnW @)N8/WphgvPqC_{ErC)#mb(3=ݡg!8ѹ#RfsCi+|Mʽ҉4=U.U^E=Y }i 2 Q-jߐ{QxN^`!;Kqɫf2#3[3X%OvS1BEߛN\2%ډƳ{t#{l1jTx^s5ƉB*G=Agd>%J7!:ow G}ҦH\7CС:fuPEk45QOE̽=/$(dJ5y`n:/¦uqHf%O5;b ?a=ƥ3~*K;waf"Oa_PQWkBo@,'@`Ȩ$kO:86Oo|*-EQ6Es\8Z撸#<?M-)d:@?m+;i6ɡuжnEFY(tA%x=ӱˋ3Q vEAz~)TюS^Nkj;px~pxo@CTa^8iSתXf %U߇8tA)ҟ3 RItgꃔf%;XC54/܇? 6e/oz}{I~/𩃜Ol7yɖ|OR(gb1#g>;o;Ml&$$J$lK0YP [cCk'-ba]<ԛZ,ݹ뻟02RDzH=;P@6ƎU>: { н9>9i'& B6 Oq^|mǰ~>6ąD)QWd0n[(Q$aG}N> qm>7S^FM±NsT6$6aTŗ+lə^wQDU͆\huR$r)&Ned !\ū&EBցSZGM ^Y%[1z'ͮXH; 7Җ_hw3zD5IhelQ]4Ž7Hq@)MQcc9>.A_  چ)t,NGgusnT0b033c/^CXDTf1sͪ+߭mTLS[AqIqlfx&DŽ<^W%ȷsTkD.ǮpJyQD0 aAjt7}7ijܪdU2/*Ek@ĐRCoCLn*u4o3d=; 2]\(.~E$Xl8#aTh9r t( \zͬY&F"ɸWJ>[+c؜p,wORƻ <㓋3~ άEʉAoQ-aQ+IF(Qƶ|Ǿv1a%v\[ bb (xYV?e}֠ j6IֽZHiy'Զ6DOn?iRY2 3cHǼApSA1OD s|!,2SiF5nEALtidP!!9{.{Mr;gY4֫X` s;LNCX[+pB2B=Ѥo6eP- sN9;uSA^ 3szfB`\" )rx&%e@`pRWސ)W=ݮ$b'U%?׀]' p93!kkчvpz,&$GnUb:cv2d`#Z؝L(Ća2ɹ Ӓú֛+)I7&9|H;BbG!̔-g4amz6! )< Vp3!0 O_E0^#㇈*9|4Ҽm*J)fՃPCr7HF>Ʋ_׆Q!2RP;.;kT]{K$>oo/6M D¨5q#IkzSk"O+2]oxH­'٤ehz3Xsx; 4 ħi Qٮ>R K37;&qPP^NQhCJܘ3t-'\VK^|wH.{)q!^qqUpJc.3T*j>gFY?SS\-{C]D|{f.W$ܢxXXtj3NW|dWM";@!=@a"W%n,M΃VKNң c[@{§oivYui݅oۦ7"bA$YPUY*x'~x~gK⨿[K?~HgGEm>&zB$R1-$տ6eL*4kBu䱼 0QTu0ej{lMWVC[*=x]wZ [qdrryM#Դ!ߋ+bH%c$P0 <vN.Ig1p7 (2>@/Dw 7FJM LAf2\3 a.[Caap= F` I-R:ї[d"l楎'4|aX /6ʗN ͟}cU֓E p4+(a-%zw9M٨wP?qޕcKECjR_4:Ǯ̸eɖ!VQL3C=g:Y6Ŷm9R y\y*3|vA(::o/5*|~nie6Lgψ}ń9̂']!_bJMJ ԰ E| Z;֧~2* #v |Џf5C}N0:p &TKe":u)m}lFn=2 *^a -Z o6!ĵZ7y H5i'=-H lB}2.'I`"̂Ϩ6!ٺԺ/3K4+4R m%YT̐B.: Me>_%oNeiKJX~ uU6ꜘzܺ)+RXj|<ڗq`g{e2)g7 J8c Q @$Xi qk?0̥nͪYb&ƬxzQX„}it8J؞-7y|c9,OjH[YY^ZvpoBy`ۤq0A\F]\Jz4Ua.a^(vgmȌ0 ө `0)`8"t+ ({[uHTC: K,鈕f<5tKtMΫ~ҀA(SCSv)D5Тy|bٌ9A3fJ>_d]Н:o堂W[gIU$}]}@D.|:ax=?t/!&F/G=~p\+\I2{_bWϦQdC' 7Өޡjb LФiB먺A%Y9jbOaWS[ZY#ax:97s Dan5D灬?:O f鋋^<|'pYv`RyzmF4;92Fp4;~uAkpL1[L+ޠB/R]0jўo҇{Gi+i:$ vSB>6=]bw_KdM@l2ɷ+cpln$ ,O->*u rORsgrA= 5+Jő#1LpCh5_jbo`Lv6qh# 7Cj; 37)lU/v_5<% a q枤nձaA!s<k,MmHL#SKZΌԲdJNzTj>BrtK,oq&[hH债(h 9o402{OŊ-  h\B; !kG;U9S+1yh{ \DvQTq;̨GZлۊԛ=,' ՘IܘI$ +FWT +˔.)8֯eD-3f]]vv^4j&ݒ-"`Q\25DVwng/yur[]LCۡ%e;a 2-9''zEI/2LId;@vGw2E}h!YvafǡpK k[]_6gdQ3"OnQ.9Ucz:(_ĉ(;6hXdځ:̶ٯS%7M GF Jk 4 ,"d@sxs+a*aʳ00<(%L-vxei4pmC;IR[ڿsO4FH; VbBlNM# }:pz=&ˌr8ش[,a.% Q3F<\%`UO:by6xLɾKb<@che_w`gq4KQpV힘R_-)UCR+h*.)NѽH Hz0%A ^?{SpPZ3$E` W ynDVH"]bZjAkM]qSEI' Z Ş!ph>^GIńgR_ƶ,&Yo1XE刉Z^a)Q*Jx>88y9Eh >9JG(5Bd<<4E}&26#Ӿ7ϱa\XG`| enݴ(4 ^jj-B4-xWݑD c\LgxV&흊26lؐ}IH!7U#.ޘ0ؙ Lg%39(lgSFZPuYd.컅ea>"HݣQ\E9ոNq6}R6 HEwY[:"=y=d>Ln3ߢ7i}@{v>-\bj:VANL#,{k Dv9vGtaa|8@bg~ {?7n囓Eq@]?~ܞH7 [, dS@ 1aq^ǟV>Σ3>|w~bMi<)PP9! eT,s]-~CF[l+:!0W,"E ВL>; <@֜Uj:%hE訬]'<V!) Ĭ*|\<5JbƓ1m`'zx$X#Z<ϸNP#uVS)zE䄸rєn@ºˬAsfe9wZ@'T5#`y"RX{!@WkKHl d!z?DpoP[Ng+QCib@(Ӏg|rׄSl$cS90?G}hB =]ӸL0[YN<@ժCK6SگSvЕ dTϔ  ˿cu@Cn"=k>%ՏQHdOD _M^bT?oITC*4y4E;wa*$^O;"KZH{BߺBs딄"90+:vyM6 6gd5,|il S1H2tڇ^[uCqE4`uo-btHLX/by\P,"UupL] ^E U c $)„G}h`i&{wr/.<9m儒&Fؓ?m놜X{nPF +KPAڋR6mTUA 8J}]8±^)|B\X=ⲿx'6,UOâXcSX4 \ޛ H8m27@z]MBVl@qdQo{9u'45Z&Y4۶=92Wj*p`@)|1hתy99S_~1Q {Nu0XK*|f4#,~7bJmgC){H( %9Sv i6&pFdrw .Li*J- Mbk4!~D--Z;M&&]Jȇ kw\,GAR>c3}x: O*5 aX @;s|u+B@"XaV?Mc|'Q2 ^|@5 z!V"<v|Jgیݘ:S*M: 6{5%f*޼6 Q 'y:D1CΑ >7N |_ (=r/ _r9Qw|O@۩lI{KpC@|aV" W_dMWqýx),I}rahlƸ$ ,<ᢟaGL1t;3 w;` x$t<- (;'.I,` #@͖ ԟag]Q'|2AotTL=SHSO%ӦeT((P}{%hRˀoVwWGC:,9dI/f<.! ×ʸPrB{n?A,r[8Nv4#uo&YSŲ'jȿb+ -8^;Ie+MMFHXmdXƅ;5`-mUch279)-R?c!G%"bœ}mj#keY U* ?-QZUFɔ6 eoȁ3HQfAYlaVgYqnI"9t4'>YMd;_?RHn`ފC3q0d'7 w1:] 'CKa7Q &wYBeWl ۧfqdi#fc^7g#Se;pD-`fw`94悲 n!v1}*)oyA?:42 nN^sNWe.q FSQG58*ybBB0/DV[~ F\LG18O)[S`?s%ă8 ;.~aulnX<8"Fv"ԢɜeGJОw!$-ZZysxrb/OˮBpۼ'{P)ʡ}|JIBh8 Q+TrLvf|Nu[8'n=, 8oMA b+C nf y.zm^ #:.- ǔff`+ &3.qIQqտ ?B6S|`IX<*$F8FPZ"zKwpP}3Q]We+Zsfh=w|Vae.ڥ7%P E |Ғ( W [RpHU4QoL@HO$ꓴ7xa*q=ntJ0˼\P"؊LC-2Z, w'06G5ǠMjؠ}Yxԕכ!SM_2E81!i! iLB^~}6j(! vHu-%"mgeO'GiI^hS9'[ ,.YoRK`e,ɖLg[XJM8kq.u#;, Sa\|n]ԤADcFhjP.`;^w@P= '1zs>G/P4X ,ԓs(2{cO?zI-;CXw/ߪu*ʠGՍJDeo;>^i$Y*GB~-_K{6;8N/{T2.it)~j)qYq / ^[#$@ZR }d(g̯紏E"/2{l,)ZהVX>!|p>Jz+x*A%Ͷ!sH2-3 OeM]V&XX6FG_q M?nPq_@ dG>-)vM**++Xt"hΤcǚO?w"۶[Y5bɀc)FWUYWawE-,Mtgڨpև$e:(tN/ Цd>ƽwM6e89*h=Z(]b2SDŽWM aY]-Zb{(wM^ *`Cl."pffU| 舉}8ӎt mW5hfr7Gb2tyg;l6ffZj1@au%XB1)_tP'(1Kp -r;}3D9|*Gb$2>K&)d{-/.@20mGPyB;WmO"M6 I '{< DF/",iU6e/xeL)WU\3ZSxǴh;#RU5B(`X/Iq;ä6bBq,^1 Jé\ߊl\*`9}*fS9F'V!*&ƃZD<&l'"uMEb<9- 7K\iK 1Kea /T}GpLjYG ._ $qrcsWf QF%h,t*otCBe< >+(vq-u|;_Z\sj0Ej>Q= O PJǐ`$+ 0ϣ$™t n #sdk4touѡLcKq&,-؞zKKegc$& AiA; rٟ6ҍP] 2T4kל)xz)jᜉp+RGu2l"[h 'iuh$Ek~VEĎ\K=ͦ%`%Qpf<޾[Su4|]Sљyoc*9dd&I#ZMʲm+3( zX];Jr!k+^__H>@ 9kWhUDt汣𓗥Z^ |HƾvD)l50 . `P- cΦ _74 !Je yLsѐ55k5mRYWGJK/l(9ClxR0jkHv|_3+P&m6nM6Akns :9IDP$p3>*1gG~< {CC7nwJ7:E'wEvޱ✒fj B5YHW/JG:wL40)酪H}~4@/ QO"hf}""cqzc|d!\ w{Uc Kp0:6Q"V+`y7+0l`wLC6օXBm%'vhK?2ұJ /"YiPS{RpWq UZzwH I']m3[/nsT0``{CQd$6"]`Yڱ8XZL7`Qj%Hw~Y vQۿPFP?&uwNV[.E-W!nցjs۴yA%D BTL;8>a:>U;f񭮬V3 ]X[-0Ɓ9 0Ŀ*mFD2i2Rkޑk>S?݁G66_Q?CBjǼ61 ,:ͰuF˺%߽~(f֘T#%7V}E)oى!SnRg/E$E {mɵOEcn\xj@:j<_%"]XBт0 5[`Is]M 0an߇-V3Eg:1ӧFpʕE؟aF7U'XlЏsl5Il4|Ln%gIiބ_?sӠnhTU^.b$؋Л3?d6uI}lQw%sZm6&'4" 2Cl4m*+>B5p1Ƞgh sI9M)ZC @uzUdWO;'$!hʶR:XKОCSR-lcqG ?ԍUUe& VhUM;m J{bof!tcb%uI/1dǀ9KX^ξ^.o2"ڮ\.H'f)Q\I/6tݐy3[o!m|esJL懍?"q0fKxdy>n4V#SεIPLMg Ύߝw: J5Qf"Y_3I1w t]y{XQV$,d@,;0oIHop|IfJf 9#)p)oB<6̎f#a|1򹄏n2^p6 x5?4wHSZ4CVpyoPQ#j3@M+z=HOHQx=TzBS¡^0 k= ڷ]6e'_޾ yht?]/ DgRu`3NޏUf@lmDqԹ#0vuЊ݂6tjrY4Ddf>%DlRLEU)EM>VUO3)w;adwo\c,j0wχl`jUᮚEɋD\ڑ'Ǭ̧+XT]Liy㰞\jfJ^eZ9k>V5ކr9e]˜s o21/Mj,vDfn؞s<xh$7C*\dgIzW,&]᪙hLtO=޸EI3BR$:atS12ߧo'h>ESPxu*vG7# -Վ AXc'. &yTr8O%0{HY42V(ÕYs@%=\qDU&V>AsVzf.|vȼ}E $և{U2;gB&h7{ ޢ:v JבyB$OGyG M4n}G6.y{ WV?ma)"]<}1\ʊ08F<#͢vOkQv$N<\n${' (#QNB }մs{&ooz hnִ˗[?<MG73<%2zM*6[c^Bt4H H XW[t˽dENe sYފ`T3TO~(vG5:N}%îv ߅jF2 ^,cLm"uu;SjwO#`OJ4AYCȪFrmԺ.hO\⦁tkP6[zdb{4tnxmϤ5E+,7!}iK`sah`6{طpFu1i6W0.[bh/}8ݢͼsYbFLϘO?a96ʁeD)m(@gzmuM@7 BY[ "h$'H4 OPwgG=򥭆]X9/F'y%Qzµ,$ c^9f+zUuwŒ7}\&C'𩼚.kpԲkYaz(~p9$ yPPȞC'#V6}6B :Qa~Vrg1rC",=ηhyiʇ$#R&WWy9];vha[rC,%R o{1N{km0:őrIM,?OKN1UUyI1!͔Jsx$_h~vlBfXOCq;~\fiaevq)턖GF`&I|$5#$G]Tn4EJpJ2]w#b!z.dcb\muws2)&b}/RXB~]t"~xG/$cPx)Ռ?\Gtq9ɸ5}@kvhUucR%!"0iNP7<ݦ<W)k8W䩂GD%q',;Y(5S4wncQW@Qr$Xe&l͔!n ^X aϠxvA$.% *t E댘'h,1'] '>6LSՎ"xHA3K%ht*hptBѣuʄrܮPvV9r*Σ ('!EqCEb;oם%wIUM|V_1a N>ȣCDJ( ?NĽ4n`ɑԄ nR@ 8{sv+p8])I(nJ@=c+g.=*id[j{eE3 ҹ9ێ2a,T(Hn#*l)F!t2I/ŐW/:5%CYzv(LeيNz#s q>bm{\=Ήiܳ^P{L<Ntk#fXz86=0'AdGɪvV( O@xAeG-`‚A X[ fRl WLi\' S$w%k1/+1M4!/%iE!_tevP /Gq"xoݫ6/8? xp gxZ}ފBY152ҨP1. tݮl ;WX;NGEiVeؠD"oHw$Y}YLlx T]$-D4geY^S!.vh~]ΚU!zK(#E\TNr3\Y#ª Xo/멏aBv#Q/m5_6x{QbԤ.:TJQ DAuoUXg;vL*a!I"ܲh.ki>im F)ZXp(ɄgE泸q35@av70ނdT _&;RfE}\צІ6PVOM*>q yZn+6SFhe:sak>+6IqPyb, O ߸f BI:#S!w:YciNbq-o p{?$iMpEoDw.9T'xܨ-D9,`+/\b7[g~]O,b~qFv͌кKė荗_8} mZ!bC!M-[p2qZ1iC]gKKB@58ǹ0[%2ٟ4?lS8l*Yӕ[<\ G7Rˏ͜&ÊCƠf拦Aq^v4DlaRMF 'Q*0/ -u/)?,L'ʠ20oNE!DZ]y΀ ~#Bev~ia6 cλ 1|^!DE^2xk$0Vfc*λ';u(lQU] ֮=87VӀ.bj6x8s :KFF S%S,haEAkc"fsl/σeH2P8of:&d'=Pz_#} R`/UϤ b#!z[,LW\8\),> AxST'3CD # _r┪Gn/+ЄNe0 Ч\6SrggV84| g:C؞x0ѱZ(p )j[;ӝ5]]Dcs~dnKxG ~2.NLPp/^,)`K9|fUY6jl4!5vТ漎[8vc#>eUߵ0o'IGg<Ad؞G "_},|+FYr$`i0C`xeqAzX9W^y{L[RX>c_ӑJ@ qbu,&J񄋄Ø*ti*dPh[;Ɣ,h8C4ga{뉇^NZ>B]NI>r1*`LtZynYF6*rlw ӀbEf2EKjXJnat@Zig LXDm+BhPhIt9"/H^<2>pR@cj2D`?aDsQ{c0[ڰ¢Q)#qe4"C~"Ҳ,RkU8Vj.愯pp/ا?glW'ft mޝx8}bJI+Y`^v_l?6duvh }<{\ ,so _٩,FA.}п2tCӲǜ..wPWʜRFxT.2'BΓm4)T5uMXk,+fCzM+DĽB }6KZXݦPWN{L gg.,1|)>#뻈~#-RT$dO ~9GG$%Yz\P!zw A*@{A Oh쫰o%hЁEZR#Q-Oz6'[k[k ns"iT~{ddC0Ma#n FU9=0V፝.tX[/D`hapEe(_i2@X%c-vJStvs0߀&y3)M cIXFT%-84#|KuV^`2-ޱ" Q5h+Vazy =Sܢdp3m; xS o>T7HxfnԺ7D?yɓRz8fKD|TkqIoǨKA$i&.%3[,~} <RpͿ H*q+d5h\*)&W{`GL!mi|<}oT5Vq΋rb(F2̾#S,+*uu}!S&}h۸y>"4/ l$VW*hؼXC$+zԠ3x2):rDFqD\_&]JYCFILKPy#ɹ)js]l;VFPD^ f1~NBR4 EcJzD.2rx`ꕣ Ɂ4y{e[T%.g@ ^%G**Ȅ0#Zlq5L$훦YC–ww=Q앉9@q| Æy8F:gT;f-\@uwҿ0f :HtV|yu@ p8{]abo8 wp7\0^wڱyيuhi]rpL"`|!1)Om;<4 E{bZ ~ }V{SxU=PPAe:8d˛̢nFpa fbEbg)JE[5(Z!EXպ<;lڏ:u>>\T.}kIWt@'je .ׄf%e4O⼙8 j|e.2z6or)zmufݓll5W(/90?#gDji"Dc8m@ˠcDG5FmM!R/ icTZtXbM"Gik0ZAxoT#x92f7`.V'\.UYI+ڐptcX &T^AsñٙާΛBN7w֦}O%(^"XE)˙\fq Uj }74:H_H&GZ;RI #%!'zF>|w ;F+'SpsП뎜U%y$4~w(¿'Rj#s$?U3l0 B{m̬S,s+۳po)f/EL:1HP}tkJʳ!iNdҀZX&; C%I] )X0a~ckb"mˍZ 0tx- k^ⱉh9 q>o0S~= [t b֏`lካo݌14s1_iӡ&Ǵg^eR~/j')_|x@A:BSElܤ3' b'h]x}sU_T{IOeCk%@ ,FW} sDt_2Kw:wx$bM8_Y,&C0ƽ[&'dU>c (AΡZ;D`PR3~k7v;*qYO.F&^ig xϢ2<N$\l!`;'ܟ h) H7XppHܦw)BZBO/ m VWł!DRSF'2{K݅.8@>|wć,vv9W{5Ĩv 8­*Q[)?tiٽmHc_>իe YgdN {+Cb"5#u >iZ97H.5>#, Z?Y7 d1~ ȿ\]ay_? {hϕ 'Rɂג\m͡Ĭ cNϷEޮ 7l?щc;`ί&cyR #ROj~4uu߿p\,uL>LBi`Q~5r1޼ .ZP~nr S,i} U@_Sh^d]dߌ-9K3>P;_0o( m"K7v?[F!_Dj3-j`њRO)et0XXMGrhS-0.;<O a-INOmgO `;JXAT;-sP=+.4/Qo"G9@\ޭsʌ, ̒*!e[I%}8ȴTqS`lߟpBG0&6xptbqդi[ N_Da|9mk8UNoϟE(6 _u" ƣ#C/c/CZX-G+ W&,,4n TAsj3[0f ciɝff3vxխyp p LleSF1/@v[N2GCެX\%2!T̀ ~8 /r.\[`ƪ*.MoSdc^ 6k,]`w=ḟpI1!UOT@tj ͤrR.hz%[7J]cYI@UŹRXCYT(^&p ei"QΗA҈$RN٠FX=˕_Wn8֎E^"hl+a}i5hsQ©6)*@0RRJ5TǼ"i L,94rG"wǣgԹ)L `l'r:G+t|OwBaכk|Ri>i+7.'t};~?2<siZ.lc=;4ϡ|͛C%I5МOET+6#//xB!8p&#\&+G%^C_7 " <[,a$ V `v"I]<ޭpxq7[ Hb63"--mw>MID[;h\sbZ0-$8p﬎#G%54 Xc^\Gm{\8DeG'+8׏\K¬(2ntzV9 Evu[ijxWCiPMgf~\WM i Ei֊~$ח6ceUP3 ЛEz5UJW 'K"6jCp$-f_Aٕ~M\zHWr%RIpe۾V'JQgN3QPh^]uٔa:!7_' =H1,:]\Ɗ0~^%peO4CtIsAԁ'V#s}r@&Wo KRUSK"S&nJ0䟀k3L9!|.˙$p]; LyoNdBǪ?qA=]ZK#O\lK@8 ^KE950*xDCDoG7KjH:[A !84 Pheo(GK;ei:7@WF"ڞ)ӄ)QSK~ XȄbCv5;ނbjbY{Z8`$0LRJٞƍIV ebJ"oE4BO?֍Aw*3IVF1]iWXFxڋH|/W^H_v'Fz\{> aX cj ml]D϶Д6"W 咂EYhndJ-gz*e! #/{Q (? Ĥ{j-"aDWB>ɼͱdf\Z(ؾG&kTRUMq X#Kx{4RP84?euA-XwAƪ >{?n> 'ڂXeEmCN[%3dS KfZG%4ͬFt][sK8ےo@ZxFנ?mV[BL^}i# 31: =nboM]k^ RN[_gwL P뿠Py"&aejGGV~zixx15Ey#vOÐTеy~ArFncYħBM#ZRU 7bdw z+Bm2bϒ?䏦xA4|g.͏?G;h.ѩ -ǻ]zIac}^@α]'1q*5E$罐/2wL {l?RX4s[d1U^׋Vl ohI*%%ZW_Y- 1 huwܗv%`[ L> LeРGɫ_RwmDzĔݏEgJJmJ{Mtk:ȻwԑBbiO2ϵ=@b087,ۍ/HARl%211zKXuWwv['h"o~IM,ri2 mBeLG0_T[RB&*LЀ˿=ѐuBy;w)t6DVZ<@=awjߜa+9D) +O} u݅hbFpE@m_L^%d }Xn 2P*\G%τ (lZ-_8xU= ڄ>g%۳sU#6q*9T}5H԰=pfpEͽ/A9α"*9B!| j4)n/';'36`8=b2F9-XlRLQ[Z"⎦ȥtYqmbw쏘xE&YGQBkڷ=`Fo?\v_ v`\!>xv@`{BZRsQU:TӴCr"+/. 5_/S9op;X|fhuŮ>ӌHvҴbAL.R{t>0hۖ6XZΠVY@A9dA!!Lu.x ԱFqYkHM& /F@PTf4jEXѓPZ$>R"Q_<0=v5\A]asBC&%8r {_{ք&q}}H&/&H #k#O{n'0+LEBն3@F94fRo^`AR=ue0#I>&tG,TAK  ‰Y&y= +b5lmO];h$}I'|V6r;[+IŶnնhCa`/8cIa+'uavVp <븧'phi٧3F آvej~*=_{ּ, DwP̴}o0YS+T@Ft۬gu={*5l,M/y#wEWY?b11y5ײ,y3x0Ag~wX[|p[Œs,Ó$3ii֍GDF\E;|6Lv hmLlΝ~zI5J<>WZV33؁oY| QHAP73W]oQԗ ϝ\g- x'#ȲQAYRoeϴv%Sat;MjpFUڕ zVT}&1r{( bscJ;ֳ{JKn{z{) &oLF]%]0 5XaN1-0b7^FVOS#OPkdk/u7 fLiXiJ7pV~L"),=v|>6UL^r2̓jf> |]O'3m гjL+%h3\sX Do[7LnZ|`3Da!ןbCόȪ^8㙒HtV. DR.WI=ּCŊظ&sꝃASs|>B]a|Qj l82,HPQҲwP=WN.B3cE)KW{-7Lоk%SAn+iD)b\x ][t.UX2$!$`IJ]ThJ sdYP= *Mb̎n:ȑ6BS9މ<7KW?⎔_4Y^ ( (jѬ N{ EEQL$Mc:CK=s.̏GdhhLl{vh9#w|' Zbzєkɠr7خ`nۘUtK/DƎ=}O XH'Δħvڬ)U]$PxXYt~Լ;=·]ݝi V7 D6>b%B|*=]kq14hpȔ-q_W.|WH Ȕ+g~dx6OGw[R3?47lf=RjϢDnky%x-,F6*'`MyQ!p 3ɽ[(a]jyi\sbn p9LE3&XLx8ȡ9ଔXqHG2K/䗾 ˫S$n{ 5w%Δ#Ċ`VS)Y Glڤn9U8 FL^7b)@Sdeu-[}/Vu ȟ7{ |jZ O"S27GAzK9 Yw/ug-o! >m' L;M6ס|VFnXh))@ 7_'u|=nsOO'#d^ynYcVh5<5 y68Ya{gR@-;i<Icm˫g:E%Yi3kS?"yƸ7ic[Xşj{J_^\ VcSS;w0FCC("ԁwdy+湋}3'D2Kk1y40R&^HE?\ڒ)`{ 2jI %3N$ٰ#deM^c[(Ԯݺ,/N WÕ]wlNGUP9`2ɐB*촔p&~z{{+KsKr' $0JZzUOrf21d*4V6BC ZUv>ӑ޴IOȂl.͆ZYxӴG}8E.f+A}myW`#a?"C ;Ј JFκzP@Ǧq !i\I=b(뜱HwJ 0C !bc!(V+\rG~aSil#ZRet gUzw󭺲uXG oEZ2i+˾w'R[5B*z-bDTzeG6!:丵AWbۢrd dk"q?c`13>Pj"$z0|;r fsmNbAkYqe Fz^ SS-լτ :xEa Jk4kω,(fh$ȹ43-.V.'WŖƉ|[M|:*W6eMsa !\be͙F89BE?gm`q@RxQ.U篰[S5fՕ>*[>9R%+fnU;`[,n%\23Eulps|$\7w<𥒶 [h:v]]^76ȔxDpXy @ܖ"P<WdeЬHBT=L3^Oozgu>k223qƁ/BHvo{.ծY3c/Xđ)1s#D 6'P`ǘ* f(S_aw~mW[EHFR& g*g}K]lc*(2ZXB!iǪ_4cbJ\Mgu0d]V&h*S2Rij|P}8=Z$n+_$E2G P|՟ʁ`y8R9}xQa{bu3fg &# #u547wKt­J#b$Ngzqao7%hm2Se vRQSφU3(ȝc~BOz&ip#y:F8ޟl|.ʉ0AbgἌkUCZ^7hqTD!,N!NRQXĠ*zZG2.G@!yLm>b*S }jZɒ1lofm;+}sM/V&~hV8tgQ ry*Bv?JZ[Q+:Ӫ5 gMwQyBPs1{8 -`#Wv ڗFBx; Jܦ`n},`k3 6oU1rƩis3dPv#h|LE2x KZ %X?a+qK o\Q[c\~W0=sҒK=rBႢ#^bbWc,:L'>.Z3签?xY!y`tt]'Ű<t[p@?+h +$S7 L;"Gx3awRp6w۬+Ģ9o9͌E@N싖/PK)BRQ-k~X1sV  G5ӯOdҊQ7\BjMefZX*(0363h&{zwo9)ImՓH*C#^)fz[b_}U_;f GƩr~Hl P:] ԤLĄ{2&WP~-kbuzRwj;1rӨ֚|' +x`i>"a]fxq8У(G(-JcJRhPڐV} z{a맙qYrz2?2kn.̥'0uLUVH"ZһRƬ1¹XNyBlTmYO-}ި'n@c`cl1x1f[c=]:} @+%jYAb!Wj'6\Q8:d'CE xZ`IӣOy5(3`MpBNS3Kzi|7N89!XT+""sO[LL^yXT^|4\"黎.:Q"XGHҖ1b CVUʿR VYϚێim}!nT-%I1b2ʝEcLjQ橅b= =B"D<2OacbLhkO 袆(Z6o46ksyFf#v$?NMҤˬD[_#xxc{PrjJx2ezװ5JmepyŞiB:Oo= Xq0IXK(D Z{LƓ JG$SnH*| {_.7QөPTT=Z|o%A. oZ Ԍ2ƐHYѡ\B 8X4[V߅D' |wM#,sJ(%sAK5*bn`ϳeps*zC+r!Z$Fm:B,&8 K< 1<.Bs z.p?B$F7L&pj4cv`7؅Nn%o5l̩R-S~B+{"7 9;uˮb߲ѽ%#u詝E^HOS,Y9m55غ{4X E Uwn#~tٰsg |kl|Jbpl?mHD!@1Th2Ew) !AIE%? $2LɘZ.T`1COT<2;wqp8i)cG2,o*&@.HNW mB+bp}BfT4A9,DiSJ\L&oMEN S0(_Yq .W*U&7Ha=ۛN_4۔B&,(n/m˱ދWfq,N o &WBE-c(lCr#Ʃe77 Gl]hlq_6w_ohrrK)$*Ec//?΃+GhС~^5Jf6놟j~Qɖf`o /isP40PWC+u(y`l Q:M/i]be>ub$uE{xSy~^^ Ϥ{q3{֭.\^=2/z%!>vii}=Y$~W݁cjl'0,Sǟ5^ceS s9m;Ǐ ~kiN`PȱO={j5M`3`:U`y6do>J?_Ҹz'~T#4nb.6dnD첵h bM]á419rϒny4>|7¼2lTs`w_ 6>-N8:j+:4'o@E0,x^&]\3COP 28]kB%#gj5TU7p2~+m/SaiR'Ȁ~dsZo!n$y9;0Lŗ.twBmU]{t {ro+ em߸䑳e2:񾺈 Svid=(meax5d q$"vڹH9(Tv%ڬt2ggD,):pJpcSR6S_wMZc;5Յ$-'˗`ty0ۇ#DEGolo-i_%K? ףx;p4,+􀸸jx"&*2)"kz+ dz{Œ2Pu!p|ZX6^EiYR|7!3` ;j.{^gMp+?ޑ84(Z w܀{n ī6gz$1N:>)VCi $ҚB88UvTFaH;t yiP+宽)w*i?&BՕ8|:8#`N}ARo?P6^j~)+v 0^e$ַdHQc.T5>x3:oM=ţSxZ/󃫆mύɓqmUgQ:(OLJlB>랬څᚢ$rZwx .\,(xƅђ]Ԛ%_jGws_Ӣb5F6_$ñTMڋ}׼y"$Jvsu:x{mϯg?Iӄ lIBcLFƩcWjaVzmӅUV]ȿ;P[æ.֕OjY[pO>-V{pncEX>mE㭇aNpu[ʞ[YSbҖ=l?֋Y*KʫTӦMVP++卽6zdS_sLD֑ς4 D m)6Z2n&LWY$~h+ 9л`l# [w(bLUǕN[35(Ҕ߂]Uk)|6PQ=k7ZmNԿ r幕q!ҵ~ Z_33ΩZ!3X;C$Vv+Cs C6taDHRHUƪJܲaN[\.)/,8qof>g!Y;* h:gkc8 0dH3/Eclu[|~Q@f x֜oҒt>pptt}L풞9 Af(Ԇ勦 v1Ph4Fs݇G*uN7(epsYj I"WIu ;Zg;۴@ 3oEUdje ^ź}tN],ZTuq!BY\(Zԧ%qs;n"C5Y?:RWʀDe(N\*KޞE G]V,`!FZV4*YQoU|pԭY6<3Soa>(bB90iZRIȰ,54$2J{D3W>?(niLywj4,G@ȥ[4 '逷Z'ԋD@"0I\\ji(V5GoŸIQ}w=drͱ<J rRK]OJу5d qN c3 ٹaI UjURS/=T1JX-7\N&NM|PyG0Тmf<o@5| ^] = bY'V-19C_OvVd42Գ q=$4Dd'T#cXv ' 4j#(0FDy,jG'n5zܸjK d9Bl*#wg3 (5cc-$n $L#€p-()J:6x_e3)x1'.zABTZ| om)B7?d ֶ$OG26G oH09aQ= CWWH3Ѿ*2Yͨ80n}qT#:ZcMjDa?E}}R32Ļdf{$Rj9CfF,O&HC}eEuG~-(xRR*za1"6dJ [A>uAFSٌ"%V7cmV~qa i)(s_. rq9 ^П;[?qؘ!WS%JQ+饭4r͹Sc|O)!+`dQ߮Y@`z/>pfp#c9?jdy{"88r.mB[KwfZbk7dS#/1urar ", n߾ m6>p0P ?s`Rd>-zUNB!9Iv%yoW'O(ʏL^݈61R `wY3B5{f_&2%xh,H뭆F_6ЯMDkt v@43zɾߵ7 㚲4;V+|i:) Ok&'N5c@c3T#`~ӑWs D%DDXi3ZE&Lu"sd2:*<4osfYw '0~%"cb e?V;"j,ůÌsEą4A'm 9ʀ!83e{8*; +F-S2:jD=h~5̦2dJ]ZX:sKG.?yb:mϼ6锃a6'ҷ%D^ 1룪?Ƃ\cu%nÆ CG7.͌ xoJ0 d: ϊU6AdW[g#yd (T0Df.Q_F%6C7љp L"g*N)0_-}àL9,yf}`oVhxZz =<(cAǸN2";[c^LD9ed/wR|&YsxQ4_R f5c>`qɕènIפ"c]z0ảE[/? ΣɉWm MWb tI5İ,IdH(R$޺IUC`XGt#g @08ÿdfyOĠR¼W'kuTE9-Ro#qp|Gr~z<~u{إ87۹w,UwfAa*plp !烣URlv/ȨT/х(yqyаE+v6S`j|:pU"jJUu'ۂ{V!ޗrV7'(#dޤeqx؀m*cB^Y7t]Pů 쉏 g^_ʘ,AeEhvbQf }+|nW}N =!VehR. cR0xz}VuJ6 tyG[" lmQ2+*d;fC]rBҚփ-"=RGG.!WMiIXdBm3[Iyk()QnI*ҡ7}iT5iIr6֝ŎY´q_[0W OUd[ф(Vǭ#JgF%8 FaL g xsY;@Ť;pOxTf  hňMߖ ƵkÁOp$2~{x[qޡuՀ&ڿޮ"ϖ}{ ؤ`@ɋ'Z]@N2ZӪ58e:שn.5à^-LЫ9K |tbEVFLkSt{N MLdnB:~#9}ijP(=e`](rjVXw[)g\I]`޵ AQqep'K ߣΫx}c>|0$Ɩg`fgQ\, |á$'{?՛)?~r*TϷ);v#0ڊ_. Kr' q>&~+qhWw"tg~Qb`2'YZ<7,dNz} Y"d *tf\'iHv{-CDʦ*Lʙ.lrOVSDzSgd^iLSP5Sel,-,:r\nu~[h_5h+[!߬$ߚpgjr smo(heXH0xo|L)2I&ڌ!#{z%^)foN[g?μɭՇqWJDIT#,Z:90V aG ~4 OP8sƆ̅׻]7v-3T2bQ9Wl|(nyHP!e2 sNe*EIZo_'Oy;Z[i@|9ל jϵ_YaI(gNM^7Rł 39;Xam, _ 58XӢƹz,{>r==$Nѳ۳hzR#19I I-S3tߪ\5PHT+o U^.gbT=(/`j_vJ32| .c- L4W_q 0鐩? W! ,)1v% l}(ûHš(j9SA[rT?[c]i (6~At%\_CM+ I|{M}p.Ӈ0J.apZ.V0GŲ,3E]S:6ҨR63u7FJwFZV @ Iˇ, Q*3E$pDٞ-fgP-E*9a}6cu$Ö~p>X8]V_}B‰爍@"ԟ_NtRZͮDRjà _)HaiY\,9(؃̙z*ƕ qeIxC"k߱WnQ, Gb3)䃍SMq  ]OSuxH"YQjJ[b~k gsrf¯9+ C}˰jju 1X2RC12AX( rŦeRgQG;͞X~Ж]s9ÎSRp,"T9*P}ʘ8"d$nHXv?qޒ2){zH[G x eAg>OiY+볆ϲf2;jzD{5XllkX݌ݹ)ǯ{'qƊi)S$'ne)䃚xf<]%[n'tYhIВ+/WU *h r,qb#J@:Xv@J, .O[ i0O`f[ځi?nn$̅Nyg*g|'V: t‚c70Ɠ[7M]凊6azLwvad9Kih$DAh:oK!ZL#ziSs*PC>q-.?SET?-RHҘc\jY1:joB`: e0`Ī`!uL W(0owRܢISޢ|Wz% 'S`v}#ݬ`\0Ji2i!XIn2 h.3IS hhz0RA۰bWc|DU"i+  y5b7UYc{o9[`Nr`ZqFVE]O࣯\/,F u6)Y9J~@FPz#8Q!^c}/S/UwjۛԛUG&?:Nr% >۟ -",'Fxg=Mؼԛ-Cjb刟rXW& 6q5VQ sCZ5"b̙<69v3hPdm2_i-H&r}/;;'ek2LY1Ki4D&Nb<]1e3xVBy~Rk P4J/?ev! o*\rdQ^ߒ/Wis>%Am3O-Ux>BT:I!T+88b$A[{n/WINs qה9=9yqs< ፔEWŠAFƩ:WăF:P@[d#3.ީ@87vWTiiC$hO&',Zml͕pvRˠVRioe?|0KG $r_G("ŀԛy jnP ĀB*=S j[`#„4$ BҡA܄UJ۸0es}tc,ofvQ)ܛv` V Y (b۸+,ycfMEi5E3Yk!ye$1[087_ 'aMT4ؙ vqsvKDh~ "Tc~34u;ChT Ws>{15TXWw)>,6hEIiԈnM8W}DjFΌT2Q}g7et TJs1EGKw9;PXiѮrYriULF(IeMn&Hޅ)ijOoשR`c>+ <alI'ft*F d܊?_0i1bAbBG"2Ff#bjԽ^=ĦG{T?]YP _KA{wR к ÛSI#)Cx|;FwZi P|]| @BO:YlUVfZo,k `k f%N}!2VF %[Bv}G I>'q$0r`%U}Wo]m~tzuQ)sT\Ɲ1|*j\!-(%sRGI}^~7tJr⟢䅶^6Scݴ!eih9yA!z[7ŤP Q+gO_Qcc~> k5wi|fT\?S/Pdzlj`pڢǕ5ྍ},;eDeN7{"_I薻7{ei{9ѩ1.fL;$׫.T}t\1j}(6_`NKBigMr_-/s8DOHq&k][Zp79I-P2^uPğ$UO%wPD- vɑv|R@P9/$5Q ũl~ 2W'4n-'gc灈гg uT#rp׾R8bJ*23V/.=)Cԋjkɯ,:w TS+ROKCsO۰.KTvɛ?ᔸd>Ů^g!94'Y}"!Zb2%(7 y7,, E3_O7 [Hr#Smg 7!J|3E0H\b*[dH)NnDoBfȵ+H&C4\jpx;^P?BeCը[S^4+@ HIh5MK.R ?3䋯a]^VBÉULݷ-Cί{(2TڣAΚGS_C9.f{N;بC.iүqUh߱g23?I0.3%f3Xj)ʾMh1 DAΦ )Xh=uD#]{؍IOyNg [wS\,nShJy|K:2cz̞h~ơ\?¶u4a@E[!h+x׏eX@k20OAU  i 7n >(t\O 0Xˤ֐t8f"یQԫJ^ߒUTh=W^gƕD~)(gY4I9<$",\4IL?$Ӳ:_̑mG1rmy8`YnA}ƙPQ<.[rUYGfx! 2|֌ ՊNMxV;^ob]QJ1Qrf_ Qen3gVcLȜ*<Wl_L"P9x{zG"~.IrD$@r`Exrm?DBys  4w*d/S ,TrWbVU9!4D@f-yMٍ7#[e=1$ZU.ʢC:X]Ԫ~XXls)˛7w|')GWu_8/F_) P߲:Y*(2Ex ݨq1>*8[=znqчC{v竝ȝ0*L}OzI=Ȩ %Cfdc_pQ],;#ߧ^䲺~67OU#g%j9tMLL2$+MRނ"Dsw6;DXu?jpv?U5c^XngRbߧ !o觊nSgO *(=8*_ku)Dm wDK%WCssHn}]vIT@uJV`,bQ3kޡ'}Is cYA2li=Hՙ4J.F/)99,4zs7v[ jR\99Ė'Gy`useYx"a1!(O13/*C__o"~4qmO\ujƲm;CHhaHEt|, ?VK(26 FUI:\4ͨp<ɋHMg9GXYB&CGwzmJY˥_F nDb*q5:=jm JN0)j&i: l8CAo6 L mːD+ ycXd ibQ9 1f,J)+!j׊ ){@aCR{Nwo"/n.IPSDzp >u>NTv`}f D^|Ҥ&IDA_,)A~tf=G|l]cw^0 /'Yݮt뻊F {˧m> 4nѨMZyljn<+ @|_(+ ph9Spmه|"6 ^^dzA~Q\8 ezJEnXͷ S"\=C^BIuUmBm Ȝx m ]B_Ax3ٻC[ zp_\xuwR0 u'0vMJ,!o"&ou3* Ѷb,Ȫo)ޔ*"M{rGff`DgmrEh!:1IlHQ_Y)ֿ̨r:] 8d㗧rNhˣaY0 ;u1XnP*z&;5_!0]|߬c26QH 3oqZ/Lkg4%<'ޔH!F0埐lMzSy  b1YF4UW|E"uC@oo^r[ҹA5 ۔cckRka"(V#fhys""8*AcElk 5ࠍ$ϱc:R\JbuP̂/g 3ΔK._vdo#CX;K{L#gr)R;ǵ8@$j{<nl ݿ w`W/0 (t6o7L+_B/`E #&3W[}_Z xx6h~(?&<0FBjڿ*V& ,5R?s)k P_µBl 㮼z3}?x ͳ$vfHg\R]#$nS8mⳤ8wQP= ;kbuY 2\8hX뱕 A_>sBꊞGJ)z3YŪlq<JM {K0[@iru{j,p?jv67=]i[}X7GDlc"OO{1(7Qg:-iYB؍`f%,wKD/AJM_vNAd&/B\9ʹH&xp9[Hޔ>/M:yWm"Gr喡zyfh|?Z05o̻&?0*Et7џ`Y*@1.CeuT]+[zщ|M=8|cvr}s@moL4TTҸflr]$3',,gN5+ V 2aݸV%JxgiH,A\ iTZ ! z)@y_!0/ihdۨ[f'V!HLXɒWl}ӈϲ oGʺ^?ހ68$qRUwVIv`Y)#]:9ZUQ_/PL|=(FiΤsn=FLpn KGy9PB2nOe^@/@o ]30D%{;yYjC؝`d+S'#Ȁe*]BۛT/* W'vtr@I|-ny* n H{'ъZjH5=4|EJԉXtnmp|Tp; )L '-Y1FW4A&{0'&wT6+֯/;j.|uR@w+cdflл# L?Y@jddh|rQtǾ;oQ =?q\"F9f P7#̢ig'q陰LYZAA} ¥n+ruYAiԬ8& MJ g#I|om<"epJYo7 Y+3uvt(wO8]LA<.Ⱦ[Dї8hwN  oW-9 | :sϬRӣ|񲭼-Dm9Oe=*7WTz ZfVsfkF2qtFA\us3 'H$^0P2Ws۩"?b\6W>, 7`;k7Nw!,k/IYihZ#QVׁg*2 jƿ$h8}`(0x18W lVfsa4u*Lg1ˀt`e=*mUhf+ַ IGU塏‹:7ImU\_汭̯݄Y&CճSEaDj%2?*qDg^Jh3& L0HYl[n漋.D_esByg~O?v(3/e;fqꙥ.y.Meba<汹keS$(14B%Is^U,)wL$w,>+q+Zr'z_ow1ؓQ#Kuc9-R3zWwb9=@<7 :0ʟY"\*(DƠ{nՇ\w Zc !w)swK`UM5$t"͛9YVTn].Ӗ3$@#;•ke:MOkvA>OÌי8XYDl*4SV▵:dCuh~X@gك?Q3}H$LLxfMg SuBv<rмq 9 @Ѧ%/z1\rHoO 7yu-U-1@k CEPxibrA BP5g[xs xCwB[q> 87"PP*0J?[fĵ^MS}jAQ1X= }@)ö3#Iㄵ/3=[{w++40hv\8}f!?Mw~d`_9i R?.Q[ֺ%M߿KkB1fSn&qRhgmj=/#܂abBۨ,/Y< uLI"7D^XQynĽxK#S7| <84bկn&t, ?.sijkikxFnoOj(Bx\̇ݾ][KWuf2KUAISP9/B||Fp+Tn~ZQM.dRV8зEt+%\)=+#ish[[: alp=Lтr M力;,Myb4WB.VMmT(N;Ɣ,@u2~| sB̵Z)$*1}Jj%l~0MhLOq{L$AOb E6 ~).;9FyUJ1O DM#^Vܽp&7q`bOCr'tP-rf cF$\|P%^v7Wr4L2Q#݁ i1ZAijNOǭ\afpčx}Ύ]/jՄ+\zJhfo q8UB`O>Gx{6\ +*nG#b~v&9'r ?lu~i,PEgJҥEPrdzDh;.(P"jwF+8獃"z6ʅQAx=óMhx|[:S1,"4źG=ӂ`>E+ Nr4 ښ@CQk.7giX:غc&$B. -kR2?ݒ!P^J. iO[A4.\:\U{ZpʩV,|w $;/.Er ~.}vq*Xj) r̻`ռ:3]ƤZn'&']#,i?#L`kPJ㟖/FT|h 08B xOXGr ݡy:>L. Ӿ!שZ۩cRTtxi?{FyN|Q³tV]Onh Mi!K6ٛ#\Mi=)'}%>?J&AjeH P m Ǣ=~#, .a>',dV_LOYei¤u<G=ặ,Xd]ȇIԕ8V5핈9FEov|Ÿ%Rճi1Eo,\BhɊK?ɱ#.G20`? Mi6:jb6,+bFA [߽fO}SqdNPi ]~g{5]9N/^],R=l.x7_)WBQH絉yH0h3vҋrR>M#׼O?i-z㐆~" }JX)#nuEqÊ+bGt>\GU3n} 3i[2v0^W.Nd#h|h;onǍ_]m@eƚLae|MˆbScM4"XHΜ{SM圼~=h 7J(QP[+/s?q'_94y v1A8%J4Umj v<:KX- 6{ek}cהvo墼Eldyl.s.qQ,36$)9# Lfm1j{㐚q5cA5 +?Kn ~X`儣9DC#188꾫iكD=C_YGbu~}٥ȶLՇ{)d5֝VVotzKvDH+gc{vn~ƥ{\<&q%굣gO,n/y3 ;[~MSH:9${6\#0@C㛨R 6C(XMi9r+]]k}mZ|رI2c-չqKMPէ<VJ |P6qg H S@)tn"QzG䡄*8BhvB5#>J?YG5 M08_-zݶgYZPK!5w Fmtd_blkdevs.ko.xznu[7zXZִF!t/}o]?Eh=ڜ.+z8g†M_*,Z:NJ8aX[]YkI =7EQuyWa9ID^6촫~*tEpwfO"#>2s^EjRvNɎy|[9ma ;gXخd)ee!G16P;sғp7"6w,.c) k0`PxC35}anZEʒg_WL+ 4(ZaSEW>sKȈx,$+:&iBAqySotӓ:0{HY$m~;}Z^v2"µ hĀRʈ PTv0# ׁQ^:Y#bQfP5* I4,7S" .sljՃfnnW( bGB8BUW1񵠭4.jk|< Y mne0d!eh)AݞE< \9Ojl3B [W8 mWq&ZM`ic,m]rP٥ZKۜ u @3B+4uv1p#0Qfʺ^)W(>VӍav8yB7o@ ^v~Ƶg:5E-|&5H,*9oCadnSRbNӤ.B8۲yߞf|sf#s~Qy:[׀c7Y魔AFN꒒l9`{]X.Qc&ǒ6?^\e7uFk^587dwJN#aIǶTQy,f؀AFhy/_t!t#CRJ:357W`@<2p2<)K~6zӱ8[tBP?6If%1vLߝ(U6KOz0xC<,0]\ 78P0؇X;':'3_=&}F&=hms؀ %xٝkbحO^w2}8'^HgIT%# u ) "itJV JY WXnƦ_u1?da\<7I:~2O/`Ei2FbPyp%`Ğq!/lB뮕!9LE8[:H Ԏa U p苆_JMDI.[6Fc4XX; C0QQP>BXc#?}p͉&,FOSq ޹ϫXZ${9I$"lS`)كQw0ȧZ0.]6S+(B6ң,K_LaC1l? Wy^^ٴ`˚Hs|`z7%/O㟌-QE AVJQ<+Tj )D<Ϝ%FeGI,'X {dz.Fcw]?T) 2«IXAZx!'nR'Yxhz# I+jz՝t~U| I:{1c+ vהkL0G5A|Х4sg :JELmgⰨ)z C=OTZȗNJ U,?e_=5ze2}?e4?RuLowH誔m 3ǻ!s\RW-4ul0ȣ?2I_У#<FrSfs z<;+N/jr0i1"691f>,`[Po30 A:K6ZaCc9imbkG ׂ+S:)ک0bAM4q"1%SC~f;ۘX2>;:GeLV6⊀hj2lg8_=x M!FЍ!-򢺂8?z6JjTea49w-3^m!?(ɓ #t~erMf1NkSIp@05 vv|2z)>V+$ӷ%6/NSj4A*'#6&w=cFjzuu-$oyo0!d3(f^݁'b̂loW !ULX;VS./jPң! ?WܡӸ*`Zo|( )Ҏ&zió vnK?, yGLZqB\}dx.x#XO5ӜS+3 Ibi`rzK?+G\*EC`X$ƻNKJ+֜%uڛ:wp]D=6KIyg  ]准i}a lZy=KtG?X-]PBpS@NG},l`>|`_k (p/] ã"D.=]EڑSyOpnvjJP_zt e`j$;Z$>F\y}*jCK(BB\ OiH7('{h FT^_y"u}X-Y~K`ܔOSq)i7q†~Њvȹ&ᆢCdߠxA1õUqAl8/ ]H׍ Ye떵a={ƭ5@eRF(-)AA>eP=Z{`Iz9׶I"tp d,@|SM- " I溑L@T hاy9sӵírXp$w+Xy}e _OEb}N=3qΌfL"\D.3/gJEȗlA+PKӉxTjj}#YИϼR"H}eJʆao\u{:Γt!@LE)P<97:OA<1*֒D3U4i YOW4x ~$!,ܮa+]\;XAҳi@Qew%!8-˲U{.^H=Zt,gt@5.bDo0ڦ 4P!! /^ XmY86;$!2#VNidxV嬨@n PǷ 4J4+FmݝP̬& ^²yKxikx?gx9 13ٸ߅')W*t$/ML(UY>1W1A>8=VMb*y$ĖFm'=[na~"CVx ?:EovެQft¨[:y;re b ڗLvܴ\HHӖ, 96R^7ŷ}E$%PQ{! 0f'+ #9q3p[wYaCj%HUԸTc)8 >+fpĘU/+z+-FTޒpAh: B#JYnSYiՄ2TRi1 tٻlr~o ?{u Tvw_/ϫ HĆakk>Kc'.pv0H >QI\=-y~%!Ƨ,V|:]Ai17p,6T:d]Cdf>bKMo>~^[Ӄ;|n瑙#s7sjG 8KXޟjӤwnŎ!l&6ZbÝuJ@!AI>vsWQ; .Cx/j)r.]liySRd#?ThwR(H`PPcpL)d鴲AJ*9|&j"KLTN1M i _iF<$1~D|&;[iRDva&(=_X )e[؍yRCXU"sav̚N]th&ޏĜ&j[A/L`l>Tp/c j8R< pw4PFVC^j,Ir!%~8q?4դכxGZq+?,n(0CX=zס&tzR5\k{"x >5ѧ}5}EMK_h+jxVu#\UZO' _#kA7 ":S=6[{iu(R%`݂z qRD狮9J] 9eTzNsZkՐ)fѾ ^v82>oy\v;H'kzN(Uد\7Y!!N"YaCҍjje/ara_Iۥcw^Ms훰 O;m&բ'4ʠ^Tj;FKĤ1%uuPL __tl,7cRgYZPK!mtdblock.ko.xznu[7zXZִF!t/L]?Eh=ڜ.+<&#lxZlDNɀMݰn6SS>P5оObnvOdnRz8v)|>U<bN8پ ٬ Yuy Dz]̑- y)][kgdRyKW]9S9yQ8w-DW1dzqDt[vrۉjT,\]m ) 6u綎NjSw^2V*~ot(mQ,msܚd8Tt?3:"^yt8'~9Ʀ\)rC"gQeoD/;\RGq@4wFX1b&@Zh~f5ѧ5aCAlx #YBS%CS' ͍9l>EkZ/tz| $ }:=>8#>+4 x}vtJ&iqlXoXLm_V}s@Ѭ~bb36:cViI" r/RpL"ٮ5SI [b۹`q(\VK42on޳( GҒ|j?=xd:+Ef$^ nto᮲R,Gthh,_}}zmX"ֱYdts[\(diuAa"*uWU%TsW<T}Cl 0?yI-h14 ZxCuپJ pw:stCSLMb9v.|&zF6`s:2b}%|x,ӊ] 8'Pm~# nl9f~_iOvwbvd,@}7U_:~m-`N]oϵ@g*{ kg [Oz 䛮? | T60j$S"#84٩Ab8/4]!;0+ ۉ?>!d wA TkȰ̎2gNP#Fc} uYR~8>ЍRfsЭLq Lra$ve@^~pBһC}VPȔ'}S!_K*L/mďg ܗ<5=gOo]"WH'BAInll :[;N7; Kasz:PUBIT(Qi `$9edQ[‚@E0vaZ#:MɭI4F+!NyZr/F g5J::s HׂC) U~\+v9S[xg)F?SMLX^r<;G_sRɰynˊuqݴ7E RdQ+yKC~9:G^Zl?!,ŕ?fGe3ӁXyi+yz57L8 dx5Ho`QPQuDR7DCSIT#Zm%`L?0pץeHnN^aVZk x ^mЇ˺iB#S J=O۠}zyNBՑlǤHm3Jr Lv=?[Ÿ+L).A-zN|irMx7]5i49MYwakB$=M#BBýM}ДWC+s-J\+6B-^[.j[ljzx@xx@ լlƓ-ϸW6뿼;J*qhllffO-ߪJT+YG/b@tH?!q,!U ˉ{:-?&Ejʎ5CQ'!uyZfOa+L( TV4W%zmjڄ ySVϯSβ jRJaP;8L%̍o,k 8<<;B熁c2)'x *5T$Q=ϮۃLRšG>9KKQ&C*+ j 177<( \)riv"ŊU~ Vqby\$p&'T !Ǭˎ(w8PFug9vo2!d_v'Ԕ\Yq˜Ny';WYm0Ť\kL=ߌ\dѮU ]B*8?ԒTJQQz[NMT4ǒKmUTA -mj|_xM [&+f$ ]Zb "9O'5eޓr,o1^RE%.L;JvSbE;C<7v7fzߋnr҈t S +T@lGr V=W.mjng\Gb Wq@Sf+&I 8h,ꩌ#&0;0DŽ6Ԛ9T:O"Lޚ[a <"a}7a洯A7(N&j6vRFSqAgrj9sv1*j1b*p{-*cN(*@szpfuF?pia|E9\obpl[ 3]Z$Y"q7ifD+vQx.d?˴xZ g'|p3;/L "_$HӬsPI_|9fJDԞ.S~݄%`TE sz+16EX_կV+TMA'"i_ >EU<7k[0!eXP* gU7QGJ~(Q"Lo<9b>3I}s¿# ?? 90)hᆟ\n^O#ʻCnCމaFL E΄\N.sۚwhеt$E)l9h8saITp %MJ|C#ibb_gYZPK!} mtd-user.hnu[PK!/XDD nftl-user.hnu[PK!O %%  mtd-abi.hnu[PK!a E E 3ubi-user.hnu[PK! ll yinftl-user.hnu[PK!i